h = a –bqc线性最小二乘问题 c语言,物理实验之最小二乘法 | 怎样学习大学物理小组 | 果壳网 科技有意思...
物理實驗中,數(shù)據(jù)處理經(jīng)常用到最小二乘法。當然最小二乘法用手算的話好麻煩啊。
大家可能已經(jīng)知道最小二乘法是什么了,這里也不多說了,就簡單提一下。
一、最小二乘法原理
線性的最小二乘法是用來產(chǎn)生最能代表一組數(shù)據(jù)的一個一次函數(shù),這里說的是最好的擬合,而不是完美的擬合。
例如這樣一個例子:
這里有三個數(shù)據(jù)點,A(x1,y1),B(x2,y2),C(x3,y3)。我們要找一條最能夠代表這三個點的直線。那如何找呢?
我們的想法是要使得誤差最小。可是什么是誤差?怎么代表誤差?
假設我們現(xiàn)在已經(jīng)把這條線找到了,比如是 y = f(x)。那么如果 A 點相對于直線的誤差是不是可以用 A' 和 A 的縱坐標之差來表示?這樣我們把所有的三個點的這些誤差加起來,是不是就可以代表所有點的總的誤差呢?
這里有個問題,但看一個點,這個方法沒有問題,但是如果是很多點,那么這個差值有正有負,加起來就可能會有相互抵消的。所有呢,我們的辦法是求這些誤差的平方和。
那么最小二乘法就是要這個誤差最小。Least squares 就是說要這個帶 squares 的式子最小。
至于如何使得這個最小,至少有兩種方法。一種是直接用微積分的知識,對所有未知的參量求偏導數(shù)并設為零,就可以求出參量了。另一種方法是用線性代數(shù)的方法,就是利用往空間上投影的方法。
當然,兩種方法都是課本上的公式了,具體求解的話,也就是要帶公式了。
不過呢,要是這個帖子只說這點內(nèi)容,就沒啥意義了對吧。
所以最好能討論一下從線性代數(shù)的角度,或者說從幾何的角度來看最小二乘法。
最小二乘法是要找到一條直線, y = c + d x。這樣的話,我們把數(shù)據(jù)帶進去,就會形成系列方程組,可以寫成矩陣的樣子:
但是,要知道,我們只有兩個待定系數(shù),所以這是過度確定的。一般是無解的。這就是我們前面說最小二乘法是在找最好的擬合,而不是完美的擬合的原因。
那么我們要怎么做呢?
現(xiàn)在有一組縱軸的數(shù)據(jù),
這組數(shù)據(jù)呢,就是一個 n 維空間的一個矢量。
而系數(shù)矩陣
呢,就像一個參考空間。
我們要做的呢,就是要把這個 n 維空間的矢量的末端到這個參考空間上的投影,這個投影就是最合適的擬合,也就是我們的最小二乘法的精要。
做個比喻。這就好比說我們有個平面,如果我們的數(shù)據(jù)是完全線性的,那么所有的數(shù)據(jù)都會落在這個平面內(nèi),但是,實際情況可能有所偏差,是的代表所有數(shù)據(jù)的點脫離了這個平面,那我們要找的那條曲線是什么呢?那自然是代表所有數(shù)據(jù)在這個點(或者說從起點出發(fā)的矢量)在這個平面內(nèi)的投影啦!
但,這不能算啊?我們要找到的是 c,d 的值啊?怎么算呢?
我們還有個
里面我們給 c 和 d 加了帽了~ 有帽表示這個只是個最好的擬合,但不一定是完美的~
那這些之間有什么關系呢?我們可以看前面的等式,比如用 A 表示系數(shù)矩陣,用 M 表示要求解的兩個參數(shù)(戴帽子哦)矩陣,還有一個 b 表示所有的代表縱坐標的數(shù)據(jù)矩陣。
好啦,書上說我們要求解的方程是
為嘛呢?我們做個變化
好嘛,這樣就可以理解幾何意義了。因為這里面右邊的是
一個投影算符作用在了 b 上!太好了,投影算符的作用就是把 b 在 A 空間內(nèi)投影!這樣數(shù)學就跟我們上面的意義的描述結合起來啦。所以對于最小二乘法,我們要做的是解這樣一個矩陣方程
不過這個跟用微積分做是一樣的,方程組一樣,結果更一樣。只是這樣可以看到一點從微積分來理解看不到的東西。
二、軟件處理
好了,最實用的部分。如何用軟件快速的來做最小二乘法的擬合呢?
我想大學里面可能教大家最多的是用 Origin,Sigmaplot 甚至 Excel 之類的軟件來做的。挺好的,總之能做出來就成。這些軟件里面呢,用的最廣的應該是 Origin,但是我更喜歡 Sigmaplot,因為 Sigmaplot 做出來的圖不需要做很大的調(diào)整就挺好看的,多圖排版什么的也很容易。作圖嘛,漂亮太重要了。
但是這里我們要說的不是 Sigmaplot,而是一款很多人聽說過但是沒用過的軟件,Mathematica。
可能有人要問,為什么我要用 Mathematica 這么專業(yè)的軟件啊?
說實話,Mathematica 這幾年發(fā)展下來,已經(jīng)不算是一款專業(yè)軟件了,它上手快,用起來簡單而優(yōu)雅。甚至 Mathematica 都有了 Home 版了!(這…… )
關于 Mathematica 的函數(shù)f作圖呢?參考 高數(shù)也要用 Mathematica —— 作圖一 這篇文章。
但數(shù)據(jù)處理這部分需要比較長的篇幅,所以請看怎樣學高數(shù)小組的這篇吧:
http://www.guokr.com/post/449185/
總結
以上是生活随笔為你收集整理的h = a –bqc线性最小二乘问题 c语言,物理实验之最小二乘法 | 怎样学习大学物理小组 | 果壳网 科技有意思...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是自动做市商?
- 下一篇: 法规标准-ECE R79标准解读