最小二乘法的擬合,最小二乘法曲線擬合公式

2021-03-19 18:20:16 字數 4954 閱讀 5406

1樓:no6zp敻

對給定資料點集合,在取定的函式類中,求,使誤差的平方和最小,。從幾何意義上講,就是尋求與給定點集的距離平方和為最小的曲線y=p(x)。函式p(x)稱為擬合函式或最小二乘解,求擬合函式p(x)的方法稱為曲線擬合的最小二乘法。

最小二乘法的矩陣形式

最小二乘法的矩陣形式為:

其中 為 的矩陣, 為 的列向量, 為 的列向量。如果 (方程的個數大於未知量的個數),這個方程系統稱為矛盾方程組(over determined system),如果 (方程的個數小於未知量的個數),這個系統就是under determined system。

正常來看,這個方程是沒有解的,但在數值計算領域,我們通常是計算 ,解出其中的 。比較直觀的做法是求解 ,但通常比較低效。其中一種常見的解法是對 進行qr分解( ),其中 是 正交矩陣(orthonormal matrix), 是 上三角矩陣(upper triangular matrix),則有

用matlab命令 x=r\(q\b)可解得 。

最小二乘法的matlab實現

① 一次函式線性擬合使用polyfit(x,y,1)

②多項式函式線性擬合使用 polyfit(x,y,n),n為次數

擬合曲線

x=[0.5,1.0,1.5,2.0,2.5,3.0],

y=[1.75,2.45,3.81,4.80,7.00,8.60]。

解:matlab程式如下:

x=[0.5,1.0,1.5,2.0,2.5,3.0];

y=[1.75,2.45,3.81,4.80,7.00,8.60];

p=polyfit(x,y,2)

x1=0.5:0.5:3.0;

y1=polyval(p,x1);

plot(x,y,'*r',x1,y1,'-b')

計算結果為:

p =0.5614 0.8287 1.1560

即所得多項式為y=0.5614x^2+0.8287x+1.15560

③非線性函式使用

lsqcurvefit(fun,x0,x,y)

a=nlinfit(x,y,fun,b0)

最小二乘法在交通運輸學中的運用

交通發生**的目的是建立分割槽產生的交通量與分割槽土地利用、社會經濟特徵等變數之間的定量關係,推算規劃年各分割槽所產生的交通量。因為一次出行有兩個端點,所以我們要分別分析一個區生成的交通和吸引的交通。交通發生**通常有兩種方法:

迴歸分析法和聚類分析法。

迴歸分析法是根據對因變數與一個或多個自變數的統計分析,建立因變數和自變數的關係,最簡單的情況就是一元迴歸分析,一般式為:y=α+βx式中y是因變數,x是自變數,α和β是迴歸係數。若用上述公式**小區的交通生成,則以下標 i 標記所有變數;如果用它研究分割槽交通吸引,則以下標 j 標記所有變數。

而運用公式的過程中需要利用最小二乘法來求解,上述公式中的迴歸係數根據最小二乘法可得:

其中,式中的x拔是規劃年的自變數值,y拔是規劃年分割槽交通生成(或吸引)**值。

matlab最小二乘法曲線擬合怎麼取

2樓:匿名使用者

曲線擬合

已知離散點上的資料集,即已知在點集上的函式值,構造一個解析函式(其圖形為一曲線)使在原離散點上儘可能接近給定的值,這一過程稱為曲線擬合。最常用的曲線擬合方法是最小二乘法,該方法是尋找函式使得最小。

matlab函式:p=polyfit(x,y,n)

[p,s]= polyfit(x,y,n)

說明:x,y為資料點,n為多項式階數,返回p為冪次從高到低的多項式係數向量p。x必須是單調的。矩陣s用於生成**值的誤差估計。(見下一函式polyval)

多項式曲線求值函式:polyval()

呼叫格式: y=polyval(p,x)

[y,delta]=polyval(p,x,s)

說明:y=polyval(p,x)為返回對應自變數x在給定係數p的多項式的值。

[y,delta]=polyval(p,x,s) 使用polyfit函式的選項輸出s得出誤差估計ydelta。它假設polyfit函式資料輸入的誤差是獨立正態的,並且方差為常數。則ydelta將至少包含50%的**值。

練習:如下給定資料的擬合曲線,x=[0.5,1.0,1.5,2.0,2.5,3.0],

y=[1.75,2.45,3.81,4.80,7.00,8.60]。

解:matlab程式如下:

x=[0.5,1.0,1.5,2.0,2.5,3.0];

y=[1.75,2.45,3.81,4.80,7.00,8.60];

p=polyfit(x,y,2)

x1=0.5:0.05:3.0;

y1=polyval(p,x1);

plot(x,y,'*r',x1,y1,'-b')

計算結果為:

p =0.5614 0.82871.1560

即所得多項式為y=0.5614x^2+0.08287x+1.15560

polyfit函式是matlab中用於進行曲線擬合的一個函式。曲線擬合:已知離散點上的資料集,即已知在點集上的函式值,構造一個解析函式(其圖形為一曲線)使在原離散點上儘可能接近給定的值。

解釋1  用法 polyfit(x,y,n ) ;用多項式求過已知點的表示式,其中x為源資料點對應的橫座標,可為行向量、矩陣,y為源資料點對應的縱座標,可為行向量、矩陣,n為你要擬合的階數,一階直線擬合,二階拋物線擬合,並非階次越高越好,看擬合情況  matlab polyfit 做出來的值從左到右表示從高次到低次的多項式係數  給個例子一看就知道了  x = (0: 0.1:

2.5)';  y = erf(x);  p = polyfit(x,y,6)  p =  0.0084 -0.

0983 0.4217 -0.7435 0.

1471 1.1064 0.0004  則y=0.

0084x^6-0.0983x^5+0.4217x^4-0.

7435x^3+0.1471x^2+1.1064x+0.

0004  解釋2:  matlab軟體提供了基本的曲線擬合函式的命令.  多項式函式擬合:a=polyfit(xdata,ydata,n)  其中n表示多項式的最高階數,xdata,ydata為將要擬合的資料,它是用陣列的方式輸入.輸出引數a為擬合多項式y=a1xn+...

+anx+a n+1的係數  多項式在x處的值y可用下面程式計算.  y=polyval(a,x,m)  線性:m=1, 二次:m=2, …  polyfit的輸出是一個多項式係數的行向量。

為了計算在xi資料點的多項式值,呼叫matlab的函式polyval。  例:  x=0:

0.1:1; y=[-0.

447 1.978 3.28 6.

16 7.08 7.34 7.

66 9.56 9.489.

30 11.2];

polyfit用法示例結果

a=polyfit(x,y,2)  z=polyval(a,x);  plot(x,y,'r*',x,z,'b')  釋疑:  在不少書中和論壇上,polyfit被誤寫作「ployfit」,使得很多初學者誤解,認為自己安裝的matlab軟體出錯,無法找到這樣的函式。只要注意拼寫正確即可。

同樣地,polyval函式也易被誤寫為「ployval」。

最小二乘法曲線擬合公式

3樓:匿名使用者

老弟,公式打不出來的

一般都是用matlab搞定的,它裡面有現成的函式供使用的

典型程式解析:

x=[0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1];%input xi data

y=[1.978 3.28 6.

16 7.08 7.34 7.

66 9.56 9.48 9.

30 11.2]; % input yi data

n=2; % polynomial order

p=polyfit(x, y, n)% polyfit 的輸出是一個多項式係數的行向量(擬合二項式的係數)

ezplot('-9.8108*x*x+20.1293*x-0.0317')%對擬合的函式作圖

xi=linspace(0,1,100); % x-axis data for plotting

z=polyval(p, xi);% 為了計算在xi資料點的多項式值,呼叫matlab的函式polyval

plot(x,y, 'o' ,x,y,xi,z,':')%在同一個圖形裡看他們的擬合程度

典型例題:對以下資料分別作二次,三次多項式擬合,並畫出圖形.

x=1:16;

y=[4, 6.4, 8, 8.4, 9.

28, 9.5, 9.7, 9.

86, 10, 10.2, 10.32, 10.

42, 10.5, 10.55, 10.

58, 10.6];

源程式:二次多項式擬合

x=1:1:16;

y=[4, 6.4, 8, 8.4, 9.

28, 9.5, 9.7, 9.

86, 10, 10.2, 10.32, 10.

42, 10.5, 10.55, 10.

58, 10.6];

a=polyfit(x,y,2)

a =-0.0445 1.0711 4.3252

ezplot('-0.0445*x^2+1.0711*x+4.3252')

三次多項式擬合

x=1:1:16;

y=[4, 6.4, 8, 8.4, 9.

28, 9.5, 9.7, 9.

86, 10, 10.2, 10.32, 10.

42, 10.5, 10.55, 10.

58, 10.6];

a=polyfit(x,y,3)

a =0.0060 -0.1963 2.1346 2.5952

ezplot('0.0060*x^3-0.1963*x^2+2.1346*x+2.5952')

有關matlab程式設計最小二乘法圓擬合的問題

第一步,根據已知點,描圖x y plot x,y,p 第二步,根據已知點擬合圓的一般式方程,利用公式求出圓心和半徑首先,用方程x 2 y 2 dx ey f 0,擬合出其係數d e f,求出圓心 d 2,e 2 半徑0.5 d 2 e 2 4f 第三步,根據圓的引數方程,求出x,y的點,描點plot...

VB6擬合直線,VB 最小二乘法線性擬合

兩個陣列中的資料擬合一條直線 這個有多少可能是一條直線,曲線還差不多 用vb編寫,根據六組座標資料能自動擬合一條直線,並且顯示在窗體中,包括表示式 我用的是最小二乘法擬合,這種方式在資料較少 較離散的情況下可能偏差較大。不知道你用來幹嘛,個人建議儘量多取資料,就算是其他方法也是資料越多越準確。不過用...

什麼是最小二乘原理,什麼是最小二乘法及其原理?

最小二乘法是一種數學優化技術 它通過最小化誤差的平方和尋找資料的最佳函式匹配。最小二來乘法是一種數自學優化技術,它通過bai最小化誤差的平方du 和找到一組數zhi據的最dao 佳函式匹配。最小二乘法是用最簡的方法求得一些絕對不可知的真值,而令誤差平方之和為最小。最小二乘法通常用於曲線擬合。很多其他...