1.線性最小二乘法
曲線擬合問題的提法是刹泄,已知一組(二維)數(shù)據(jù),即平面上的
個點(diǎn)
期虾,
驴一,
互不相同,尋求一個函數(shù)(曲線)
使
在某種準(zhǔn)則下與所有數(shù)據(jù)點(diǎn)最為接近甚牲,即曲線擬合得最好义郑。
線性最小二乘法是解決曲線擬合最常用的方法,基本思路是丈钙,令:
其中是事先選定的一組線性無關(guān)的函數(shù)非驮,
是待定系數(shù)
。擬合準(zhǔn)則是使
著恩,與
的距離
的平方和最小院尔,稱為最小二乘準(zhǔn)則蜻展。
1.1.系數(shù)
的確定
記:
為求使
達(dá)到最小,只需利用極值的必要條件
邀摆,得到關(guān)于
的線性方程組:
即:
記:
方程組(2)可表為:
當(dāng)線性無關(guān)時纵顾,
列滿秩,
可逆栋盹,于是方程組(3)有唯一解:
1.2.函數(shù)
的選取
面對一組數(shù)據(jù)施逾,用線性最小二乘法作曲線擬合時,首要的例获、也是關(guān)鍵的一步是恰當(dāng)?shù)剡x取
容易確定汉额。若無法知道
與
之間的關(guān)系,通痴ヌ溃可以將數(shù)據(jù)
作圖蠕搜,直觀地判斷應(yīng)該用什么樣的曲線去作擬合。人們常用的曲線有:
(1)直線:
(2)多項(xiàng)式:(一般
收壕,不宜太高)
(3)雙曲線(一支):
(4)指數(shù)函數(shù):
對于指數(shù)曲線妓灌,擬合前需作變量代換,化為對的線性函數(shù)蜜宪。
已知一組數(shù)據(jù)虫埂,用什么樣的曲線擬合最好,可以在直觀判斷的基礎(chǔ)上圃验,選幾種曲線分別擬合掉伏,然后比較,看哪條曲線的最小二乘指標(biāo)最小澳窑。
2.最小二乘法的Matlab實(shí)現(xiàn)
2.1.解方程組方法
在上面的記號下斧散,
Matlab中的線性最小二乘的標(biāo)準(zhǔn)型為:
命令為:
例1 用最小二乘法求一個形如
的經(jīng)驗(yàn)公式,使它與下表所示的數(shù)據(jù)擬合照捡。
19 | 25 | 31 | 38 | 44 | |
---|---|---|---|---|---|
19.0 | 32.3 | 49.0 | 73.3 | 97.8 |
解:編寫程序如下
x=[19 25 31 38 44]';
y=[19.0 32.3 49.0 73.3 97.8]';
r=[ones(5,1),x.^2];
ab=r\y%求出最小二乘的系數(shù)
x0=19:0.1:44;
y0=ab(1)+ab(2)*x0.^2;
plot(x,y,'o',x0,y0,'r')
這里沒有用任何函數(shù)颅湘,筆者也是第一次知道反斜杠可以直接算出最小二乘算法的系數(shù)。
2.2.多項(xiàng)式擬合方法
如果取栗精,即用
次多項(xiàng)式擬合給定數(shù)據(jù)闯参,Matlab中有現(xiàn)成的函數(shù):
a=polyfit(x0,y0,m)
其中輸入?yún)?shù)為要擬合的數(shù)據(jù),
為擬合多項(xiàng)式的次數(shù)悲立,輸出參數(shù)
為擬合多項(xiàng)式
的系數(shù)
例2 某鄉(xiāng)鎮(zhèn)企業(yè) 1990-1996 年的生產(chǎn)利潤如下表
年份 | 1990 | 1991 | 1992 | 1993 | 1994 | 1995 | 1996 |
---|---|---|---|---|---|---|---|
利潤(萬元) | 70 | 122 | 144 | 152 | 174 | 196 | 202 |
試預(yù)測1997年和1998年的利潤:
解:做已知數(shù)據(jù)的散點(diǎn)圖:
x0=[1990 1991 1992 1993 1994 1995 1996];
y0=[70 122 144 152 174 196 202];
plot(x0,y0,'*')
發(fā)現(xiàn)該鄉(xiāng)鎮(zhèn)企業(yè)的年生產(chǎn)利潤幾乎直線上升鹿寨。因此,我們可以用作為擬合函數(shù)來預(yù)測該鄉(xiāng)鎮(zhèn)企業(yè)未來的年利潤薪夕。編寫程序如下:
x0=[1990 1991 1992 1993 1994 1995 1996];
y0=[70 122 144 152 174 196 202];
a=polyfit(x0,y0,1)
y97=polyval(a,1997)
y98=polyval(a,1998)
求得脚草,預(yù)測1997年的利潤為233.4286萬元,1998年的生產(chǎn)利潤是253.9286元原献。