龙贝格公式的实现

这篇博客探讨了龙贝格公式在数值积分中的应用,对比了加速前后所需二分次数。实验展示了对于函数1/x和e^x,龙贝格公式加速后的迭代次数减少,证明了其在精度和内存使用上的优势。文章还提供了Python实现的代码示例,进一步阐述了算法的逐次分半加速法。
摘要由CSDN通过智能技术生成
实验要求
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
龙贝格公式加速前所需要二分次数 :

  

龙贝格公式加速后所需要二分次数 :
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值