我一直在尝试使用Python代码来处理我的项目,这需要集成在sigma中。我得到了以下错误,尽管我尝试了几种方法,但我无法解决它。下面你可以找到我的代码的一个较短的版本,用于错误复制。
如果积分的下限为零或正,则代码可以运行而不会出现任何问题。如果它是负的,代码会给出错误...
File "C:\Users\AppData\Local\Programs\Python\Python37\lib\site-packages\scipy\integrate\quadpack.py", line 341, in quad
points)
File "C:\Users\AppData\Local\Programs\Python\Python37\lib\site-packages\scipy\integrate\quadpack.py", line 448, in _quad
return _quadpack._qagse(func,a,b,args,full_output,epsabs,epsrel,limit)
TypeError: must be real number, not mpcimport 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]))发布于 2019-11-25 14:11:51
Quad只处理浮点数,不理解mpmath对象。删除mpmath并直接使用numpy/scipy函数,或者在计算结束时将mpmath表达式转换为浮点数。
https://stackoverflow.com/questions/59023934
复制相似问题