在
数值积分| 辛普森公式
提到,辛普森积分最简单的形式是
也就是说至少要三个积分点,两个积分子区间。所以,自适应辛普森积分公式要从S1起步,即
将式与自适应梯形公式
比较,可得
由此可以得到递推式
若以表示前后两次计算结果的相对误差,即
若满足要求,则停止计算。python代码
import math###自适应辛普森公式求积分### y = 1/( 1+x^2 )def Func(x): return 1/( 1+pow(x,2) ) def AdaptiveSimpsonCtrl(Func, a, b, eps = 1e-6): kmax = 9000 #最大迭代步数 h = b-a # 积分区间 n = 1 t0 = 0.5*h*(Func(a) + Func(b)) for k in range(1,kmax+1): sumf = 0 for i in range(1,n+1): sumf += Func(a+(i-0.5)*h) t = 0.5