Gauss型积分公式

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

G a u s s型积分公式-CAL-FENGHAI.-(YICAI)-Company One1

摘要

求函数在给定区间上的定积分,在微积分学中已给出了许多计算方法,但是,在实际问题计算中,往往仅给出函数在一些离散点的值,它的解析表达式没有明显的给出,或者,虽然给出解析表达式,但却很难求得其原函数。这时我们可以通过数值方法求出函数积分的近似值。

当然再用近似值代替真实值时,误差精度是我们需要考虑因素,但是除了误差精度以外,还可以用代数精度来判断其精度的高低。已知n+1点的Newton-Cotes型积分公式,当n为奇数时,其代数精度为n;当n为偶数时,其代数精度达到n+1。若对随机选取的n+1个节点作插值型积分公式也仅有n次代数精度。

如何选取适当的节点,能使代数精度提高Gauss型积分公式可是实现这一点,但是Gauss型求积公式,需要被积函数满足的条件是正交,这一条件比较苛刻。因此本实验将针对三种常用的Gauss型积分公式进行讨论并编程实现。

关键词:Newton-Cotes型积分公式正交多项式代数精度

1、实验目的

1)通过本次实验体会并学习Gauss型积分公式,在解决如何取节点能

提高代数精度这一问题中的思想方法。

2)通过对Gauss型积分公式的三种常见类型进行编程实现,提高自己

的编程能力。

3)用实验报告的形式展现,提高自己在写论文方面的能力。

2、算法流程

下面介绍三种常见的Gauss型积分公式

1)高斯-勒让德(Gauss-Legendre)积分公式

勒让德(Legendre)多项式

如下定义的多项式

称作勒让德多项式。由于是次多项式,所以是n次多项式,其最高次幂的系数与多项式

的系数相同。也就是说n 次勒让德多项式具有正交性即勒让德多项式是在上带的n次正交多项式,而且

这时Gauss 型积分公式的节点就取为上述多项式的零点,相应的Gauss型积分公式为

1

2

此积分公式即成为高斯-勒让德积分公式。 其中Gauss-Legendre 求积公式的系数

其中k 的取值范围为

Gauss 点和系数不容易计算,但是在实际计算中精度要求不是很高,所以给出如下表所示的部分Gauss 点,在实际应用中只需查表即可。 n x A n x

A 1 0

2 6

2 1 7

3

4

8

5

2) 高斯-拉盖尔(Gauss-Laguerre )积分公式

拉盖尔(Laguere )多项式

称为拉盖尔多项式。其首项系数为

,且具有性质:

正交性,在区间上关于权函数正交,而且

积分区间为,权函数为的Gauss型积分公式称为高斯-拉盖尔积分公式,其中Gauss 点为拉盖尔多项式的零点,高斯-拉盖尔积分公式为

同样高斯-拉盖尔积分公式的Gauss点和求积系数如下表所示:

n x A n x A

2

5

3

46

3)高斯-埃尔米特(Gauss-Hermite)积分公式

埃尔米特(Hermite)多项式

被称作埃尔米特多项式,其首项系数为,具有性质如下

正交性,在区间上关于权函数正交,而且

3

积分区间为,权函数为的Gauss型积分公式称为

Gauss-Hermite积分公式,其Gauss点就是Hermite 正交多项式的零点。Gauss-Hermite求积公式为

同样高斯-埃尔米特积分公式的Gauss点和求积系数如下表所示:

n x A n x A

2

7

3

4

8

5

3、算法实例

1)用3点Gauss型求积公式计算

解:根据积分限可以知道应该用Gauss-Legendre积分公式,具体程序如下所示

4

#include

#include <>

using namespace std;

const int M(10);

void main()

{

int i=0;

int n=0;

int m=0;

int sign=0;

double sum=0;

double x[M]={0};

double A[M]={0};

double x1[]={0};

double x2[]={,};

double x3[]={,,0};

double x4[]={,,,};

double x5[]={,,,,0};

double x6[]={,,,,,};

double x7[]={,,,,,,0};

double x8[]={,,,,,,,};

double A1[]={2};

double A2[]={1};

double A3[]={,};

double A4[]={,};

double A5[]={,,};

double A6[]={,,};

double A7[]={,,,};

double A8[]={,,,};

cout<<"请输入节点个数"<

cin>>n;

switch(n)

{

5

case 1:for(i=0;i

case

2:for(i=0;i

case

3:for(i=0;i

case

4:for(i=0;i

case

5:for(i=0;i

case

6:for(i=0;i

case

7:for(i=0;i

case

8:for(i=0;i

default:

cout<<"输入出错,请从新输入!!"<

break;

}

for(i=0;i

{

sum=sum+A[i]*cos(x[i]);

}

cout<

}

运行结果:

2)用两点Gauss 型求积公式计算积分

解:根据积分限可以知道应该用Gauss-Laguerre积分公式,具体程序如下所示

6

相关文档
最新文档