当前位置:文档之家› 数值积分-计算方法

数值积分-计算方法


(k=0,1,…,n) 作代换x=a+th带入上式,变为: 其中:
(k=0,1,…,n) (1-1) 这个积分是有理多项式积分,它与被积函数f(x)和区间[a,b]无关。
只要确定n就能计算出系数
。 于是得到称为Newton—Cotes公式的求积公式: (1-2) 其中
称为Newton—Cotes系数。如表1所示。 表1 Newton—Cotes系数
§3.1计算n阶求积公式
若有m次代数精度,对(k=0,1,…)应有
而。
§3.2 Gauss求积公式的基本原理
更一般形式: (2-1) 为权函数,设>0,且在[a,b]上可积,构造n阶求积公式:
(2-2) 积分点使得(2-2)式达到2n+1次代数精度,则积分点称为Gauss 点,(2-2)式称为Gauss求积公式。
§2Newton—Cotes公式 §2.1Newton—Cotes公式的推导
当§1.1插值求积公式的插值节点为等距节点时,就得到Newton— Cotes公式。
将区间[a,b]n等分,,n+1个节点为 xk=a+kh (k=0,1,…,n)
在节点上对f(x)的Lagrange插值多项式是:
用Pn(x)代替f(x)构造求积公式: 记
y=(1-1/2*(sin(x)).^2).^(1/2); 在Matlab工作窗口中调用函数:
y2=gauss2('gaussf',0,pi/2) 运行结果为:
y2= 1.3508
第5章 结论
通过以上变成和计算,得到所求的两组积分:
应用Newton—Cotes积分公式所求的结果分别是 y1=1.5078,y2 = 1.3506,而应用Gauss-Legendre方法所求得的结果分别是y1=1.5705 和 y2= 1.3508。单从结果上看,我们也能看出,Newton—Cotes积分公式 和Gauss-Legendre积分公式在精度上的确存在着差异(两者n的取值不 同)。而结果上的差异来源很明显是插值积分在近似替代时产生的,结 合第1章理论依据的内容,Newton-Cotes积分公式的精度最高可达n+1 次,Gauss-Legendre积分公式的精度为2n+1次,由此可知,当n相同 时, Gauss -Legendre积分公式比Newton—Cotes积分公式具有更高的 代数精度。而就本题而言Gauss -Legendre积分公式具有5次代数精度, Newton—Cotes积分公式也具有5次代数精度。因此二者所求积分只存在 微小的差异,结果都比较准确。
§3.3 Gauss-Legendre求积公式
求积分,权数
=1, 其中(i=0,1,…,n)是n+1阶Legendre多项式的零点,求积系数
为:
(i=0,1,…,n)
具体Gauss-Legendre公式的插值节点和系数见表2(其中n为插值节
点个数, 为积分点, 为对应积分点的系数)。
表二Gauss-Legendre公式的插值节点和系数
§2.3经典Newton—Cotes公式
当n=4,5点公式称为经典Newton—Cotes公式
其中
(k=0,1,…,4),它具有5次代数精度。
§3 Gauss-Legendre求积公式
在积分区间[a,b]内对积分节点不作限制,不取等距,积分节点和 求积系数都作为待定未知量。通过适当选择节点和求积系数,能构造更 有效的高精度求积公式。
在积分区间[0,1]的积分,得到最终结果。最后将二者得到的结果进 行比较,得出关与
Newton—Cotes公式、Gauss-Legendre求积公式精确度的结论。
第4章 求解计算 §1Newton—Cotes公式求解的Matlab程序 §1.1方法1:
(1)在Matlab工作窗口中: fn=inline('2/(1+x.^2)'); y1=quad8('fn',0,1)
§2 Gauss-Legendre求积公式求解的Matlab程序 §2.1Gauss-Legendre方法的一些准备
Gauss-Legendre:
具有2n+1次代数精度。
当n=2时,3阶Gauss-Legendre公式在[-1,1]上有三个零点:
x0=0.7745967 x1=0
x2=-0.7745967
n 1 1/2 1/2 2 1/6 4/6 1/6 3 1/8 3/8 3/8 1/8 4 7/90 32/90 12/90 32/90 7/90 5 19/288 25/96 25/144 25/144 25/90 19/288 6 41/840 9/35 9/280 34/105 9/280 9/35 41/840
§2.2Newton—Cotes公式误差和稳定性
在积分公式中用插值多项式Pn(x)代替f(x)的插值误差是 因此,Newton—Cotes公式的截断误差是
(1-3) 讨论舍入误差对计算结果产生的影响,设(1-2)式近似计算 其中计算函数值f(xn)有误差值
(k=0,1,2, …,n)。在(1-2)式中令
在Matlab工作窗口中调用函数: y1=quad8('fn',0,1)
运行结果为 y1=1.5078
(2)建立M文件: function f=fn(x) f=(1-1/2*(sin(x)).^2).^(1/2)
在Matlab工作窗口中调用函数: y2=quad8('fn',0,pi/2)
运行结果为: y2 = 1.3506
数值积分
第1章 理论依据
逼近论——构造一个简单函数p(x)近似表示f(x),然后对 p(x)求积 分得到 f(x)的积分的近似值。基于插值原理,推导出数值积分的基本 公式。
§1插值求积公式
为了用数值方法求,对被积函数f(x)在给定的n+1个节点上作Lagrange 插值,用插值函数Pn(x)代替f(x),就可用I(Pn(x))构造求积公式, 近似地计算定积分I(f(x))。
运行结果为: y1=1.5078
(2)在Matlab工作窗口中: fn=inline('(1-1/2*(sin(x)).^2).^(1/2)'); y2=quad8('fn',0,pi/2)
运行结果为: y2 = 1.3506
§1.2方法2:
(1)建立M文件: function f=fn(x) f=2./(1+x.^2)
即为高斯点发,对应的Gauss求积系数为:
对于任意区间(有界区间)[a,b],将转换到。再用Gauss-Legendre 求积公式:
进行积分求解
§2.2 n=2的Gauss-Legendre方法
(1)先建立M文件: function g=gauss2(fun,a,b) h=(b-a)/2; c=(a+b)/2; x=[h*(-0.7745967)+c,c,h*0.7745967+c]; g=h*(0.55555556*(gaussf(x(1))+gaussf(x(3))) +0.88888889*gaussf(x(2))); function y=gaussf(x); y=2./(1+x.^2);
设计算
无误差,舍入误差也忽略,则,由(1-2)式计算时
引式的误差为 如果 皆为正,并设
,则
,故
有界,即
引起的误差受控制,不超过倍。保证了数值计算的稳定性。 但当n8时,
将出现负数,这时,数值计算的稳定性不能保证,所以节点超过8时 来自ewton—Cotes公式不能用。
当n为偶数时,Newton—Cotes积分公式具有n+1次代数精度。
对一般区间[a,b]上的积分,通过代换:
将转换到。再用Gauss-Legendre求积公式: 进行积分求解
第2章 问题描述
用Newton—Cotes公式、Gauss-Legendre求下列积公式计算积分,并 比较结果:
第3章 问题分析
题目给出的是用Newton—Cotes公式、Gauss-Legendre求积分的问 题,为了实现题目要求,应编写Matlab程序,实现计算被积函数
在Matlab工作窗口中调用函数: y1=gauss2('gaussf',0,1)
运行结果为: y1=1.5705
(2)先建立M文件: function g=gauss2(fun,a,b) h=(b-a)/2; c=(a+b)/2; x=[h*(-0.7745967)+c,c,h*0.7745967+c]; g=h*(0.55555556*(gaussf(x(1))+gaussf(x(3))) +0.88888889*gaussf(x(2))); function y=gaussf(x);
相关主题