他們的***同點都是通過已知壹些離散點集M上的約束,求取壹個定義
在連續集合S(M包含於S)的未知連續函數,從而達到獲取整體規律的
目的,即通過"窺幾斑"來達到"知全豹"。
簡單的講,所謂擬合是指已知某函數的若幹離散函數值{f1,f2,…,fn},通
過調整該函數中若幹待定系數f(λ1, λ2,…,λ3), 使得該函數與已知點集的
差別(最小二乘意義)最小。如果待定函數是線性,就叫線性擬合或者
線性回歸(主要在統計中),否則叫作非線性擬合或者非線性回歸。表
達式也可以是分段函數,這種情況下叫作樣條擬合。
而插值是指已知某函數的在若幹離散點上的函數值或者導數信息,通
過求解該函數中待定形式的插值函數以及待定系數,使得該函數在給
定離散點上滿足約束。插值函數又叫作基函數,如果該基函數定義在
整個定義域上,叫作全域基,否則叫作分域基。如果約束條件中只有
函數值的約束,叫作Lagrange插值,否則叫作Hermite插值。
從幾何意義上將,擬合是給定了空間中的壹些點,找到壹個已知形式
未知參數的連續曲面來最大限度地逼近這些點;而插值是找到壹個(
或幾個分片光滑的)連續曲面來穿過這些點。
具體插值擬合的計算參考下面回復:
1)Matlab中如何作線性擬合/線性回歸/多元線性回歸?
:#FangQ(Qianqian.Fang@Dartmouth.Edu),2002/6/21, BigGreen/MathTools #
即用y=a*x+b來擬合壹組數據{{x1,y1},{x2,y2}…{xn,yn}}
matlab中使用polyfit
x=data(:,1);
y=data(:,2);
p=polyfit(x,y,1);
p(1)為斜率a,p(2)為截距b
多元線性回歸即用y=a1*x1+a2*x2+..+am*xm來擬合數據點{x1i,x2i,…xmi,yi}
(i=1~n)
|x11,x21,…xm1|
A=|x12,x22,…xm2|
|…………… |
|x1n,x2n,…xmn|
Y={y1,y2,y3,…,yn}'
則系數{a1,a2,…,am}'=pinv(A)*Y
在matlab中使用
coeff=A\Y
則可以得到最小二乘意義上的擬合系數
matlab默認只提供了多項式擬合的函數polyfit,對於其他稍微簡單
壹點的擬合,如標準的指數、對數、高階多項式擬合,都有解析公式,參見:
/LeastSquaresFitting.html
對於更加復雜的非線性函數,建議使用Mathematica或者DataFit
Mathematica中提供了Fit[],以及
<< Statistics`NonlinearFit`
NonlinearFit[],NonlinearRegress[]
可以擬合任意復雜的表達式。
DataFit可以自定義擬合模型,適用於復雜系統的擬合。