使用 scipy dblquad 求解二重积分

问题描述

我正在尝试解决这个复杂函数的二重积分。该函数包含 3 个用 sympy.symbols 定义的符号变量。我的目标是仅针对两个变量对函数进行积分。 sym.integrate 运行 2 小时,没有结果显示。我尝试使用 scipy.integrate.dblquad 进行数值积分。但是我遇到了问题,我怀疑是由于第三个符号变量造成的。有没有办法做到这一点。

问题总结。 sym.symbols('x y z') My_function(x,y,z) 对 x 和 y 积分 My_function(都从 0 到 inf,即定积分)。

提前致谢


h,t,w,r,q = sym.symbols('h t  w r q')  # Define symbols

wn = 2.0
alpha = 1.76
beta = 1.59
a0 = 0.7
a1 = 0.282
a2 = 0.167
b0 = 0.07
b1 = 0.3449
b2 = -0.2073
psi = 0.05

F_H = 1.0 - sym.exp(-(h / alpha) ** beta)
mu_h = a0 + a1 * h ** a2
sig_h = b0 + b1 * sym.exp(b2 * h)
F_TIH = (1 / 2) * (1 + sym.erf((sym.log(t) - mu_h) / (sig_h * sym.sqrt(2))))

f_h = sym.diff(F_H,h)
f_tzIhs = sym.diff(F_TIH,t)
f_S = f_h * f_tzIhs

H = (1.0 - (w / wn) ** 2.0 + 1.0j * 2.0 * psi * w / wn) ** (-1.0)
S_eta_h_t = h ** 2.0 * t / (8.0 * pi ** 2.0) * (w * t / (2.0 * pi)) ** (-5.0) * sym.exp(-1.0 / pi * (w * t / (2.0 * pi)) ** (-4.0))

S_RIS_hu_tu = abs(H) ** 2.0 * S_eta_h_t

m0_s = sym.integrate((w ** 0 * S_RIS_hu_tu),(w,np.inf))
m0_s.doit()

m2_s = sym.integrate((w ** 2 * S_RIS_hu_tu),np.inf))
m2_s.doit()

v_rIs = 1 / (2 * pi) * sym.sqrt(m2_s / m0_s) * sym.exp(-r ** 2 / (2 * m0_s))

fun = v_rIs * f_S

# The integral I am trying to solve is a function of h,t and r. 
integ_ht = sym.integrate(fun,(h,np.inf),(t,np.inf))

















解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)