scipy Python中与端点奇点的数值双重积分给出了不正确的答案

计算科学 正交 scipy 数学
2021-12-04 23:11:41

我正在尝试在 Python 中集成以下功能,

00exyB(x,y)dxdy,

在哪里B(x,y)是 beta 函数 -B(x,y)=01ax1(1a)y1da.

由于上面的函数不能直接积分scipy.integrate,所以我改变了变量,xex,yey拥有

01011B(log(x),log(y))dxdy.

scipy.integrate.dblquad(lambda y,x: 1/ scipy.special.beta(-math.log(x),-math.log(y) ), 0, 1, lambda x: 0, lambda x: 1)

返回6.81有错误的顺序106. 但是在 Mathematica 中集成上述函数(有和没有变量的变化)(使用NIntegrate)返回2.0505. 当python返回答案时,我不明白答案的巨大差异106准确性。发生了什么?有没有更好的方法将它集成到 python 中?作为用 python 编写的算法的一部分,我计划多次执行集成。

1B(log(x),log(y))看起来像这样

(0,0) 处的奇点

编辑

使用 Windows 10 和 Anaconda 的人可以重现我得到的结果吗?

我使用 Windows 10、Python 3.5.2 |Anaconda 4.3.0(64 位)、scipy 版本 0.18.1 得到了不正确的答案。我不确定 BLAS 链接。

我使用 Python 2.7.12,scipy 版本 0.18.1 在 Linux 中得到正确答案

0个回答
没有发现任何回复~