牛頓插值法原理及應(yīng)用_第1頁
牛頓插值法原理及應(yīng)用_第2頁
牛頓插值法原理及應(yīng)用_第3頁
牛頓插值法原理及應(yīng)用_第4頁
牛頓插值法原理及應(yīng)用_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上牛頓插值法  是利用函數(shù)f (x)在某區(qū)間中若干點的函數(shù)值,作出適當(dāng)?shù)奶囟ê瘮?shù),在這些點上取已知值,在區(qū)間的其他點上用這特定的值作為函數(shù)f (x)的近似值。如果這特定函數(shù)是,就稱它為插值多項式。當(dāng)插值節(jié)點增減時全部插值基函數(shù)均要隨之變化,這在實際計算中很不方便。為了克服這一缺點,提出了插值。 牛頓插值通過求各階差商,遞推得到的一個公式:f(x)=fx0+fx0,x1(x-x0)+fx0,x1,x2(x-x0)(x-x1)+.fx0,.xn(x-x0).(x-xn-1)+Rn(x)。插值函數(shù) 插值函數(shù)的概念及相關(guān)性質(zhì) 定義:設(shè)連續(xù)函數(shù)y-f(x) 在

2、區(qū)間a,b上有定義,已知在n+1個互異的點x0,x1,xn上取值分別為y0,y1,yn (設(shè)a x1x2xnb)。若在函數(shù)類中存在以簡單函數(shù)P(x) ,使得P(xi)=yi,則稱P(x) 為f(x)的插值函數(shù).稱x1,x2,xn 為插值節(jié)點,稱a,b為插值區(qū)間。 定理:n次代數(shù)插值問題的解存在且唯一 。牛頓插值法C程序 程序框圖#include<stdio.h>void main()    float x11,y1111,xx,temp,newton;    int i,j,n;  

3、  printf("Newton插值:n請輸入要運算的值:x=");    scanf("%f",&xx);    printf("請輸入插值的次數(shù)(n<11):n=");    scanf("%d",&n);    printf("請輸入%d組值:n",n+1);    for(i=0;i<n+1;i+)&#

4、160;      printf("x%d=",i);        scanf("%f",&xi);        printf("y%d=",i);        scanf("%f",&y0i);     &

5、#160;  for(i=1;i<n+1;i+)        for(j=i;j<n+1;j+)           if(i>1)                yij=(yi-1j-yi-1j-1)/(xj-xj-i);   

6、         else            yij=(yi-1j-yi-1j-1)/(xj-xj-1);                    printf("%fn",yii);  

7、       temp=1;newton=y00;        for(i=1;i<n+1;i+)       temp=temp*(xx-xi-1);        newton=newton+yii*temp;        printf("求得的結(jié)果為:N(%.4f)=%9fn&quo

8、t;,xx,newton);牛頓插值法Matlab程序function f = Newton(x,y,x0) syms t; if(length(x) = length(y)     n = length(x); c(1:n) = 0.0; else     disp(&apos;x和y的維數(shù)不相等!&apos;);     return; end f = y(1); y1 = 0; l  = 1; for(i=1:n-1)     

9、60; for(j=i+1:n)         y1(j) = (y(j)-y(i)/(x(j)-x(i);     end     c(i) = y1(i+1);          l = l*(t-x(i);       f = f + c(i)*l;     simplify(f);  &#

10、160;  y = y1;     if(i=n-1)         if(nargin = 3)             f = subs(f,&apos;t&apos;,x0);         else        

11、;     f = collect(f);                %將插值多項式展開             f = vpa(f, 6);         end     end 牛

12、頓插值法摘 要:值法利用函數(shù)f (x)在某區(qū)間中若干點的函數(shù)值,作出適當(dāng)?shù)奶囟ê瘮?shù),在這些點上取已知值,在區(qū)間的其他點上用這特定函數(shù)的值作為函數(shù)f (x)的近似值。如果這特定函數(shù)是多項式,就稱它為插值多項式。利用插值基函數(shù)很容易得到拉格朗日插值多項式,公式結(jié)構(gòu)緊湊,在理論分析中甚為方便,但當(dāng)插值節(jié)點增減時全部插值基函數(shù)均要隨之變化,整個公式也將發(fā)生變化, 這在實際計算中是很不方便的,為了克服這一缺點,提出了牛頓插值。 牛頓插值通過求各階差商,遞推得到的一個公式: f(x)=fx0+fx0,x1(x-x0)+fx0,x1,x2(x-x0)(x-x1)+.fx0,.xn(x-x0).(x-xn-1

13、)+Rn(x)關(guān)鍵詞:牛頓插值法 流程圖 程序?qū)崿F(xiàn)一、 插值法的由來 在許多實際問題及科學(xué)研究中,因素之間往往存在著函數(shù)關(guān)系,然而,這種關(guān)系經(jīng)常很難有明顯的解析表達,通常只是由觀察與測試得到一些離散數(shù)值。有時,即使給出了解析表達式,卻由于表達式過于復(fù)雜,不僅使用不便,而且不易于進行計算與理論分析。解決這類問題的方法有兩種:一種是插值法,另一種是擬合法。插值法是一種古老的數(shù)學(xué)方法,它來自生產(chǎn)實踐,早在一千多年前,我國科學(xué)家在研究歷法上就應(yīng)用了線性插值與二次插值,但它的基本理論卻是在微積分產(chǎn)生之后才逐漸完善的,其應(yīng)用也日益增多,特別是在計算機軟件中,許多庫函數(shù),如等的計算實際上歸結(jié)于它的逼近函數(shù)的

14、計算。逼近函數(shù)一般為只含有算術(shù)運算的簡單函數(shù),如多項式、有理分式(即多項式的商)。在工程實際問題當(dāng)中,我們也經(jīng)常會碰到諸如此類的函數(shù)值計算問題。被計算的函數(shù)有時不容易直接計算,如表達式過于復(fù)雜或者只能通過某種手段獲取該函數(shù)在某些點處的函數(shù)值信息或者導(dǎo)數(shù)值信息等。因此,我們希望能用一個“簡單函數(shù)”逼近被計算函數(shù),然后用該簡單函數(shù)的函數(shù)值近似替代被計算函數(shù)的函數(shù)值。這種方法就叫插值逼近或者插值法。逐次線性插值法優(yōu)點是能夠最有效地計算任何給定點的函數(shù)值,而不需要寫出各步用到的插值多項式的表達式。但如果解決某個問題時需要插值多項式的表達式,那么,它的這個優(yōu)點就成了它的缺點了。能不能根據(jù)插值條件構(gòu)造一個

15、插值多項式,它既有具體的表達式,又很容易用它計算任何點的函數(shù)值呢?牛頓插值法能作到這一點。 2、 牛頓插值法的概念牛頓插值多項式的表達式設(shè)問題是如何根據(jù)插值條件 ,i=0,1,2n 來計算待定系數(shù)?由 知, 。由 知 因而 ,其中 稱為函數(shù)f(x)在點的一階商。由 知 因而 其中稱為函數(shù)f (x)在點的二階差商。實際上,它是一階差商的差商。一般地,如果已知一階差商,那么就可以計算二階差商 類似于上述過程不斷地推導(dǎo)下去,可得 其中,分別稱為函數(shù)f (x)在相應(yīng)點處的三階差商,四階差商和n 階差商。實際上, 的計算可通過以下簡易地構(gòu)造函數(shù)的差商來完成。 .按上述方式構(gòu)造插值多項式的方法叫做牛頓插值

16、法。根據(jù)插值多項式的惟一性知,其截斷誤差與拉格朗日插值法相同,即: 但也可以表示成差商形式。這是因為以為節(jié)點的多項式 從而 于是 的截斷誤差可表為 順便指出,因為牛頓插值多項式具有性質(zhì): 所以,類似于逐次線性插值法,也可以把上述和式中的第二項看成是估計 的一種實用誤差估計式。與差商概念密切聯(lián)系的另一個概念是差分,它是指在等距節(jié)點上函數(shù)值的差。所謂等距節(jié)點,是指對給定的常數(shù)h(稱為步長),節(jié)點稱為 處的一階向前差分;稱 為 處的一階向后差分;稱 為 處的中心差分。一階差分的差分稱為二階差分,即 稱為 處的二階向前差分。一般地,m 階向前和向后差分可定義如下:3、 牛頓插值法的實現(xiàn)1、【算法】步驟

17、1:輸入節(jié)點(xj,yj),精度,計值點xx,f0p,1T,1i;步驟2:對k=1,2,i依次計算k階均差fxi-k,xi-k+1,xi = (fxi-k+1,xi- fxi-k,xi)/( xi -xi-k )步驟3:(1)、若| fx1,xi- fx0,xi-1|< ,則p為最終結(jié)果Ni-1(x),余項Ri-1= fx0,xi(xx-xi-1)T。 (2)、否則(xx-xi-1)*TT,p+ fx0,xi*Tp,轉(zhuǎn)步驟4。步驟4:若i<n,則i+1i,轉(zhuǎn)步驟2;否則終止。 2、【流程圖】STOP 1輸出p,r,iqi(xi-xi-1)TRk= 1,2,ik(qk-1gk-1)(

18、xixi-k)qkf0g0,fiq0輸出,xx,n及(xj,yj)開始 i+1i YES|gi-1-qi-1|< NO(xi-xi-1)TTp+qi*Tp k = 1,2,iqkgkk YESk<n i+1 i qi(xx-xn-1)*TR NO 輸出P,R,nSTOP 2 3、【程序清單】#include"stdio.h"#define n 4/牛頓插值的次數(shù)void main() float an+1n+2=0,s=0,t=1,x; int i,j; printf("請輸入xi及yi的值/要求先輸入xi再輸入yi然后輸入下一組n"); f

19、or(i=0;i<n+1;i+) for(j=0;j<2;j+) scanf("%f",&aij); for(j=1;j<n+2;j+)/計算各階均差 for(i=j;i<n+1;i+) aij+1=(aij-ai-1j)/(ai0-ai-j0); printf("輸出xi,yi及各階均差n"); for(i=0;i<n+1;i+) for(j=0;j<n+2;j+) printf("%6.5f ",aij); printf("n"); printf("輸出牛頓插值表達式n"); printf("N%d(x)=",n); for(i=0;i<n+1;i+) printf("%6.5f",aii+1); for(j=0;j<i;j+) printf("(x-%3.2f)",aj0); if(i=n) break; printf("+"); printf("n"); printf("輸入插值點x="); scanf("%f",&x); for(i=0;i&l

溫馨提示

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

評論

0/150

提交評論