首页 > 解决方案 > Python中的嵌套积分

问题描述

我有一个一M维积分,其中外部限制x_M[0, y],下一个限制x_{M-1}[0, max(x_M, y-x_M)],....并且内部积分是x_1限制[0, max(x_2, y-x_M-...-x_2)]

函数/被积函数是

(K!/(K-M)!)*(1/(x_1+1)^2)*....*(1/(x_{M-1}+1)^2)*(1/(x_M+1)^{K-M+2})

其中KM是整数,使得K >= M >= 1K!=K*(K-1)*...*2*1K阶乘。

如何使用scipy.integrate.nquad在 Python 中执行此操作?我在这里遇到了类似的问题,但不知道如何将那里的代码扩展到我的情况。

积分的 LaTeX 版本: 参见 LaTeX 版本的积分

我的尝试(但代码不起作用。它没有给出 0 到 1 之间的结果)

K=4
M=2
du = 0.01
#For m=M
def F(u):
      return 1/(1+u)**(K-M+2)
#For m=1,2,...,M-1
def f(u):
     return 1/((1+u))**2

#Recursive function to evaluate the integral
def G(h, m, prev_lim):
    #print(f'h is {h}, and k is {k}')
    if m == M:
        res = F(h)
    else:
        res =  0
        u = prev_lim
        while u < h:
            res += G(h-u, m+1, u)*f(u)*du
            u += du
    return (math.factorial(K)/math.factorial(K-M))*res

print(G(2, 1, 0))

标签: pythonpython-3.xnumerical-integration

解决方案


推荐阅读