Python中的Trapezoid和Simpson规则?

时间:2014-10-22 04:23:15

标签: python integration calculus

我必须在python中为函数e^((-x)^2)编写trapezoid和simpson规则。

这是我到目前为止所得到的。它给出的答案是8218.7167913,但根据我的老师的答案是1.77251356....

我哪里出错了?

from numpy import *

def f(x):
    return e**((-x)**2)

def trapezoid(f, a, b, n):
    deltax = float(b - a)/(n)
    h = float(b - a) / n
    s = 0.0
    s += f(a)/2.0
    for i in range(1, n):
        s += f(a + i*h)
    s += f(b)/2.0
    return s * h

print trapezoid(f, -3, 3, 6)

1 个答案:

答案 0 :(得分:2)

查看您的功能:e^((-x)^2)。负号并没有做任何事情,因为你要立即将它甩掉。这看起来很奇怪。更有可能的是你应该整合e^(-x^2)。我们来测试一下:

>>> trapezoid(lambda x: e**((-x)**2), -3, 3, 1000)
2889.3819494560144
>>> trapezoid(lambda x: e**(-x**2), -3, 3, 1000)
1.7724146920763713