我一直在尝试使用 SciPy 将 2x dx 从 3 积分到 4,但它返回了错误的值。
from scipy.integrate import quad
def g(x):
return (2*(x**2))/2
quad(g,3,4)
返回的结果应该是 7,但我得到的结果是 12.3333
您正在提供要积分的函数的反导数,但
scipy.integrate.quad()
期望函数本身。
换句话说,如果你想积分 2*x,那么你应该提供 2*x。
但是,由于您确实有反导数,因此根本不需要
quad()
。您可以在积分界限的开始和结束处评估您的反导数。当积分没有已知解析解时,quad()
函数最有用。
这里是如何求解此积分的示例,有或没有
quad()
。
from scipy.integrate import quad
def g(x):
return 2 * x
def g_integral(x):
return (2 * (x**2))/2
print("Integral via numeric integration", quad(g, 3, 4))
print("Integral via analytic solution", g_integral(4) - g_integral(3))