实验要求
a.
验证龙贝格公式的积分效果
b.
比较相同情况下龙贝格公式和复合梯形公式迭代次数的不同
算法介绍
从梯形法开始
,
对其进行加速,得到龙贝格算法,根据梯形算法得到如下递推公式:
其中外推加速公式可以简化为
:
根据上述的推导公式,我们可以看出,
T1
为梯形公式,对于次数不高于
1
的多项式准确;
S1
是辛普
森公式,对于次数不高于
3
的多项式准确,
C1
是柯特斯公式,它对于次数不高于
5
的多项式准确,每一个
公式均由前一公式的适当线性组合得到,精确度都提高
2
次。因此可以验证,由柯特斯公式
C1
构造得到
的龙贝格公式
R1
,对次数不高于
7
次的多项式准确。并且龙贝格公式计算积分占用内存少,精度高。
算法步骤
1.
计算积分区间两端点函数值
f(a),f(b),
计算
T1;
2.
将区间
[a,b]
分半,计算
f((a+b)/2), T2,S1;
3.
再将区间分半,算出
f(a+(b-a)/2)
和
f(a+3(b-a)/4),
由此计算
T4
,
S2
,
C1;
4.
再将区间分半,计算
T8
,
S4
,
C2
,进而计算
R1;
5.
再将区间分半,重复第四步工作,计算
T16
,
S8
,
C4
,
R2
,反复进行这一过程,可以计算
R1
,
R2
,
R4
,
... ,
直到最终两个
R
之差不超过给定精度即可。
其计算过程是将区间逐次分半,加速得到积分近似值,因此称为逐次分半加速法
算法实现
实现算法所用语言
:Python
龙贝格公式加速前代码
:
龙贝格公式通过外推加速公式加速后代码
:
实验结果
积分函数为
:1/x
龙贝格公式加速前所需要二分次数:
龙贝格公式加速后所需要二分次数
:
积分函数为
:e^x
龙贝格公式加速前所需要二分次数
:
龙贝格公式加速后所需要二分次数
: