- 擬合是已知點列,從整體上靠近它們,不要求曲線經過每個樣本點,但要保證誤差足夠小
- 已知一組數據,尋求一個y=f(x),使f(x)在某種准則下與所有數據點最為接近
- 擬合的准則是使yi與f(xi)的距離的平方和最小,稱為最小二乘准則
若函數對參數線性(參數僅以一次方形式出現,且不能乘以或除以其他任何參數,並不能出現參數的復合函數形式),則可以用擬合優度來衡量擬合的好壞,其值越接近於1,說明擬合的越好
若不能用擬合優度,就用SSE的大小來衡量,SSE越小越好
Matlab擬合工具箱:Curve Fitting Tool
輸入命令cftool
讀入x、y的數據,選擇合適的函數形式進行擬合
函數選擇原則:
當散點圖走勢是直線,優先選擇線性擬合,評價指標為SSE和R^2,SSE越小、R^2越大越好
其他的函數選擇條件是SSE越小越好,函數形式應當越簡單越好
例題:
year = 1790:10:2000; population = [3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,62.9,76.0,92.0,106.5,123.2,131.7,150.7,179.3,204.0,226.5,251.4,281.4]; plot(year,population,'o') cftool % 擬合工具箱 % 點擊Fit Options,修改非線性最小二乘估計法擬合的初始值(StartPoint), r修改為0.02,xm修改為500 % Generate Code生成createFit.m文件 % 復制第一句的function后邊語句 % function [fitresult, gof] = createFit(year, population) [fitresult, gof] = createFit(year, population) t = 2001:2030; xm = 342.4; r = 0.02735; predictions = xm./(1+(xm./3.9-1).*exp(-r.*(t-1790))); % 計算預測值(寫成點乘/點除) figure(2) plot(year,population,'o',t,predictions,'.') % 繪制預測結果圖
預測結果: