2021年6月5日 星期六

最小平方解法

 最小平方解法

源自於https://bime-matlab.blogspot.com/2006/11/104.html

最小平方法(英語:least squares method),又稱最小二乘法,是一種數學優化建模方法。 它通過最小化誤差的平方和尋找數據的最佳函數匹配。 利用最小平方法可以簡便的求得未知的數據,並使得求得的數據與實際數據之間誤差的平方和為最小


當一個系統之聯立方程式個數大於未知數之數目時,會形成過度確定性系統(overdetermined system)。此時,反矩陣法已無法應用,只能用左除法求解。但這種解如同多數解的過程一樣,必須尋最小平方的技巧,使解能夠以最接近所有點為準,成為一般所謂之回歸公式。茲以下面例子做介紹:

設有一方程式的關係式為y= a x1+b x2+c x3想適配下列資料:


y x1 x2 x3
3 2 3 1
6 3 -2 4
-5 -5 3 6
4 2 7 3
2 4 8 -7


依問題之需要,可利用rank指令執行如下:

由階數R1及R2觀之,兩者不相同,故無法以正常方式得解。然而利用左除法B=A\C仍可以得到相關係數,因此得到此函數為:

A=[2 3 1; 3 -2 4; -5 3 6; 2 7 3; 4 8 -7]

C=[3;6;-5;4;2]

A =

     2     3     1

     3    -2     4

    -5     3     6

     2     7     3

     4     8    -7

C =

     3

     6

    -5

     4

     2

>> R1=rank(A), R2=rank([A C])

R1 =     3

R2 =     4

>> B=A\C

B =

    1.4420

   -0.0676

    0.4352

y= 1.442 x1 -0.067601x2+0.4352 x3

然而,此結果並非其真實解,而是利用最小平方法求得。若以此解作驗證,即y=A*B,其結果為:


A*B
ans =
3.1163
6.2018
-4.8014
3.7163
2.1806

顯然與原值[ 3 6 -5 4 2]仍有誤差。只是因採用最小平方的關係,可以求得最接近之數。

最小平方的取法是將各數項之平方值之和以fmins求得最小值

J=Σi=15[ax1i+bx2i+cx3i-y]2

沒有留言:

張貼留言

2024_09 作業3 以Node-Red 為主

 2024_09 作業3  (以Node-Red 為主  Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker  2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...