




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
MathematicsLaboratory阮小娥博士ExperimentsinMathematics數學實驗在實際問題中,我們常常會遇到下列問題(1)變量間存在函數關系,但只能給出一離散點列上的值.例如,從實驗中得到一個數據表,或是一組觀測數據.(2)變量間的函數關系可以表示,但計算復雜,只能計算特殊點的函數值.例如,求指數函數、對數函數、三角函數、反三角函數值等.為了研究自變量與因變量間的變化關系,我們需要建立變量間的函數關系,從而可以計算原始數據以外需要處的值.解決這類問題的方法:數據擬合、數據插值實驗13人口數量預測模型實驗2、掌握在最小二乘意義下數據擬合的理論和方法.1、學會用MATLAB軟件進行數據擬合3、通過對實際問題的分析和研究,初步掌握建立數據擬合數學模型的方法實驗目的據人口統計年鑒,知我國從1949年至1994年人口數據資料如下:(人口數單位為:百萬)(1)在直角坐標系上作出人口數的圖象。(2)建立人口數與年份的函數關系,并估算1999年的人口數。實驗問題年份
1949
1954
1959
1964
1969
人口數
541.67
602.66
672.09704.99
806.71
年份1974
1979
1984
1989
1994人口數
908.59
975.421034.75
1106.76
1176.74
如何確定a,b?線性模型1曲線擬合問題的提法:
已知一組(二維)數據,即平面上的n個點),(iiyx,
ixni,,,2,1L=互不相同,尋求一個函數(曲線))(xfy=,使)(xf在某種準則下與所有數據點最為接近,即曲線擬合得最好,如圖:
xy0++++++++一、曲線擬合確定f(x)使得
達到最小
最小二乘準則
2.用什么樣的曲線擬合已知數據?常用的曲線函數系類型:(1)畫圖觀察(2)理論分析指數曲線:
雙曲線(一支):
多項式:
直線:
3擬合函數組中系數的確定二、人口預測的線性模型
對于開始提出的實驗問題,代如數據,計算得從而得到人口數與年份的函數關系為把x=1999代如,估算出1999年的人口數為y=1252.1(百萬)=12.52億1999年實際人口數量為12.6億。線性預測模型英國人口學家Malthus根據百余年的人口統計資料,于1798年提出了著名的人口自然增長的指數增長模型。三、人口預測的Malthus模型基本假設
:人口(相對)增長率r
是常數x(t)~時刻t的人口,t=0時人口數為x0指數增長模型實際中,常用1.由前100年的數據求出美國的人口增長Malthus模型。2.預測后100年(每隔10年)的人口狀況。3.根據預測的人口狀況和實際的人口數量,討論人口模型的改進情況。美國1790年-1980年每隔10年的人口記錄226.5204.0179.3150.7131.7123.2106.592.076.062.9人口(百萬)1980197019601950194019301920191019001890年份50.238.631.423.217.112.99.67.25.33.9人口(百萬)1880187018601850184018301820181018001790年份例1解:取得最小值.其中,表示人口數量。表示年份,解方程組:即得參數的值.使得問題轉化為求參數%prog41.m%%Thisprogramistopredictthenumberofpopulation%formatlongt1=[1790;1800;1810;1820;1830;1840;1850;1860;1870;1880];t2=[1890;1900;1910;1920;1930;1940;1950;1960;1970;1980];x1=[3.9;5.3;7.2;9.6;12.9;17.1;23.2;31.4;38.6;50.2];x2=[62.9;76.0;92.0;106.5;123.2;131.7;150.7;179.3;204.0;226.5];lnx1=log(x1);lnx2=log(x2);a12=sum(t1);a11=10;a21=a12;a22=sum(t1.^2);d1=sum(lnx1);d2=sum(lnx1.*t1);
A=[a11,a12;a21,a22];D=[d1;d2];
ab=inv(A)*D;
disp('a=');disp(ab(1));
disp('b=');disp(ab(2));
fori=1:10
xx1(i)=exp(ab(1)+ab(2)*t1(i));
end
fori=1:10
xx2(i)=exp(ab(1)+ab(2)*t2(i));
end
plot(t1,x1,'r*--',t1,xx1,'b+-',t2,x2,'g*--',t2,xx2,'m+-');
a=-49.79535457790735b=0.02859807120038仿真結果表明:人口增加的指數模型在短期內基本上能比較準確地反映人口自然增長的規律,但長期預測誤差很大,需要修正預測模型。擬合曲線原始數據曲線四、人口預測的Logistic模型人口增長到一定數量后,增長率下降的原因:資源、環境等因素對人口增長的阻滯作用且阻滯作用隨人口數量增加而變大假設r~固有增長率(x很小時)k~人口容量(資源、環境能容納的最大數量)r是x的減函數例1的Logistic模型留給同學們練習五、多項式擬合的Matlab指令a=polyfit(xdata,ydata,n)其中n表示多項式的最高階數
xdata,ydata為要擬合的數據,它是用向量的方式輸入。輸出參數a為擬合多項式
y=a1xn+…+anx+an+1的系數a=[a1,…,an,an+1]。多項式在x處的值y可用下面程序計算。
y=polyval(a,x)
用多項式擬合人口模型%Thisprogramistopredictthemodelofpopulationby4-degreepolynomial%%prog42.m%formatlongt1=[1790;1800;1810;1820;1830;1840;1850;1860;1870;1880];t2=[1890;1900;1910;1920;1930;1940;1950;1960;1970;1980];t=[t1;t2];P1=[3.9;5.3;7.2;9.6;12.9;17.1;23.2;31.4;38.6;50.2];P2=[62.9;76.0;92.0;106.5;123.2;131.7;150.7;179.3;204.0;226.5];P=[P1;P2];n=4;%Thedegreeofthefittingpolynomial%[a,s]=polyfit(t1,P1,n);y=polyval(a,t);%aisthecoefficientsvectorfromn-degreeto0-degree%plot(t,P,'r*--',t,y,'b+-');23a=1.0e+006*-0.000000000000140.00000000107892-0.000003048785950.00381927346813-1.79012132225427仿真結果表明,人口增加的模型用多項式擬合能比較準確地反映人口自然增長的規律,對長期預測具有指導意義。例2:海底光纜線長度預測模型某一通信公司在一次施工中,需要在水面寬為20m的河溝底沿直線走向鋪設一條溝底光纜.在鋪設光纜之前需要對溝底的地形做初B2468101214161820986420ADC探測到一組等分點位置的深度數據如下表所示.25步探測,從而估計所需光纜的長度,為工程預算提供依據.基本情況如圖所示.10.9310.809.818.867.957.959.1510.2211.2912.6113.32201918171615141312111013.2812.2611.1810.139.058.027.967.968.969.01深度(m)9876543210分點21個等分點處的深度(1)預測通過這條河溝所需光纜長度的近似值.(2)作出鋪設溝底光纜的曲線圖.解:用12次多項式函數擬合光纜走勢的曲線圖如下仿真結果表明,擬合曲線能較準確地反映光纜的走勢圖.Thelengthofthelabelis
L=26.3809(m)假設所鋪設的光纜足夠柔軟,在鋪設過程中光纜觸地走勢光滑,緊貼地面,并且忽略水流對光纜的沖擊.%prog45.mThisprogramistofitthedatabypolynomial%formatlongt=linspace(0,20,21);x=linspace(0,20,100);P=[9.01,8.96,7.96,7.97,8.02,9.05,10.13,11.18,12.26,13.28,13.32,12.61,11.29,10.22,9.15,7.90,7.95,8.86,9.81,10.80,10.93];[a,s]=polyfit(t,P,12);yy=polyval(a,x);plot(x,yy,'r*--',t,P,'b+-');L=0;fori=2:100L=L+sqrt((x(i)-x(i-1))^2+(yy(i)-yy(i-1))^2);enddisp('ThelengthofthelabelisL=');disp(L);formatlongt=linspace(0,20,21);x=linspace(0,20,100);P=[9.01,8.96,7.96,7.97,8.02,9.05,10.13,11.18,12.26,13.28,13.32,12.61,11.29,10.22,9.15,7.90,7.95,8.86,9.81,10.80,10.93];n=input(‘n=’)%通過鍵盤輸入擬合次數[a,s]=polyfit(t,P,n);yy=polyval(a,x);p1=polyval(a,t);d=norm(P-p1)%計算擬合誤差plot(x,yy,'r*--',t,P,'b+-');L=0;fori=2:100L=L+sqrt((x(i)-x(i-1))^2+(yy(i)-yy(i-1))^2);enddisp('ThelengthofthelabelisL=');disp(L);六、最小二乘曲線擬合有一組數據xi,yi(i=1,2,…,n)滿足某一函數原型,其中a為待定系數向量,求出一組待定系數的值使得目標函數最小:最小二乘曲線擬合函數lsqcurvefit的調用格式:[a,Jm]=lsqcurvefit(Fun,a0,x,y)Fun為原型函數的matlab表示,可以是M-函數或inline()函數a0為最優化初值x和y為原始輸入輸出數據向量a為返回的待定系數向量Jm為在待定系數下目標函數的值例3
已知數據可能滿足求滿足數據的最小二乘解a、b、c和d的值.x0.10.20.30.40.5y2.32012.64702.97073.28853.6008x0.60.70.80.91.0y3.90904.21474.51914.82325.1275輸入已知數據點:x=0.1:
0.1
:
1;y=[2.3201,2.6470,2.9707,3.2885,3.6008,3.9090,4.2147,4.5191,4.8232,5.1275];編寫函數functiony=f3(a,x)y=a(1)*x+a(2)*x.^2.*exp(-a(3)*x)+a(4);待定系數求解a=lsqcurvefit('f3',[1;2;2;3],x,y);a'ans=2.45752.45571.44372.0720繪制曲線:>>y1=f3(a,x);plot(x,y,x,y1,’o’)插值問題:實驗14插值問題插值條件插值函數插值節點如果是多項式,則稱為插值多項式求插值函數的方法稱為插法…………[a,b]稱為插值區間如何構造P(x)?1、多項式插值法當n=0時,只有一個插值節點的情形當n=1時,有兩個插值節點的情形當n=2時,有三個插值節點的情形是否任意給定n+1個不同的插值節點都可以構造出滿足插值條件的插值多項式?由克萊姆法則知方程組有唯一解,即滿足(1.1)的插值多項式存在且唯一。插值多項式的存在唯一定理:在次數不超過n的多項式集合中,滿足插值條件的插值多項式是存在并且唯一的。拉格朗日(Lagrange)插值多項式表示插值多項式的最緊湊的方式是拉格朗日形式:
Lagrange插值多項式的優點在于不要求數據點是等間隔的,其缺點是數據點數不宜過大,通常不超過7個,否則計算工作量大且誤差大,計算不穩定。分段線性插值分段線性插值示意圖…………分段二次插值示意圖…………分段二次插值三次樣條插值函數定義對于區間[a,b]上給定的一個分劃如果函數S(x)在子區間上都是不超過3次的多項式,并且2階導數在內節點處連續,則稱為區間[a,b]上以為節點的三次樣條函數。對于函數,若還滿足插值條件:則稱為在區間上的三次樣條插值函數。是在飛機或輪船等的設計制造過程中為描繪出光滑的外形曲線(放樣)所用的工具.2、插值函數的MATLAB實現(1)interp1函數interp1函數的調用格式:y=interp1(x0,y0,x,method)其中:1)x0、y0為樣本點,y為插值點自變量值x對應的函數值。(2)method共有6種參數可供選擇,當省略method時,即默認為linear線性插值。線性插值:method=‘linear’三次樣條插值:method=‘spline’;立方插值:method=‘pchip’or‘cubic’例4已知某轉子流量計在100~1000mL/min流量范圍內,刻度值與校正值的關系如表所示.試用線性插值法計算流量計的刻度值為785時,實際流量為多少?刻度值校正值刻度值校正值100105.3600605.8200207.2700707.4300308.1800806.7400406.9900908.0500507.51000107.9解:Matlab計算程序如下:X=[100,200,300,400,500,600,700,800,900,1000];Y=[105.3,207.2,308.1,406.9,507.5,605.8,707.4,806.7,908.0,107.9];Xk=780;Yk=interp1(X,Y,Xk)執行結果:Yk=786.8400這里:X和Y分別表示樣本點的刻度值和校正值;
Xk和Yk分別表示插值點的刻度值和校正值。功能
三次樣條數據插值格式
y=spline(x0,y0,x)
與y=interp1(x0,y0,x,’spline’)等價,其中參數x0、y0、x,y的意義及要求與線性插值interp1中的完全一致。(2)spline函數例5對離散分布在y=exp(x)sin(x)函數曲線上的數據點進行樣條插值計算:
x=[024581212.817.219.920];y=exp(x).*sin(x);xx=0:0.25:20;yy=spline(x,y,xx);plot(x,y,'bo',xx,yy,'r*')例6
已知某型號飛機的機翼斷面下緣輪廓線上的部分數據如表所示:假設需要得到x
坐標每改變0.1時的y
坐標,
分別用兩種插值方法對機翼斷面下緣輪廓線上的部分數據加細,并作出插值函數的圖形.xy0031.251.772.092.1112.0121.8131.2141.0151.6程序如下:x=[0,3,5,7,9,11,12,13,14,15]y=[0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.0,1.6]xi=[0:0.1:15]yi=interp1(x,y,xi,'spline')zi=spline(x,y,xi)plot(xi,yi,’bO’,xi,zi,’r*’)(3)lagrange插值函數function
y=lagrange(x0,y0,x)ii=1:length(x0);y=zeros(size(x));fori=iiij=find(ii~=i);y1=1;forj=1:length(ij),y1=y1.*(x-x0(ij(j)));endy=y+y1*y0(i)/prod(x0(i)-x0(ij));end例7對進行Lagrange插值x0=-1+2*[0:10]/10;y0=1./(1+25*x0.^2);x=-1:0.01:1;y=lagrange(x0,y0,x);ya=1./(1+25*x.^2);
plot(x,ya,'*',x,y,'O')3、二維網格數據的插值問題(1)二維插值函數interp2的調用格式:zi=interp2(x0,y0,z0,xi,yi)zi=interp2(x0,y0,z0,xi,yi,
method)*臨近點插值:method=‘nearest’*線性插值:method=‘linear’(缺省算法)*三次樣條插值:method=‘spline’*立方插值:method=‘pchip’or‘cubic’例8
由二元函數獲得一些較稀疏的網格數據,對整個函數曲面進行各種插值,并比較插值結果%繪制已知數據的網格圖[x,y]=meshgrid(-3:0.6:3,-2:0.4:2);z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);surf(x,y,z);axis([-3,3,-2,2,-0.7,1.5])%默認線性插值算法進行插值[x1,y1]=meshgrid(-3:.2:3,-2:.2:2);z1=interp2(x,y,z,x1,y1);surf(x1,y1,z1),axis([-3,3,-2,2,-0.7,1.5])%立方和樣條插值z2=interp2(x,y,z,x1,y1,'cubic');z3=interp2(x,y,z,x1,y1,'spline');surf(x1,y1,z2),axis([-3,3,-2,2,-0.7,1.5])figure;surf(x1,y1,z3),axis([-3,3,-2,2,-0.7,1.5])[x,y]=meshgrid(-3:0.6:3,-2:0.4:2);z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);subplot(2,2,1);surf(x,y,z);axis([-3,3,-2,2,-0.7,1.5])[x1,y1]=meshgrid(-3:.2:3,-2:.2:2);z1=interp2(x,y,z,x1,y1);subplot(2,2,2);surf(x1,y1,z1),axis([-3,3,-2,2,-0.7,1.5])z2=interp2(x,y,z,x1,y1,'cubic');z3=interp2(x,y,z,x1,y1,'spline');subplot(2,2,3);surf(x1,y1,z2),axis([-3,3,-2,2,-0.7,1.5])subplot(2,2,4);surf(x1,y1,z3),axis([-3,3,-2,2,-0.7,1.5])畫在同一幅圖上作比較
前兩個差值算法誤差的比較z=(x1.^2-2*x1).*exp(-x1.^2-y1.^2-x1.*y1);surf(x1,y1,abs(z-z1)),axis([-3,3,-2,2,0,0.08])figure;surf(x1,y1,abs(z-z2)),axis([-3,3,-2,2,0,0.025])三個差值算法誤差的比較z=(x1.^2-2*x1).*exp(-x1.^2-y1.^2-x1.*y1);subplot(3,1,1);surf(x1,y1,abs(z-z1)),axis([-3,3,-2,2,0,0.18])subplot(3,1,2);surf(x1,y1,abs(z-z2)),axis([-3,3,-2,2,0,0.18])subplot(3,1,3);surf(x1,y1,abs(z-z3)),axis([-3,3,-2,2,0,0.18])(2)二維一般分布數據的插值問題griddata函數的調用格式:z=griddata(x0,y0,z0,x,y,method)
method=‘v4’:插值算法,公認效果較好臨近點插值:method=‘nearest’線性插值:method=‘linear’(缺省算法)三次樣條插值:method=‘spline’立方插值:method=‘cubic’例9
在x為[-3,3],y為[-2,2]矩形區域隨機選擇一組數據點,用’v4’與’cubic’插值法進行處理,并對誤差進行比較。%產生數據點x=-3+6*rand(200,1);y=-2+4*rand(200,1);z=(x.^2-2*x).*exp(-x.^2-y.^2-x.*y);plot(x,y,'x')%樣本點的二維分布
figure,plot3(x,y,z,'x'),axis([-3,3,-2,2,-0.7,1.5]),grid%cubic和v4算法[x1,y1]=meshgrid(-3:0.2:3,-2:0.2:2);z1=griddata(x,y,z,x1,y1,'cubic');subplot(2,2,1);surf(x1,y1,z1);axis([-3,3,-2,2,-0.7,1.5])z2=griddata(x,y,z,x1,y1,'v4');subplot(2,2,2);surf(x1,y1,z2);axis([-3,3,-2,2,-0.7,1.5])%誤差分析z0=(x1.^2-2*x1).*exp(-x1.^2-y1.^2-x1.*y1);subplot(2,2,3);surf(x1,y1,abs(z0-z1)),axis([-3,3,-2,2,0,0.15])subplot(2,2,4);surf(x1,y1,abs(z0-z2));axis([-3,3,-2,2,0,0.15])4、高維插值問題三維插值interp3函數的調用格式:三維網格[x,y,z]=meshgrid(x1,y1,z1)griddata3()三維非網格數據插值n維插值interpn函數n維網格[x1,x2,…,xn]=ndgrid[v1,v2,…,vn]griddatan()n維非網格數據插值interp3()、interpn()調用格式同interp2()一致griddata3()、griddatan()調用格式同griddata()一致例10
通過函數生成一些網格型樣本點,據此進行插值并給出插值誤差。[x,y,z]=meshgrid(-1:0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論