复化梯形公式和复化Simpson公式的python实现

复化求积的思想:
       将区间[a,b]分作n等分,步长h = (b-a) / n,等分点x(k) = a + kh,k = 0,1,2,3,…,n,先在每个子区间[x(k),x(k+1)]上采用低阶的数值求积公式求得近似积分值I(k),再将它们累加并以和作为积分I的近似值。

用复化梯形公式和复化Simpson公式计算:
I = ∫ 0 π e x c o s x d x   I = \int_0^\pi e^xcosxdx\ I=0πexcosxdx 
精确值是:I = -12.0703463164

(1)复化梯形公式:

在这里插入图片描述

python代码:

import math

a, b = 0, math.pi # 区间端点
I = -12.0703463164 # 精确解

F_a = math.e ** a * math.cos(a)
F_b = math.e ** math.pi * math.cos(b)
ls = [1] # 存放E_n

for i in range(1,10):
    n = 2 ** i
    h = (b-a) / n

    m = 0
    # 计算复化求积公式中的和式
    for j in range(1,n):
        m += math.e ** (j*b/n) * math.cos(j*b/n)

    T_n = h / 2 * (F_a + 2*m + F_b)
    E_n = I - T_n

    ls.append(str(E_n))
    print('Tn={:.10f}  En={:.2E}  En/E2n={:.2f}'.format(T_n, E_n, float(ls[i-1])/float(ls[i])), '\t','n={}'.format(n))

运行结果:
在这里插入图片描述

结论:
       当n加倍(步长h减半)时,误差E(n)按因子4递减,误差确是O(h^2);当n增大时,复化梯形公式的误差越来越小,近似解也越来越收敛于精确解;但是,当n相对较小时,求解效果并不是太好,误差相对较大。

(2)复化Simpson公式:

在这里插入图片描述
python代码:

import math

a, b = 0, math.pi # 区间端点
I = -12.0703463164 # 精确解

F_a = math.e ** a * math.cos(a)
F_b = math.e ** math.pi * math.cos(b)
ls = [-1] # 存放E_n

for i in range(1,9):
    n = 2 ** i
    h = (b-a) / n

    p = q = 0
    # 计算复化求积公式中的和式
    for j in range(1, 2*n, 2):
        p += math.e ** (j*b/(2*n)) * math.cos(j*b/(2*n))
    for k in range(2, 2*n, 2):
        q += math.e ** (k*b/(2*n)) * math.cos(k*b/(2*n))

    S_n = h / 6 * (F_a + 4*p + 2*q + F_b)
    E_n = I - S_n

    ls.append(str(E_n))
    print('Sn={:.10f}  En={:.2E}  En/E2n={:.2f}'.format(S_n, E_n, float(ls[i-1])/float(ls[i])), '\t','n={}'.format(n))

运行结果:
在这里插入图片描述

结论:
       当n加倍(步长h减半)时,误差E(n)按因子16递减,误差确是O(h^4);当n增大时,复化Simpson公式的误差越来越小,近似解也越来越收敛于精确解;复化Simpson公式总体上近似效果较好,要比复化梯形公式优越的多。

如有错误或者不足之处,欢迎大家留言指正!

  • 11
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

☆下山☆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值