当前位置:文档之家› 高斯-勒让德积分公式

高斯-勒让德积分公式

实习论文
题目高斯勒让德积分公式
专业信息与计算科学
班级计算092
学号**********
学生周吉瑞
指导教师秦新强
2011 年
高斯勒让德积分公式
专 业: 信息与计算科学 学 生: 周吉瑞 指导老师: 秦新强
摘要
关于数值积分公式0
()()b
n
k k k a
f x dx A f x =≈∑⎰,除了用误差来分析其精度以外,还可以
用代数精度来判断其代数精度的高低,已知n+1点Newton-Cotes 型积分公式,当n 为奇数时,其代数精度为n ,当n 为偶数时,其代数精度达到n+1。

n+1点的Newton-Cotes 型积分公式属于插值积分型积分公式,一般地,若对随机选取的n+1个节点作插值型积分公式也仅有n 次代数精度,但是,如果求积节点选取适当,就有可能提高数值积分的代数精度,高斯型积分公式就可以实现这一目标。

关 键 词:数值积分,代数精度,高斯型积分公式
一、目的意义
构造Gaoss 型求积公式除需要求出正交多项式外,还需要求出正交多项式的零点和求积系数,当3n ≥时,这些工作均很困难,因此给出高斯-勒让德积分公式的零点和系数。

二、公式
高斯-勒让德积分公式:1
1
1
()()n
k k k f x A f x -=≈∑⎰;
三、算法流程
Step1:输入所用的点数n ; Step2:对i=1,2,···,n 循环执行步3; Step3:I= I+ ()i i A f x ;
Step4:输出I ;结束。

四、算法程序
#include<stdio.h>
#include<math.h>
double Leg(double x)
{
double z;
z=8/(4+(1+x)*(1+x));
return z;
}
void main()
{
double x[9],A[9],I=0;
int i,n;
printf("请输入点数n:");
scanf("%d",&n);
switch(n)
{
case 1: x[1]=0,A[1]=2;break;
case 2: x[1]=0.5773502692,x[2]=-0.5773502692,A[1]=A[2]=1;break;
case 3: x[1]=0.77459666920,x[2]=0,x[3]=-0.77459666920,A[1]=A[3]=0.5555555556, A[2]=0.8888888889;break;
case 4: x[1]=0.8611363116,x[2]=0.3399810436,x[3]=-0.8611363116,x[4]=-0.339981 0436;
A[1]=A[3]=0.3478548451,A[2]=A[4]=0.6521451549;break;
case 5: x[1]=0.9061798459,x[2]=0.53845931010,x[3]=0,x[4]=-0.9061798459,x[5]=-0.53845931010;
A[1]=A[4]=0.2369268851,A[3]=0.5688888889,A[2]=A[5]=0.4786286705;b reak;
case 6: x[1]=0.9324695142,x[2]=0.6612093865,x[3]=0.2386191816,x[4]=-0.9324695 142,x[5]=-0.6612093865,x[6]=-0.2386191816;
A[1]=A[4]=0.1713244924,A[2]=A[5]=0.3607615730,A[3]=A[6]=0.4679139 346;break;
case 7: x[1]=0.9491079123,x[2]=0.7415311856,x[3]=0.40584515140,x[4]=0,x[5]=-0 .9491079123,x[6]=-0.7415311856,x[7]=-0.40584515140;
A[1]=A[5]=0.1294849662,A[2]=A[6]=0.2797053915,A[3]=A[7]=0.3818300 505,A[4]=0.4179591834;break;
case 8: x[1]=0.9602898565,x[2]=0.7966664774,x[3]=0.5255324099,x[4]=0.18343464 25,x[5]=-0.9602898565,x[6]=-0.7966664774,x[7]=-0.5255324099,x[8]=-0.1 834346425;
A[1]=A[5]=0.1012285363,A[2]=A[6]=0.2223810345,A[3]=A[7]=0.3137066 459,A[4]=A[8]=0.3626837834;break;
default: printf("error\n");
}
for(i=1;i<=n;i++)
{
I=I+A[i]*Leg(x[i]);
}
printf("原积分I=%f\n",I);
}
五、数值算例
例用3点高斯-勒让德公式求积分1
2
1
8
4(1)
dx
x
-
++

解:
六、分析评价
其结果与用复化积分公式所得的结果做比较可得,高斯积分公式的结果的代数精度更高。

七、参考文献
[1] 秦新强.数值逼近 [D]. 西安:西安理工大学,2010年元月。

相关主题