資源描述:
《插值與擬合教程及MATLAB算法實現》由會員上傳分享,免費在線閱讀,更多相關內容在學術論文-天天文庫。
1、第九章插值與擬合插值:求過已知有限個數據點的近似函數。擬合:已知有限個數據點,求近似函數,不要求過已知數據點,只要求在某種意義下它在這些點上的總偏差最小。插值和擬合都是要根據一組數據構造一個函數作為近似,由于近似的要求不同,二者的數學方法上是完全不同的。而面對一個實際問題,究竟應該用插值還是擬合,有時容易確定,有時則并不明顯?!?插值方法下面介紹幾種基本的、常用的插值:拉格朗日多項式插值、牛頓插值、分段線性插值、Hermite插值和三次樣條插值。1.1拉格朗日多項式插值1.1.1插值多項式用多項式作為研究插值的工具,稱為代數插值。其基本問題是:已知函數f(x)在區(qū)間[
2、a,b]上n+1個不同點x,x,L,x處的函數值y=f(x)(i=0,1,L,n),求一個01nii至多n次多項式n?(x)=a+ax+L+ax(1)n01n使其在給定點處與f(x)同值,即滿足插值條件?(x)=f(x)=y(i=0,1,L,n)(2)niii?(x)稱為插值多項式,x(i=0,1,L,n)稱為插值節(jié)點,簡稱節(jié)點,[a,b]稱為插值區(qū)ni間。從幾何上看,n次多項式插值就是過n+1個點(x,f(x))(i=0,1,L,n),作一條ii多項式曲線y=?(x)近似曲線y=f(x)。nn次多項式(1)有n+1個待定系數,由插值條件(2)恰好給出n+1個方程2n
3、?a+ax+ax+L+ax=y01020n00?2n?a0+a1x1+a2x1+L+anx1=y1?(3)?LLLLLLLLLLLL?2na+ax+ax+L+ax=y?01n2nnnn記此方程組的系數矩陣為A,則2n1xxLx0002n1xxLx111det(A)=LLLLLLL2n1xxLxnnn是范德蒙特(Vandermonde)行列式。當x,x,L,x互不相同時,此行列式值不為零。因01n此方程組(3)有唯一解。這表明,只要n+1個節(jié)點互不相同,滿足插值要求(2)的插值多項式(1)是唯一的。插值多項式與被插函數之間的差R(x)=f(x)??(x)nn-175-稱
4、為截斷誤差,又稱為插值余項。當f(x)充分光滑時,(n+1)f(ξ)R(x)=f(x)?L(x)=ω(x),ξ∈(a,b)nnn+1(n+1)!n其中ωn+1(x)=∏(x?xj)。j=01.1.2拉格朗日插值多項式實際上比較方便的作法不是解方程(3)求待定系數,而是先構造一組基函數(x?x)L(x?x)(x?x)L(x?x)0i?1i+1nl(x)=i(x?x)L(x?x)(x?x)L(x?x)i0ii?1ii+1innx?xj=∏,(i=0,1,L,n)j=0xi?xjj≠il(x)是n次多項式,滿足i?0j≠ili(xj)=??1j=i令??nn?nx?x?jL
5、n(x)=∑∑yili(x)=yi?∏?(4)i==00i?j=0xi?xj??j≠i?上式稱為n次Lagrange插值多項式,由方程(3)解的唯一性,n+1個節(jié)點的n次Lagrange插值多項式存在唯一。1.1.3用Matlab作Lagrange插值Matlab中沒有現成的Lagrange插值函數,必須編寫一個M文件實現Lagrange插值。設n個節(jié)點數據以數組x0,y0輸入(注意Matlat的數組下標從1開始),m個插值點以數組x輸入,輸出數組y為m個插值。編寫一個名為lagrange.m的M文件:functiony=lagrange(x0,y0,x);n=len
6、gth(x0);m=length(x);fori=1:mz=x(i);s=0.0;fork=1:np=1.0;forj=1:nifj~=kp=p*(z-x0(j))/(x0(k)-x0(j));endends=p*y0(k)+s;endy(i)=s;end-176-1.2牛頓(Newton)插值在導出Newton公式前,先介紹公式表示中所需要用到的差商、差分的概念及性質。1.2.1差商定義設有函數f(x),x,x,x,L為一系列互不相等的點,稱012f(x)?f(x)ij(i≠j)為f(x)關于點x,x一階差商(也稱均差)記為f[x,x],即ijijx?xijf(x)
7、?f(x)ijf[x,x]=ijx?xij稱一階差商的差商f[x,x]?f[x,x]ijjkx?xik為f(x)關于點x,x,x的二階差商,記為f[x,x,x]。一般地,稱ijkijkf[x,x,L,x]?f[x,x,L,x]01k?112kx?x0k為f(x)關于點x,x,L,x的k階差商,記為01kf[x,x,L,x]?f[x,x,L,x]01k?112kf[x,x,L,x]=01kx?x0k容易證明,差商具有下述性質:f[x,x]=f[x,x]ijjif[x,x,x]=f[x,x,x]=f[x,x,x]ijkikjjik1.2.2Newton插