資源描述:
《數(shù)值計算方法第四講》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第四次上機(jī)function[f]=newton(x,y,x0)%求已知數(shù)據(jù)點的牛頓插值多項式%已知數(shù)據(jù)點的橫坐標(biāo)向量:x%已知數(shù)據(jù)點的縱坐標(biāo)向量:ysymst;if(length(x)==length(y))n=length(x);c(1:n)=0.0;elsedisp('x和y的維數(shù)不相等!');return;endf=y(1);y1=0;l=1;for(i=1:n-1)forj=i+1:ny1(j)=(y(j)-y(i))/(x(j)-x(i));endc(i)=y1(i+1);l=l*(t-x(i));f=f+c(i)*l;simplify(f);
2、y=y1;if(i==n-1)if(nargin==3)f=subs(f,'t',x0);elsef=collect(f);f=vpa(f,6);endendendend求均差矩陣(差商表的命令)f=ones(n,n);N=0;fori=1:n%求均差表forj=i:nifi==1f(j,1)=y(j);elsef(j,i)=(f(j,i-1)-f(j-1,i-1))/(x(j)-x(j-i+1));endendend只要合理的嵌入到程序里即可。補(bǔ)充內(nèi)容:第一個內(nèi)容,曲線擬合。上節(jié)課,我們學(xué)習(xí)了用一個多項式來擬合數(shù)據(jù),用polyfit(x,y,n)來實現(xiàn)
3、。具體如下:多項式擬合方法多項式曲線擬合的matlab函數(shù)polyfit(),多采用最小二乘法對給定點集進(jìn)行曲線擬合,其調(diào)用的格式為p=polyfit(x,y,n)其中,輸入量x,y是將要擬合的數(shù)據(jù)橫、縱坐標(biāo);n為要返回的多項式的節(jié)數(shù);p為擬合n階多項式的系數(shù)??磦€例子:x=[-pi:0.5:pi];y=sin(x);p=polyfit(x,y,4)%一個四次多項式來擬合曲線。但是,實際的問題中有時,需要把兩組數(shù)據(jù)之間的關(guān)系擬合成常用的指數(shù)、雙曲線、對數(shù)等一些函數(shù)形式,這時如何做呢?采用的方法是對數(shù)據(jù)進(jìn)行適當(dāng)?shù)淖儞Q,然后用多項式擬合命令進(jìn)行擬合.例子:x
4、=[12346810121416]y=[4,6.41,8.01,8.79,9.53,9.86,10.33,10.42,10.53,10.61]這些數(shù)據(jù)的離散圖如下:這些數(shù)據(jù)點是一個指數(shù)的趨勢,一般采用以自然對數(shù)e為底的指數(shù)函數(shù),即用y=a*e^(b*x)來擬合這些數(shù)據(jù)。如何確定ab呢?方法如下:對y=a*e^(b*x)兩邊取對數(shù)得到,lny=bx+lna顯然x與lny是線性關(guān)系;這樣,先對數(shù)據(jù)x,y進(jìn)行處理,然后用一個一次的多項式去擬合他,確定一次多項式的系數(shù),從而確定a,b.命令如下:x=[12346810121416];y=[4,6.41,8.01,
5、8.79,9.53,9.86,10.33,10.42,10.53,10.61];z=log(y);>>polyfit(x,z,1)ans=0.0450129544453521.801521005149228從而有b=0.045012954445352;a=exp(1.801521005149228);則指數(shù)函數(shù)就確定完了,圖形如下:接下來學(xué)習(xí)用matlab命令實現(xiàn)分段線性插值函數(shù),分段Hermite插值曲線,三次樣條函數(shù)插值如何實現(xiàn)。用命令yk=interp1(x,y,xk,’method’)來實現(xiàn)。1)參數(shù)x,y為維數(shù)相同的兩個向量,滿足y(i)=f(
6、x(i))(i=1,2….,n).2)yk是與xk對應(yīng)的函數(shù)值。3)method是有以下幾種選擇linear分段線性插值:用直線一次連接各樣本點.省略method時為默認(rèn)此項。pchip分段三次插值。spline三次樣條插值。例子>>t=0:0.001:10;>>z=sin(t);>>figure>>plot(t,z)>>holdon%生成sin(t)的曲線>>x=0:10;>>y=sin(x);%生成插值節(jié)點>>xi=0:0.5:10;>>yi=interp1(x,y,xi,'linear');%計算一些函數(shù)值(這個是插值函數(shù)的函數(shù)值)plot(x,y
7、,’ro’)%畫插值節(jié)點>>holdon>>plot(xi,yi)%畫分段線性插值函數(shù)圖象如下本節(jié)課的練習(xí)內(nèi)容是編Hermite和三次樣條函數(shù)插值算法。