如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
chapter2page.第二章多項式的內插法(PolynomialInterpolation)在本章中包含Matlab的m-filecoeff.mntpoly.mevalnt.mlagrange.mcoeffh.mhermite.mnevl.m(HYPERLINK\l"bk3"Neville'sAlgorithm)example42.m(HYPERLINK\l"bk4"example42)rhextrap.m(HYPERLINK\l"bk5"RichardsonExtrapolation)8.example21.m(HYPERLINK\l"naturalcubic"naturalcubicspline)example22.m(quadraticspline)ncspline.mncsplinex.m將須要的m-file之檔案夾加入搜尋路徑中path('d:\yeh\numerical',path)註:如果你有安裝MatlabNotebook要執行下列inputcells(綠色指令敘述)之前必須先執行上面的cell–[path(…)]藍色的內容是Matlab[outputcells]1.coeff.m--用來計算Newtoninterpolatingpolynomial的係數顯示coeff.m的內容typecoeff.mfunctionc=coeff(x,y,n)%togetthecoefficientsoftheNewtoninterpolatingpolynomial%c(:,1)=y';forj=2:nfori=j:nc(i,j)=(c(i,j-1)-c(i-1,j-1))/(x(i)-x(i-j+1));end%loopiend%loopj1-1.ntpoly.m--用來計算Newtoninterpolatingpolynomial(採用符號計算)顯示ntpoly.m的內容typentpoly.mfunctionpx=ntpoly(a,b)%px:Newtoninterpolatingpolynomial%%getthedivided-differencetablem=length(a);c=coeff(a,b,m);symswx=sym(a);y=sym(b);%m=length(x);nx=sym(zeros(1,m));%initializeforj=1:mnt=1;fork=1:j-1nt=nt*(w-x(k));end%forknx(j)=nt;end%forjpx=0;fork=1:mpx=px+c(k,k)*nx(k);end%fork%px=simplify(px);例題1:TofindtheNewtonInterpolatingPolynomialforthefollowingtable:x13/202f(x)313/435/3準備必要的參數n=4;x=[13/202];y=[313/435/3];C=coeff(x,y,n)C=3.00000003.25000.5000003.00000.16670.333301.6667-0.6667-1.6667-2.0000取出上面C矩陣主對角上的值,則polynomialp(x)=3+0.5(x-1)+0.3333(x-1)(x-1.5)-2(x-1)(x-1.5)x.下面我們直接用符號計算(Matlab/Symbolictoolbox)得到多項式n=4;x=[13/202];y=[313/435/3];pw=ntpoly(x,y)spw=simplify(pw)pw=5/2+1/2*w+1/3*(w-1)*(w-3/2)-2*(w-1)*(w-3/2)*wspw=3-10/3*w+16/3*w^2-2*w^32.evalnt.m--計算Newtoninterpolatingpolynomial在某個t點的值顯示evalnt.m的內容typeevalnt.mfunctionrs=evalnt(c,x,t,n)%togetthevalueoftheNewtoninterpolatingpolynomial%withcoefficientsinvectorcatsomepointt%temp=c(n);forj=n-1:-1:1temp=temp*(t-x(j))+c(j);endrs=temp;接著利用evalnt()來計算在t=1.6的值C=coeff(x,y,n);t=1.6;forj=1:nc