我必须在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)
答案 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