复合数值积分方法以及Python程序实现

举报
tsinghuazhuoqing 发表于 2021/12/27 00:24:08 2021/12/27
【摘要】 ■ 前言 在 Composite Numerical Integration 中给出了三种复合数值积分方法它们分别是: Newton-Cotes Formulas   01三种方...

■ 前言


Composite Numerical Integration 中给出了三种复合数值积分方法它们分别是:

Newton-Cotes Formulas

 

01三种方法的公式及其Python程序


1.复合梯形方法

假设 f ∈ C 2 [ a , b ] f \in C^2 \left[ {a,b} \right] fC2[a,b] h = ( b − a ) / n h = \left( {b - a} \right)/n h=(ba)/n x j = a + j ⋅ h x_j = a + j \cdot h xj=a+jh j = 0 , 1 , ⋯   , n j = 0,1, \cdots ,n j=0,1,,n

其中存在 μ ∈ ( a , b ) \mu \in \left( {a,b} \right) μ(a,b),使得上述积分的误差等于:
E = b − 2 12 h 2 f ′ ′ ( μ ) E = {{b - 2} \over {12}}h^2 f''\left( \mu \right) E=12b2h2f(μ)

Laplace数值逆运算的讨论 中给出了复合梯形方法的Python程序实现:

def trapz(f, a, b, N=50):
    x = linspace(a, b, N+1)
    y = f(x)
    y_right = y[1:]
    y_left = y[:-1]
    dx = (b-a) / N
    T = dx/2 * sum(y_right + y_left)
    return T

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

2.Simpson1/3法则

对于积分函数的要求以及对区间的划分与前面复合梯形方法是一样的,只是对于区间划分的数量 n n n要求必须是偶数。

积分误差与区间长度 h h h之间是五次方的关系。

def simpson(f, a, b, N=50):
    x = linspace(a, b, N+1, endpoint=True)
    y = f(x)
    y4 = y[1:-1:2]
    y2 = y[2:-2:2]

    dx = (b-a) / N
    T = dx/3*(sum(y2)*2 + sum(y4)*4 + y[0] + y[-1])
    return T

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

3.Simpson3/8法则

对于区间的划分与前面相同,只是对区间划分的数量 n n n为3的整数倍数。那么:

def simpson3_8(f, a, b, N=50):
    x = linspace(a, b, N+1, endpoint=True)
    y = f(x)
    y0 = y[0:-1:3]
    y3 = y[3::3]
    y1 = y[1:-1:3]
    y2 = y[2:-1:3]

    dx = (b-a) / N
    T = dx*3/8*(sum(y0) + sum(y1)*3 + sum(y2)*3 + sum(y3))
    return T

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

4.对比实验

N=6时,所得到的结果如下:

printf(simpson1_3(sin, 0, pi, 6))
printf(simpson3_8(sin, 0, pi, 6))
printf(trapz(sin, 0, pi/2, 6)

  
 
  • 1
  • 2
  • 3



文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuoqing.blog.csdn.net/article/details/107351185

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。