收藏 分销(赏)

Gauss型积分公式.docx

上传人:天**** 文档编号:4584529 上传时间:2024-09-30 格式:DOCX 页数:14 大小:63.83KB
下载 相关 举报
Gauss型积分公式.docx_第1页
第1页 / 共14页
Gauss型积分公式.docx_第2页
第2页 / 共14页
Gauss型积分公式.docx_第3页
第3页 / 共14页
Gauss型积分公式.docx_第4页
第4页 / 共14页
Gauss型积分公式.docx_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、Gauss型积分公式摘要求函数在给定区间上的定积分,在微积分学中已给出了许多计算方法,但是,在实际问题计算中,往往仅给出函数在一些离散点的值,它的解析表达式没有明显的给出,或者,虽然给出解析表达式,但却很难求得其原函数。这时我们可以通过数值方法求出函数积分的近似值。当然再用近似值代替真实值时,误差精度是我们需要考虑因素,但是除了误差精度以外,还可以用代数精度来判断其精度的高低。已知n+1点的Newton-Cotes型积分公式,当n为奇数时,其代数精度为n;当n为偶数时,其代数精度达到n+1。若对随机选取的n+1个节点作插值型积分公式也仅有n次代数精度。如何选取适当的节点,能使代数精度提高?Ga

2、uss型积分公式可是实现这一点,但是Gauss型求积公式,需要被积函数满足的条件是正交,这一条件比较苛刻。因此本实验将针对三种常用的Gauss型积分公式进行讨论并编程实现。关键词:Newton-Cotes型积分公式 正交多项式 代数精度1、实验目的1) 通过本次实验体会并学习Gauss型积分公式,在解决如何取节点能提高代数精度这一问题中的思想方法。2) 通过对Gauss型积分公式的三种常见类型进行编程实现,提高自己的编程能力。3) 用实验报告的形式展现,提高自己在写论文方面的能力。2、算法流程下面介绍三种常见的Gauss型积分公式1) 高斯-勒让德(Gauss-Legendre)积分公式勒让德

3、(Legendre)多项式如下定义的多项式Lnx=12nn!dndxn(x2-1)n,x-1,1,n=0,1,2称作勒让德多项式。由于(x2-1)n是2n次多项式,所以Lnx是n次多项式,其最高次幂的系数An与多项式12nn!dndxnx2n=12nn!2n(2n-1)(2n-2)(n+1)xn的系数相同。也就是说n次勒让德多项式具有正交性即勒让德多项式Lnx是在-1,1上带x=1的n次正交多项式,而且Lm,Ln=-11Lm(x)Ln(x)dx=0, mn22n+1, m=n 这时Gauss型积分公式的节点就取为上述多项式Lnx的零点,相应的Gauss型积分公式为-11f(x)dxk=1nAk

4、f(xk)此积分公式即成为高斯-勒让德积分公式。其中Gauss-Legendre求积公式的系数Ak=-11xnxx-xknxdx=-11xLnxx-xkLnxdx其中k的取值范围为k=1,2,nGauss点和系数不容易计算,但是在实际计算中精度要求不是很高,所以给出如下表所示的部分Gauss点xk和系数Ak,在实际应用中只需查表即可。nxAnxA10260.93246951420.66120938651.23861918160.1713244920.3607615730.46791393420.5773502692170.94910791230.74153118560.405845151400

5、.1294849660.2797053910.3818300500.41795918330.7745966692000.55555555560.888888888940.86113631160.33998104360.34785484510.652145154980.96028985650.79666647740.52553240990.18343464250.1012285360.2223810340.3137066450.36268378350.90617984590.538469310100.23692688510.47862867050.56888888892) 高斯-拉盖尔(Gaus

6、s-Laguerre)积分公式拉盖尔(Laguere)多项式Lnx=exdndxn(xne-x),0x+,n=0,1,2称为拉盖尔多项式。其首项系数为(-1)n,且具有性质:正交性,在区间0,+上关于权函数x=e-x正交,而且Lm,Ln=0e-xLm(x)Ln(x)dx=0, mn(n!)2, m=n 积分区间为0,+,权函数为x=e-x的Gauss型积分公式称为高斯-拉盖尔积分公式,其中Gauss点为拉盖尔多项式Lnx的零点,高斯-拉盖尔积分公式为0e-xf(x)dxk=1nAkf(xk)同样高斯-拉盖尔积分公式的Gauss点和求积系数如下表所示:nxAnxA20.58578643763.4

7、1421356240.85355339050.146446609450.26356031971.41340305913.59642577107.085810005812.64080084420.52175561050.39866681100.07594244970.00361175870.000023370030.41577455672.29428036026.28994508290.71109300990.278517733540.32254768961.74576110114.53662029699.39507091230.60315410430.35741869240.038887908

8、50.000539294760.22284660411.18893210162.99273632605.77514356919.837467418315.98287398060.45896467930.41700083070.11337338200.01039919750.00026101720.00000089853) 高斯-埃尔米特(Gauss-Hermite)积分公式埃尔米特(Hermite)多项式Hnx=(-1)nex2dne-x2dxn,-x+,n=0,1,2被称作埃尔米特多项式,其首项系数为2n,具有性质如下正交性,在区间-,+上关于权函数e-x2正交,而且Hm,Hn=-+e-x2

9、Hm(x)Hn(x)dx=0, mn2nn!, m=n 积分区间为-,+,权函数为x=e-x2的Gauss型积分公式称为Gauss-Hermite积分公式,其Gauss点就是Hermite正交多项式Hnx的零点。Gauss-Hermite求积公式为-e-x2f(x)dxk=1nAkf(xk)同样高斯-埃尔米特积分公式的Gauss点和求积系数如下表所示:nxAnxA20.70710678110.886226925570.43607741191.33584907042.35030497360.72462959520.15706732030.004530009931.224744871400.295

10、40897511.816359000640.52464762321.65068012380.80491409000.081312835480.81628788281.67355162872.651961356300.42560725260.05451558280.00097178120.810264617550.95857246462.02018287040.39361932310.01995324210.94530872040.56888888893、算法实例1) 用3点Gauss型求积公式计算-11cosxdx解:根据积分限可以知道应该用Gauss-Legendre积分公式,具体程序如下所

11、示#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 xM=0;double AM=0;double x1=0;double x2=-0.57735502692,0.57735502692;double x3=-0.77459666920,0.77459666920,0;double x4=-0.8611363116,0.8611363116,-0.3399810436,0.3399810436;doubl

12、e x5=-0.9061798459,0.9061798459,-0.53846931010,0.53846931010,0;double x6=-0.9324695142,0.9324695142,-0.6612093865,0.6612093865,-1.2386191816,1.2386191816;double x7=-0.9491079123,0.9491079123,-0.7415311856,0.7415311856,-0.40584515140,0.40584515140,0;double x8=-0.9602898565,0.9602898565,-0.7966664774,

13、0.7966664774,-0.5255324099,0.5255324099,-0.1834346425,0.1834346425;double A1=2;double A2=1;double A3=0.5555555556,0.8888888889;double A4=0.3478548451,0.6521451549;double A5=0.2369268851,0.4786286705,0.5688888889;double A6=0.1713244924,0.3607615730,0.4679139346;double A7=0.1294849662,0.2797053915,0.3

14、818300505,0.4179591834;double A8=0.1012285363,0.2223810345,0.3137066459,0.3626837834;cout请输入节点个数n;switch(n)case 1:for(i=0;in;i+)xi=x1i;Ai=A1i;break;case 2:for(i=0;in;i+)xi=x2i;for(i=0;in;i+)Ai=A2i/2;break;case 3:for(i=0;in;i+)xi=x3i;for(i=0;in;i+)Ai=A3i/2;break;case 4:for(i=0;in;i+)xi=x4i;for(i=0;in

15、;i+)Ai=A4i/2;break;case 5:for(i=0;in;i+)xi=x5i;for(i=0;in;i+)Ai=A5i/2;break;case 6:for(i=0;in;i+)xi=x6i;for(i=0;in;i+)Ai=A6i/2;break;case 7:for(i=0;in;i+)xi=x7i;for(i=0;in;i+)Ai=A7i/2;break;case 8:for(i=0;in;i+)xi=x8i;for(i=0;in;i+)Ai=A8i/2;break;default:cout输入出错,请从新输入!endl;break;for(i=0;in;i+)sum=s

16、um+Ai*cos(xi);coutsum;运行结果:2) 用两点Gauss型求积公式计算积分0e-10xsinxdx解:根据积分限可以知道应该用Gauss-Laguerre积分公式,具体程序如下所示#include stdafx.h#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 xM=0;double AM=0;double x2=0.5857864376,3.4142135624;double x3=

17、0.4157745567,2.2942803602,6.2899450829;double x4=0.3225476896,1.7457611011,4.5366202969,9.3950709123;double x5=0.2635603197,1.4134030591,3.5964257710,7.0858100058,12.6408008442;double x6=0.2228466041,1.1889321016,2.9927363260,5.7751435691,9.8374674183,15.9828739806;double A2=0.8535533905,0.146446609

18、4;double A3=0.7110930099,0.2785177335,0.0103892565;double A4=0.6031541043,0.3574186924,0.0388879085,0.0005392947;double A5=0.5217556105,0.3986668110,0.0759424497,0.0036117587,0.0000233700;double A6=0.4589646793,0.4170008307,0.1133733820,0.0103991975,0.0002610172,0.0000008985;cout请输入节点个数n;switch(n)ca

19、se 2:for(i=0;in;i+)xi=x2i;for(i=0;in;i+)Ai=A2i;break;case 3:for(i=0;in;i+)xi=x3i;for(i=0;in;i+)Ai=A3i;break;case 4:for(i=0;in;i+)xi=x4i;for(i=0;in;i+)Ai=A4i;break;case 5:for(i=0;in;i+)xi=x5i;for(i=0;in;i+)Ai=A5i;break;case 6:for(i=0;in;i+)xi=x6i;for(i=0;in;i+)Ai=A6i;break;default:cout输入出错,请从新输入!endl

20、;break;for(i=0;in;i+)sum=sum+Ai*sin(xi)*exp(-9*xi);coutsum;运行结果:3) 用两点Gauss型求积公式计算积分-e-x2cosxdx解:根据积分限可以知道应该用Gauss-Hermite积分公式,具体程序如下所示#include stdafx.h#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 xM=0;double AM=0;double x2=-

21、0.7071067811,0.7071067811;double x3=-1.2247448714,1.2247448714,0;double x4=-0.5246476232,0.5246476232,-1.6506801238,1.6506801238;double x5=-0.9585724646,0.9585724646,-2.0201828704,2.0201828704;double x6=-0.4360774119,0.4360774119,-1.3358490704,1.3358490704,-2.3506049736,2.3506049736;double x7=-0.816

22、2878828,0.8162878828,-1.6735516287,1.6735516287,-2.65196135630,2.65196135630,0;double A2=0.8862269255;double A3=0.2954089751,1.8163590006;double A4=0.8049140900,0.0813128354;double A5=0.3936193231,0.0199532421,0.9453087204,0.5688888889;double A6=0.7246295952,0.1570673203,0.0045300099;double A7=0.425

23、6072526,0.0545155828,0.0009717812,0.8102646175;cout请输入节点个数n;switch(n)case 2:for(i=0;in;i+)xi=x2i;for(i=0;in;i+)Ai=A2i/2;break;case 3:for(i=0;in;i+)xi=x3i;for(i=0;in;i+)Ai=A3i/2;break;case 4:for(i=0;in;i+)xi=x4i;for(i=0;in;i+)Ai=A4i/2;break;case 5:for(i=0;in;i+)xi=x5i;for(i=0;in;i+)Ai=A5i;break;case

24、6:for(i=0;in;i+)xi=x6i;for(i=0;in;i+)Ai=A6i/2;break;case 7:for(i=0;in;i+)xi=x7i;Ai=A7i/2;break;default:cout输入出错,请从新输入!endl;break;for(i=0;in;i+)sum=sum+Ai*cos(xi);coutsum;运行结果:4、对结果进行分析实验结果较为理想,但是仅仅只能计算函数在特殊的区间上的值。而且程序的通用性不是很好,还需进一步改进。5、总结通过对Gauss型积分公式的三种特殊情况的实验和学习,我明白了Gauss型积分公式的原理,并且体会到了它的优点和不足。6、参考文献1 秦新强.数值逼近.西安:西安理工大学出版社,201012

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服