【发布时间】:2014-10-07 00:50:15
【问题描述】:
有人可以解释我在使用 3 个不同的例程和 2 个不同的指数表示形式集成 Chebyshev weight function 时观察到的以下行为吗?在每种情况下,预期的答案都是 Pi:
from scipy.integrate import quadrature, quad, fixed_quad
print fixed_quad(lambda x: 1/(1 - x**2)**(1/2), -1, 1)
print fixed_quad(lambda x: 1/(1 - x**2)**(0.5), -1, 1)
print quadrature(lambda x: 1/(1 - x**2)**(1/2), -1, 1)
print quadrature(lambda x: 1/(1 - x**2)**(0.5), -1, 1)
print quad(lambda x: 1/(1 - x**2)**(1/2), -1, 1)
print quad(lambda x: 1/(1 - x**2)**(0.5), -1, 1)
给了
(2.0000000000000009, None)
(2.8254100794589787, None)
(1.9999999999999996, 4.4408920985006262e-16)
/usr/lib/python2.7/dist-packages/scipy/integrate/quadrature.py:168: AccuracyWarning: maxiter (50) exceeded. Latest difference = 6.965869e-04
AccuracyWarning)
(3.107110439388189, 0.00069658693569163432)
(2.0, 2.220446049250313e-14)
(3.141592653589564, 6.200200353134733e-10)
首先,可以看出,答案取决于指数中给出的是 1/2 还是 0.5:为什么会这样?
其次,结果取决于选择的例程;有人可以解释为什么 FORTRAN 的 QUADPACK 得到正确的答案,但高斯求积完全错过了结果吗?
注意:here 解决了类似的问题,但没有解决上述两个具体问题。
【问题讨论】:
标签: python scipy integration numerical-methods