如何使用具有特定权重函数的`nquad`?

问题描述

现在我需要计算 f(x)(x-a)(y-c) 的积分,x 从 a 到 b,y 从 c 到 d。我检查了 scipy.integrate.nquad 的文档,我相信参数 weight=algwvar=(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 (将#修改为@)