使用Scipy.quad的探针

时间:2019-11-25 00:54:08

标签: scipy quad

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

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

  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 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]))

1 个答案:

答案 0 :(得分:1)

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