多种数值积分的分析比较Gauss抛物线龙贝格Word格式文档下载.docx
《多种数值积分的分析比较Gauss抛物线龙贝格Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《多种数值积分的分析比较Gauss抛物线龙贝格Word格式文档下载.docx(10页珍藏版)》请在冰豆网上搜索。
而复化抛物线公式,即在给定区间上,分成多个小份,并分别用抛物线公式求积。
所求得的数值积分余项如下:
1.2抛物线求积公式的matlab程序
具体的程序代码如下:
function
s=simpr1(f,a,b,M)
h=(b-a)/(2*M);
s1=0;
s2=0;
for
k=1:
M
x=a+h*(2*k-1);
s1=s1+feval(f,x);
end
(M-1)
x=a+h*2*k;
s2=s2+feval(f,x);
s=h*(feval(f,a)+feval(f,b)+4*s1+2*s2)/3;
说明:
f代表的是原函数,该程序为抛物线复化积分公式。
当M值为1时,则为简化的抛物线求积公式。
最后s即为用matlab语言所表述的抛物线求积公式。
1.3复化抛物线求积公式的应用
在应用部分,所计算的积分为1/(1+x^2)。
将函数与节点,积分区间输入函数后,得出的结果如以下图表所示。
图1.3.1复化抛物线求积(所取节点为5-50)
Fig.1.3.1Compoundparabolicquadrature(fromthenodefor5-50)
图1.3.2积分误差(节点数为0-50)
Fig.1.3.2quadratureerror(fromthenodefor0-50)
节点数
5
10
15
20
25
30
35
40
45
50
误差
0.002065
9.91E-09
1.55E-10
1.36E-11
2.42E-12
6.35E-13
2.13E-13
8.44E-14
3.77E-14
1.87E-14
1.01E-14
表1.3.1每隔5节点的误差
Table1.3.1every5nodeerror
分析总结:
复化抛物线积分对给定的函数有较好的适用性,在节点数为3时,误差就处于E-3数量级。
这主要与函数的特性与选择区间有关,所求得积分为1/4圆,故抛物线较能吻合特征。
从图像我们可以观察到:
随着节点数的增加,积分的准确性得到增强,且增加速度较快。
在50个节点的情况下,误差达到了E-14的数量级。
从误差观察得出,误差减少到下一数量级的节点间隔数增大。
第二章Gauss-Laguerre求积公式与应用
2.1Gauss-Laguerre的算法
Gauss-Laguerre求积公式是Gauss求积公式的一种建立在无穷区间上的特殊求积公式。
Laguerre多项式:
在关于权函数为的正交多项式
(1)。
故在求积分时,我们主要使用的求积公式为:
(2)
其中,(k=1,…,n)是的n个零点,求积系数k=1,2,…,n(3)
2.2Gauss-Laguerre公式的matlab程序
程序代码如下:
symsxf;
symsl;
n=20;
l(n)=exp(x)*diff(x^(n)*exp(-x),x,n);
[xs]=solve([char(l(n)),'
=0'
],x);
ll=diff(l(n),1);
fori=1:
na(i)=(factorial(n))^2/(double(xs(i))*(subs(ll,x,double(xs(i)))^2));
end
s=double(a)*feval(f1,double(xs));
程序分析:
n代表Laguerre的项数,f为函数。
该程序先求出相应的Laguerre多项式后,通过solve解出节点,再用节点算出系数,代入求积公式。
2.3Gauss-Laguerre求积公式的应用
所选择的积分所在的区间为[0inf],f(x)=√x,取不同的项数,进行求积,将所得的结果整理如下。
1
2
3
0.92388
0.90644
0.89928
0.893296
0.889062
0.887841
28
29
0.887299
0.887005
0.886962
0.886923
0.886887
表2.3.1积分数据表
Table.2.3.1thedatatable
图2.2.2Gauss-Laguerre公式积分曲线
Figure.2.2.2Gauss-Laguerrequadrature
分析总结:
Gauss-Laguerre公式的适用对象为在特定区间,即[0,inf]区间上的权函数乘以f(x)形式的特定积分。
从图像可以观察得到,Gauss-Laguerre公式随着节点数的增大,呈双曲线的形状。
其积分精度逐渐提高,但收敛较慢。
而用其它形式的积分来处理无限区间的积分,积分的计算量更大,精度也比较差。
所以Gauss-Laguerre公式对特定积分的效果较好,但要达到一定精度,计算节点数需要到一个较大值。
第三章龙贝格算法与算法优化
3.1龙贝格算法与程序
龙贝格算法从简单的梯形序列开始逐步进行线性加速,具有占用存少,精度高的优点。
而梯形或抛物线的积分算法的区间并不是线性增加的,每次计算的效率会越来越低。
故龙贝格算法适用于给定精度下的较为高效的求积。
龙贝格的matlab程序如下:
fuctiont=Romberg(fun,a,b,e)
ifnargin<
4
e=1e-8;
i=1;
j=1;
h=b-a;
T(i,1)=h/2*(feval(fun,a)+feva1(fun,b));
T(i+1,1)=T(i,1)/2+sum(feval(fun,a+h/2:
h:
b-h/2+0.001*h))*h/2;
T(i+1,j+1)=4.^j.*T(i+1,j)/(4.^j-1)-T(i,j)/(4^j-1);
whileabs(T(i+1,i+1)-T(i,i))>
e
i=i+1;
h=h/2;
T(i+1,1)=T(i,1)/2+sum(feval(fun,a+h/2:
forj=1:
i;
T(i+1,j+1)=4^j*T(i+1,j)/(4^j-1)-T(i,j)/(4^j-1);
t=T(i+1,j+1);
3.2利用龙贝格算法优化求积
在之前的容中,利用抛物线复化公式计算了1./(1+x.^2),在区间[1,2]上的积分为pi/4,在不同的节点取值下,抛物线复化求积的误差精度不同。
如果要得到e-10的精度围,需要取的节点数为8。
而选用龙贝格算法能有效地减少计算步骤,提高效率。
选取精度为e-10~e-16,分别计算对应的复化求积公式和龙贝格法算法所需要运行的步骤。
选取函数为1./(1+x.^2),两种算法的结果如下:
精度
11
12
13
14
16
复化求积
8
24
51
72
龙贝格算法
7
9
表3.2.1计算次数与求积公式的关系
Table3.2.1Thenumbercalculation,andthequadratureformula
图3.2.2计算次数与求积公式的关系
Figure.3.2.2Thenumbercalculation,andthequadratureformula
从图像上,可以发现龙贝格的算法效率比抛物线的复化求积公式高,且随着精度要求的提高,抛物线的复化求积所取得等分点增加得越来越快。
而龙贝格算法的次数平滑增长,在较小的次数,就能达到极高的精度。
3.3龙贝格算法的应用
龙贝格算法对限定区间的求积较为适用。
在给定数据精度的情况下,对f(x)=sqrt(x)在[1,9]的区间上积分。
所要求的精度为10^-5.将代数值输入函数中,计算所得到的值为17.3333,符合要求。
随着精度的提升,应用龙贝格算法。
对给定函数在特定区间上的积分的值绘成的曲线如下。
图3.3.1Romberg算法积分曲线
Figure.3.3.1Rombergintegralcurvealgorithm
从图像中我们可以发现,由于设置了精度,曲线的攀升效果较为明显,且较大精度值精度过高,基本没有区别。
故龙贝格算法具有较好的准确性与较高的效率。
第四章数值积分的分析总结
这篇文章主要对几种基本求积公式进行了matlab的程序实现与相应的应用,并简单地分析对比了各个求积公式的优缺点,归纳如下:
复化梯形或抛物线求积公式的应用较为广泛,实现手段较为简单。
在对精度要求不大,积分区间为一小段实数的情况下,能较好地实现求积。
求积的结果能够粗略地反映积分的大小。
且随着节点数的增加,数值积分的值逼近原值。
在该文中,主要用的是抛物线的复化积分,对曲线的求积效果可能较好,而对折线段的求积可能没有梯形求积公式精准。
Gauss求积的计算过程比较繁琐,在本文中的Gauss-Laguerre公式求积公式需要先计算节点与对应系数,在取这些点的值,代入函数来积分。
运算较多,可能需要在求积前,需要预先导入节点的值与相应的系数来优化过程。
Gauss的求积公式可以运用在围较大的或者无限的区间。
而其余的求积公式并不能很好实现在一个较大区间或特定区间的取值。
Gauss公式的数据精度较高。
龙贝格算法的优点上文有多次提与,即通过较为高效的方式求出精度较高的积分。
在通过与复化抛物线积分的比较时,我们发现龙贝格在求得指定精度值,所需要进行的计算次数,远小于抛物线复化求积公式所要求的划分节点数,且随着精度要求的提高,增长较为平缓。
在具体的数值积分情形下,可以利用多种求积方式来解决问题。
如基于抛物线积分的自适应抛物线法。
其主要原理是对子区间进行了分别积分。
定下误差份额,若部分满足,则保留。
对不满足的部分,切分为较小区间再积分,值得所有子区间均符合积分条件。
自适应的数值积分还可以选用其他的积分,如龙贝格算法。
但这样某种程度上增加了计算难度。
在对精度要求极为严苛时,误差判断是必须的,而如何确定误差,或者说是余项,