对于数值方法类,我需要编写一个程序来评估Simpson复合规则的定积分.我已经走到这一步了(见下文),但我的回答并不正确.我用f(x)= x测试程序,积分在0到1之间,结果应为0.5.我得到0.78746 …等
我知道Scipy有一个Simpson规则,但我真的需要自己编写.
我怀疑这两个循环有问题.之前我试过“for i in range(1,n,2)”和“for i in range(2,n-1,2)”,这给了我0.41668333的结果……等等.
我也试过“x = h”,我尝试了“x = i * h”.第一个给了我0.3954,第二个选项给了我7.9218.
# Write a program to evaluate a definite integral using Simpson's rule with
# n subdivisions
from math import *
from pylab import *
def simpson(f, a, b, n):
h=(b-a)/n
k=0.0
x=a
for i in range(1,n/2):
x += 2*h
k += 4*f(x)
for i in range(2,(n/2)-1):
x += 2*h
k += 2*f(x)
return (h/3)*(f(a)+f(b)+k)
def function(x): return x
print simpson(function, 0.0, 1.0, 100)