熊學(xué)亮 陳淑娟 湯萬龍
【摘要】 在科學(xué)實驗,統(tǒng)計研究以及一些日常應(yīng)用中,人們常常需要從一組測定的數(shù)據(jù)(例如N個點((xi,yi)(i = 0,1,…,n))去求得自變量x和因變量y的一個近似解表達(dá)式y(tǒng) = φ(x),這就是由給定的N個點(xi,yi)(i = 0,1,…,n)求數(shù)據(jù)擬合的問題. 解決數(shù)據(jù)擬合問題一個重要的方法就是最小二乘法,這個方法理論上的問題已經(jīng)成熟. 本文應(yīng)用最小二乘法,對新疆建筑氣象參數(shù)數(shù)據(jù)做曲線擬合,來發(fā)現(xiàn)數(shù)據(jù)變化的規(guī)律,進(jìn)行數(shù)據(jù)預(yù)測.
【關(guān)鍵詞】 最小二乘法 曲線擬合 Matlab
【基金項目】 2013年國家自然科學(xué)基金資助項目(51368059).
1. 用MATLAB求解擬合問題
最小二乘法做數(shù)據(jù)擬合在理論上已經(jīng)介紹,然而實際計算過程較為煩瑣,目前經(jīng)常用數(shù)學(xué)軟件處理計算問題,常用的有Mathmatical, Matlab等,這里我們用Matlab軟件做最小二乘擬合法處理實際計算問題.
1.1 用Matlab作線性最小二乘擬合[1-3]
(1)作多項式f(x) = akxk擬合,可利用已有程序:
p = polyfit(x,y,m)
(2)多項式在x處的值y的計算命令:y = polyval(a,x)
1.2 用Matlab作非線行最小二乘擬合
兩個求非線性最小二乘擬合的函數(shù):lsqcurvefit、lsqnonlin.
2. 實際應(yīng)用實例
下表為吐魯番市某年1月1日的部分氣象數(shù)據(jù)見表1,為找出干球溫度及地表溫度變化規(guī)律,需要找出相應(yīng)的數(shù)據(jù)擬合曲線.
這里用Matlab做最小二乘擬合. 作出干球溫度與地表溫度的逐時溫度值的曲線圖,并進(jìn)行觀察. 容易發(fā)現(xiàn),散點圖分布情況接近多項式函數(shù),可以結(jié)合Matlab編程,找出擬合曲線.
Matlab代碼如下:
>>Clear;
>>x=0:23
>>y1=[-7.9,-8.5,-9.2,-9.9,-10.5,-10.9,-11.1,-9.7,-8.0,-6.7,-5.7,
-5.0,-4.3,-3.6,-2.9,-2.5,-2.7,-3.1,-3.8,-4.5,-5.2,-6.0,-6.7,-7.4];
p=polyfit(x,y1,3);xi=linspace(0,23,100);z=polyval(p,xi);plot(x,y1,'o',xi,z,'k',x,y1,'b');legend('干球溫度原始數(shù)據(jù)','3階曲線');
>>p=polyfit(x,y1,6);xi=linspace(0,23,100);z=polyval(p,xi);plot(x,y1,'o',xi,z,'k',x,y1,'b');legend('干球溫度原始數(shù)據(jù)','6階曲線');
>>y2=[-13.1,-15.1,-17.0,-18.6,-19.7,-19.9,-19.2,-17.2,-13.9,-9.7,-5.2,-0.9,2.5,4.5,4.7,3.4,1.1,-1.9,-4.9,-7.7,-9.8,-11.3,-12.3,-13.2];
>>p=polyfit(x,y2,3);xi=linspace(0,23,100);z=polyval(p,xi);plot(x,y2,'+',xi,z,'k',x,y2,'b');legend('地表溫度原始數(shù)據(jù)','3階曲線');
>>p=polyfit(x,y2,6);xi=linspace(0,23,100);z=polyval(p,xi);plot(x,y2,'+',xi,z,'k',x,y2,'b');legend('地表溫度原始數(shù)據(jù)','6階曲線');
輸出圖像為:(加號為地表溫度曲線,圓點為干球溫度曲線)
結(jié)束語
由圖1和圖2進(jìn)行對比,圖3和圖4進(jìn)行對比,可以看出,在用最小二乘法的Matlab曲線擬合時,若擬合函數(shù)為多項式類,需要適當(dāng)調(diào)整最高次數(shù),才能找到最佳的逼近曲線. 根據(jù)曲線圖像與原始數(shù)據(jù)進(jìn)行對比,可見,曲線并沒有經(jīng)過所有原始數(shù)據(jù)所在點,從這里可以看出,用最小二乘法做曲線擬合與函數(shù)插值的區(qū)別,插值法要求過所有實驗數(shù)據(jù)點,最小二乘法只需求出最佳擬合曲線. 這樣就可以避免少數(shù)不符合規(guī)律的實驗數(shù)據(jù)被使用的問題.
【參考文獻(xiàn)】
[1]高照玲,周浩尚.蔣波 VC++6.0實現(xiàn)計算方法中的曲線擬合[J].農(nóng)業(yè)裝備與車輛工程,2011(11).
[2]王可,毛志伋.基于Matlab實現(xiàn)最小二乘曲線擬合[J].北京廣播學(xué)院學(xué)報(自然科學(xué)版),2005(02).
[3]何菊明,王芙.實驗數(shù)據(jù)的線性擬合及計算機處理[J]. 武漢工程大學(xué)學(xué)報,2008(01).