首页/文章/ 详情

数值积分|中点法则(Midpoint Rule)

7月前浏览2427

黎曼(Riemann)对定积分的定义是:积分区间划分为无数子区间,子区间内任意一点的函数值乘以子区间的长度得到一个矩形面积,然后将这些矩形面积累加起来可以得到积分值。中点法则(Midpoint Rule)是取子区间的中点的函数值作为矩形的高,如图所示

对于定积分    ,将积分区间    划分成4个等长子区间,每个子区间中点的函数值为    .可以得到定积分的近似值为:

 

如果划分为8个子区间,可得到

 

精确值是0.69314781...  子区间划分越多,误差就越小。

为了配合编程实现,可以通过将子区间的数量增加三倍来设计算法,而不是前面的辛普森,龙贝格公式增加两倍子区间。如图所示,空心圆圈表示必须计算的新值,而实心圆圈表示前一个迭代步计算的值。

 
 
 

可得到递推式:

 
 

[算例]用中点法则求    











































import math

### Midpoint ruler求积分### y = 4/( 1+x^2 )

def Func(x):    return 4/( 1+pow(x,2) )        def MidPointIntegrate(Func, a, b, eps = 1e-6):    kmax = 5000   # 最大迭代步数                                                          f1p6 = 1./6.    f5p6 = 5./6.        h = b-a    n = 1        m0 = h * Func(a+0.5*h)        for k in range(1,kmax+1):        sumf = 0        for i in range(1,n+1):            sumf += Func(a+(i-f5p6)*h) + Func(a+(i-f1p6)*h)                    m = (m0 + h*sumf)/3        if (math.fabs(m - m0) <= eps * math.fabs(m)): break                h /= 3        n *= 3                m0 = m            if (k >= kmax): print("已经达到最大迭代步数!")                                                      return m        S = MidPointIntegrate(Func, 0, 1, eps = 1e-6)print(S)

结果为




来源:数值分析与有限元编程
UM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-04-02
最近编辑:7月前
太白金星
本科 慢慢来
获赞 5粉丝 13文章 325课程 0
点赞
收藏
作者推荐

通过案例学Python之if

if结构允许程序做出决定并通过该程序更改路线。[案例] 编写一个程序,从图形的边数确定图形名称。读入用户的边数,然后输出名称作为有意义的信息 。程序应支持3到5(包括5)之间的任意形状, 如果输入的边数超出此范围那么程序应显示适当的错误消息。代码:nsides = int(input(&quot;Enter the number of sides: &quot;))name = &quot; &quot;# 超出了支持范围name将保持为空,从而导致错误消息,稍后将在程序中显示。if nsides == 3: name = &quot;triangle&quot;elif nsides == 4: name = &quot;quadrilateral&quot;elif nsides == 5: name = &quot;pentagon&quot; if name == &quot;&quot;: print(&quot;That number of sides is not supported by this program.&quot;)else: print(&quot;That’s a&quot;, name) 学习编程是个长期的过程,网上那些快速成功的案例并不是常态,它给我们呈现的只是结果,而不是那之前漫长而乏味的过程。谁都会有感到枯燥的时候,一个问题久攻不下难免的,问题是你能否换其他事情平静之后再回过头来继续你之前枯燥的事情,如果还觉得枯燥那可能是你真的就不喜欢,如果可以继续那就继续!来源:数值分析与有限元编程

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈