由高等数学中的牛顿-莱布尼茨(Newton-Leibniz)公式,若函数
式中,
中点公式
对函数

积分的几何意义为,函数与区间两端以及
梯形公式
通过节点

同理,梯形公式的几何意义为,用
辛普森公式
中点公式是利用区间中点的值进行零次多项式插值,梯形公式是利用区间两端的值进行一次多项式插值,而辛普森公式继续延续这一思想,利用区间两端和区间中点的值,即
小结
一般地,若已知函数
的式子为求积公式,其中
复合型公式
复合型积分的主要思想在于将求积区间分成若干份,在每一个小区间上分别应用如上一种求积公式,再将所有区间的计算值相加即得原积分的近似值,即
复合中点公式
将中点公式代入复合积分公式得
首先定义
import math
def Fx(x):
return math.sin(x)
复合中点积分公式,
首先得出步长即每一段的区间长度
def rectangle(a, b, n):
h = (b - a) / n
s = 0
x0 = a + h / 2
for i in range(0, n):
s += h * Fx(x0)
x0 += h
return s
复合梯形公式
将梯形公式代入复合积分公式得
循环求和部分第一项为
注:可以理解为,相邻两个梯形公用的边被计算了两次,如果分成
def trapezoid(a, b, n):
h = (b - a) / n
s = 0
x0 = a + h
for i in range(0, n - 1):
s += Fx(x0)
x0 += h
s *= h
s = s + (Fx(a) * (h / 2))
s = s + (Fx(b) * (h / 2))
return s
复合辛普森公式
将辛普森公式代入复合积分公式得
其中两项求和项的第一项分别为
def simpson(a, b, n):
h = (b - a) / n
x0 = a + (3 / 2) * h
x1 = a + h
s0 = 0
s1 = 0
for i in range(0, n - 1):
s0 += Fx(x0)
s1 += Fx(x1)
x0 += h
x1 += h
s0 += Fx(a + h / 2)
s0 *= (2 / 3) * h
s1 *= (1 / 3) * h
s = s0 + s1 + ((h / 6) * (Fx(a) + Fx(b)))
return s