首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Scipy.quad解决问题

使用Scipy.quad解决问题
EN

Stack Overflow用户
提问于 2019-11-25 08:54:08
回答 1查看 34关注 0票数 0

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

如果积分的下限为零或正,则代码可以运行而不会出现任何问题。如果它是负的,代码会给出错误...

代码语言:javascript
复制
  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
代码语言:javascript
复制
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]))
EN

回答 1

Stack Overflow用户

发布于 2019-11-25 14:11:51

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59023934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档