问题描述
现在我需要计算 f(x)(x-a)(y-c) 的积分,x 从 a 到 b,y 从 c 到 d。我检查了 scipy.integrate.nquad
的文档,我相信参数 weight=alg
和 wvar=(1,0)
应该可以工作。
这是我迄今为止尝试过的:
import numpy as np
from scipy import integrate
def f(x,y):
return -2 * y
t = 0.02
res,err = integrate.nquad(
f,[[0,t],[0,t]],opts=[{'weight': 'alg','wvar': (1,0)},{'weight': 'alg',0)}])
res1,err = integrate.quad(lambda x: 1,t,weight='alg',wvar=(1,0))
res2,err = integrate.quad(lambda y: -2 * y,0))
print(res)
print(res1*res2)
为了简单起见,我选择了 a=c=0,b=d=0.02 和 f(x,y)=-2y。
两个结果应该是一样的
$\int_0^t (\int_0^t(-2y)xy dx) dy=(\int_0^txdx)(\int_0^t(-2y^2)dy)=-\frac{1}{3 }t^5$
保持,但我得到了输出
-1.014820841542623e-06
-1.0666666666666665e-09
第二个是正确的。事实证明,函数 quad
的行为符合预期,而函数 nquad
则不然。所以我的问题是:如何将正确的参数传递给 nquad
?
任何帮助将不胜感激。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)