Gauss型積分公式_第1頁
Gauss型積分公式_第2頁
Gauss型積分公式_第3頁
Gauss型積分公式_第4頁
Gauss型積分公式_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、摘要求函數在給定區間上的定積分,在微積分學中已給出了許多計算方法,但是,在實際問題計算中,往往僅給出函數在一些離散點的值,它的解析表達式沒有明顯的給出,或者,雖然給出解析表達式,但卻很難求得其原函數。這時我們可以通過數值方法求出函數積分的近似值。當然再用近似值代替真實值時,誤差精度是我們需要考慮因素,但是除了誤差精度以外,還可以用代數精度來判斷其精度的高低。已知n+1點的Newton-Cotes型積分公式,當n為奇數時,其代數精度為n;當n為偶數時,其代數精度達到n+1。若對隨機選取的n+1個節點作插值型積分公式也僅有n次代數精度。如何選取適當的節點,能使代數精度提高?Gauss型積分公式可是

2、實現這一點,但是Gauss型求積公式,需要被積函數滿足的條件是正交,這一條件比較苛刻。因此本實驗將針對三種常用的Gauss型積分公式進行討論并編程實現。關鍵詞:Newton-Cotes型積分公式 正交多項式 代數精度1、實驗目的1) 通過本次實驗體會并學習Gauss型積分公式,在解決如何取節點能提高代數精度這一問題中的思想方法。2) 通過對Gauss型積分公式的三種常見類型進行編程實現,提高自己的編程能力。3) 用實驗報告的形式展現,提高自己在寫論文方面的能力。2、算法流程下面介紹三種常見的Gauss型積分公式1) 高斯-勒讓德(Gauss-Legendre)積分公式勒讓德(Legendre)

3、多項式如下定義的多項式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=1nAkf(xk)此積分公式

4、即成為高斯-勒讓德積分公式。其中Gauss-Legendre求積公式的系數Ak=-11xnxx-xk'nxdx=-11xLnxx-xkL'nxdx其中k的取值范圍為k=1,2,nGauss點和系數不容易計算,但是在實際計算中精度要求不是很高,所以給出如下表所示的部分Gauss點xk和系數Ak,在實際應用中只需查表即可。nxAnxA1026±0.9324695142±0.6612093865±1.23861918160.1713244920.3607615730.4679139342±0.577350269217±0.949107

5、9123±0.7415311856±0.405845151400.1294849660.2797053910.3818300500.4179591833±0.7745966692000.55555555560.88888888894±0.8611363116±0.33998104360.34785484510.65214515498±0.9602898565±0.7966664774±0.5255324099±01012285360.2223810340.3137066450.3

6、626837835±0.9061798459±0.538469310100.23692688510.47862867050.56888888892) 高斯-拉蓋爾(Gauss-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型積分公式稱為高斯-拉蓋爾積分公式,其中Gaus

7、s點為拉蓋爾多項式Lnx的零點,高斯-拉蓋爾積分公式為0e-xf(x)dxk=1nAkf(xk)同樣高斯-拉蓋爾積分公式的Gauss點和求積系數如下表所示:nxAnxA20.58578643763.41421356240.85355339050.146446609450.26356031971.41340305913.59642577107.085810005812.64080084420.52175561050.39866681100.07594244970.00361175870.000023370030.41577455672.29428036026.28994508290.711093

8、00990.278517733540.32254768961.74576110114.53662029699.39507091230.60315410430.35741869240.03888790850.000539294760.2228466041199273632605.77514356919.837467418315.98287398060.45896467930.41700083070.11337338200.01039919750.00026101720.00000089853) 高斯-埃爾米特(Gauss-Hermite)積分公式埃爾米特(Hermite

9、)多項式Hnx=(-1)nex2dne-x2dxn,-<x<+,n=0,1,2被稱作埃爾米特多項式,其首項系數為2n,具有性質如下正交性,在區間-,+上關于權函數e-x2正交,而且Hm,Hn=-+e-x2Hm(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點和求積系數如下表所示:nxAnxA2±0.

10、70710678110.88622692557±0.4360774119±1.3358490704±2.35030497360.7246295952000453000993±1.224744871400.29540897511.81635900064±0.5246476232±1.65068012380.80491409000.08131283548±0.8162878828±1.6735516287±2.651961356300.42560725260.05451558280.

11、00097178120.81026461755±0.9585724646±2.02018287040.39361932310.01995324210.94530872040.56888888893、算法實例1) 用3點Gauss型求積公式計算-11cosxdx解:根據積分限可以知道應該用Gauss-Legendre積分公式,具體程序如下所示#include <iostream>#include <math.h>using namespace std; const int M(10);void main()int i=0;int n=0;int m=0

12、;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;double x5=-0.9061798459,0.9061798459,-0.53846931010,0.53846931010,0;double x6=-0.9324695142,0.9

13、324695142,-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,0.7966664774,-0.5255324099,0.5255324099,-0.1834346425,0.1834346425;double A1=2;double A2=1

14、;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.3818300505,0.4179591834;double A8=0.1012285363,0.2223810345,0.3137066459,0.3626837834;cout&

15、lt;<"請輸入節點個數"<<endl;cin>>n;switch(n)case 1:for(i=0;i<n;i+)xi=x1i;Ai=A1i;break;case 2:for(i=0;i<n;i+)xi=x2i;for(i=0;i<n;i+)Ai=A2i/2;break;case 3:for(i=0;i<n;i+)xi=x3i;for(i=0;i<n;i+)Ai=A3i/2;break;case 4:for(i=0;i<n;i+)xi=x4i;for(i=0;i<n;i+)Ai=A4i/2;break

16、;case 5:for(i=0;i<n;i+)xi=x5i;for(i=0;i<n;i+)Ai=A5i/2;break;case 6:for(i=0;i<n;i+)xi=x6i;for(i=0;i<n;i+)Ai=A6i/2;break;case 7:for(i=0;i<n;i+)xi=x7i;for(i=0;i<n;i+)Ai=A7i/2;break;case 8:for(i=0;i<n;i+)xi=x8i;for(i=0;i<n;i+)Ai=A8i/2;break;default:cout<<"輸入出錯,請從新輸入!&q

17、uot;<<endl;break;for(i=0;i<n;i+)sum=sum+Ai*cos(xi);cout<<sum;運行結果:2) 用兩點Gauss型求積公式計算積分0e-10xsinxdx解:根據積分限可以知道應該用Gauss-Laguerre積分公式,具體程序如下所示#include "stdafx.h"#include <iostream>#include <math.h>using namespace std;const int M(10);void main()int i=0;int n=0;int m=

18、0;int sign=0;double sum=0;double xM=0;double AM=0;double x2=0.5857864376,3.4142135624;double x3=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.18

19、89321016,2.9927363260,5.7751435691,9.8374674183,15.9828739806;double A2=0.8535533905,0.1464466094;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.4589

20、646793,0.4170008307,0.1133733820,0.0103991975,0.0002610172,0.0000008985;cout<<"請輸入節點個數"<<endl;cin>>n;switch(n)case 2:for(i=0;i<n;i+)xi=x2i;for(i=0;i<n;i+)Ai=A2i;break;case 3:for(i=0;i<n;i+)xi=x3i;for(i=0;i<n;i+)Ai=A3i;break;case 4:for(i=0;i<n;i+)xi=x4i;for(

21、i=0;i<n;i+)Ai=A4i;break;case 5:for(i=0;i<n;i+)xi=x5i;for(i=0;i<n;i+)Ai=A5i;break;case 6:for(i=0;i<n;i+)xi=x6i;for(i=0;i<n;i+)Ai=A6i;break;default:cout<<"輸入出錯,請從新輸入!"<<endl;break;for(i=0;i<n;i+)sum=sum+Ai*sin(xi)*exp(-9*xi);cout<<sum;運行結果:3) 用兩點Gauss型求積公式

22、計算積分-e-x2cosxdx解:根據積分限可以知道應該用Gauss-Hermite積分公式,具體程序如下所示#include "stdafx.h"#include <iostream>#include <math.h>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.7071067811,0.7071067811;double x3=-1

23、.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.8162878828,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.157067

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論