数值分析高斯—勒让德积分公式
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
高斯—勒让德积分公式
摘要:
高斯—勒让德积分公式可以用较少节点数得到高精度的计算结果,是现在现实生活中经常运用到的数值积分法。然而,当积分区间较大时,积分精度并不理想。
T he adva ntage of Gauss-Legendre integral formula is tend to get high-precision calculational result by using fewer Gauss-points, real life is now often applied numerical integration method. But the precision is not good when the length of integral interval is longer.
关键字:
积分计算,积分公式,高斯—勒让德积分公式,MATLAB
Keyword:
Integral Calculation , Integral formula ,Gauss-Legendre integral formula, Matlab 引言:
众所周知,微积分的两大部分是微分与积分。微分实际上是求一函数的导数,而积分是已知一函数的导数,求这一函数。所以,微分与积分互为逆运算。
实际上,积分还可以分为两部分。第一种,是单纯的积分,也就是已知导数求原函数,称为不定积分。
相对而言,另一种就是定积分了,之所以称其为定积分,是因为它积分后得出的值是确定的,是一个数,而不是一个函数。
计算定积分的方法很多,而高斯—勒让德公式就是其中之一。
高斯积分法是精度最高的插值型数值积分,具有2n+1阶精度,并且高斯积分总是稳定。而高斯求积系数,可以由Lagrange多项式插值系数进行积分得到。
高斯—勒让德求积公式是构造高精度差值积分的最好方法之一。他是通过让节点和积分系数待定让函数f(x)以此取i=0,1,2....n次多项式使其尽可能多的能够精确成立来求出积分节点和积分系数。高斯积分的代数精度是2n-1,而且是最高的。通常运用的是(-1,1)的积分节点和积分系数,其他积分域是通过变换
x=(b-a)t/2 +(a+b)/2 变换到-1到1之间积分。
1.现有的方法和理论
1.1高斯勒让德求积公式
在高斯求积公式(4.5.1)中,若取权函数,区间为,则得公式
我们知道勒让德多项式是区间上的正交多项式,因此,勒让德多项式的零点就是求积公式(上式)的高斯点.形如(上式)的高斯公式特别地称为高斯-勒让德求积公式.
若取的零点做节点构造求积公式
令它对准确成立,即可定出.这样构造出的一点高斯-勒让德求积公式是中矩形公式.再取的两个零点构造求积公式
令它对都准确成立,有
.
由此解出,从而得到两点高斯-勒让德求积公式
.
三点高斯-勒让德求积公式的形式是
.
如表列出高斯-勒让德求积公式的节点和系数.
0 0.0000000 2.0000000
1 0.5773503 1.0000000
2
0.7745967
0.0000000 0.5555556 0.8888889
3
0.8611363
0.3399810 0.3478548 0.6521452
4 0.9061798
0.5384693
0.0000000
0.2369269
0.4786287
0.5688889
公式(4.5.9)的余项由(4.5.8)得
,
这里是最高项系数为1的勒让德多项式,由(3.2.6)及(3.2.7)得
.当时,有
.
它比辛普森公式余项还小,且比辛普森公式少算一个函数值.当积分区间不是[-1,1],而是一般的区间时,只要做变换
可将化为[-1,1],这时
.对等式右端的积分即可使用高斯-勒让德求积公式.
1.2复化Gauss-Legendre求积公式
将被积区间m等分, 记, 作变换
在每个小区间上应用Gauss-Legendre公式, 累加即得复化Gauss-Legendre求积公式
不妨设
则有:
Gauss点个数时,
Gauss点个数时,
总结复化Gauss-Legendre求积过程如下:
1. 分割区间, 记录区间端点值;
2. 通过查表或求解非线性方程组, 在所有小区间上, 将Gauss系数和Gauss点
的值代入变量替换后的公式;
3. 将所有区间的结果累加, 即得到整个区间上的积分近似值.
针对Gauss点个数和的复化Gauss-Legendre求积公式编写的一个简单的MAT LAB函数compgauss() 如下:
function [ ] = compgauss(a, b, n)
% Composite Gauss Integration
% Equation Type: n=2, n=3
% Coded by Nan.Xiao 2010-05-25
% Step.1 Divide Interval
% Step.2 Calculate
% Step.3 Sum Results
format long
f = (x) exp(x).*sin(x);
h=(b-a)/n;
xk=zeros(n+1,1);
xk(1,1)=a;
xk(n+1,1)=b;
fk1=zeros(n,1);
fk2=zeros(n,1);
for i=1:n-1
xk(i+1,1)=a+h*i;
end
for j=1:n
fk1(j)=f((xk(j)+xk(j+1))/2+(h/2)*(-1/sqrt(3)))+...
f((xk(j)+xk(j+1))/2+(h/2)*(1/sqrt(3)));
end
for r=1:n
fk2(r)=(5/9)*f((xk(r)+xk(r+1))/2+(h/2)*(-sqrt(15)/5))+...
(8/9)*f((xk(r)+xk(r+1))/2+(h/2)*(0))+...
(5/9)*f((xk(r)+xk(r+1))/2+(h/2)*(sqrt(15)/5));
end
mysum1=h*sum(fk1)/2;
mysum2=h*sum(fk2)/2;
disp('Result of 2 Nodes:')
disp(mysum1);
disp('Result of 3 Nodes:')
disp(mysum2);
end