Probelm with Scipy.quad



我一直在尝试使用需要集成到sigma中的Python代码来处理我们的项目。 我收到以下错误,尽管尝试了几种方法,但我无法解决它。您可以在下面找到我的代码的较短版本,用于错误重复。

如果积分的下限为零或正数,则代码可以毫无问题地运行。如果它是负数,代码会给出错误...

File "C:UsersAppDataLocalProgramsPythonPython37libsite-packagesscipyintegratequadpack.py", line 341, in quad
points)
File "C:UsersAppDataLocalProgramsPythonPython37libsite-packagesscipyintegratequadpack.py", line 448, in _quad
return _quadpack._qagse(func,a,b,args,full_output,epsabs,epsrel,limit)
TypeError: must be real number, not mpc
import numpy as np
from scipy.integrate import quad
from mpmath import besselk, besseli, nsum, inf, exp, log, cos, mp
mp.dps = 3; mp.pretty = True
tt = (np.logspace(0.0001, 10, num=10)).round(2)
lenght = len(tt)
k0 = lambda u: besselk(0,u)
f = lambda u: u*exp(-2)
Zwn = lambda n: 0.5*(cos(n)*cos(2*n))
Rn = lambda u, n, xD: (1/u)*k0(xD*((f(u) + (n)**2)**0.5))
Lap_Func = lambda u: nsum(lambda n: ((quad(lambda xD: Zwn(n)*Rn(u, n, xD), -10, 10))[0]), [1, 100])
print(Lap_Func((log(2))*1/tt[3]))

Quad 只处理浮点数,不理解 mpmath 对象。要么删除 mpmath 并直接使用 numpy/scipy 函数,要么在计算结束时将 mpmath 表达式转换为浮点数。

相关内容

  • 没有找到相关文章

最新更新