0

我一直在尝试使用需要在 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]))
4

1 回答 1

1

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

于 2019-11-25T06:11:51.107 回答