最小二乘法拟合三维直线
在《高等數(shù)學(xué)》的書中給出了最小二乘法擬合直線的具體實(shí)例,但是那個(gè)例子是擬合二維直線的f(t)=at+b,那么三維直線怎么使用最小二乘法來(lái)擬合呢?我們先來(lái)看看《高等數(shù)學(xué)》書中的例子,由于任何實(shí)數(shù)的平方都是正數(shù)或零,因此我們可以考慮選取常數(shù)a,?b,使
?
M最小來(lái)保證每個(gè)偏差的絕對(duì)值都很小,這種根據(jù)偏差的平方和為最小的條件來(lái)選擇常數(shù)a,?b的方法叫做最小二乘法(Least?Square)。因?yàn)镸是平方和,所以M的最小值在導(dǎo)數(shù)等于零的時(shí)候取得,即:
?
根據(jù)這個(gè)條件計(jì)算得到的最小值就是最小二乘解。因?yàn)閿M合函數(shù)是二維直線方程f(t)=at+b是線性的,所以二維直線的擬合是線性最小二乘問(wèn)題。對(duì)于三維直線,如果選擇其代數(shù)方程,是兩個(gè)平面的交線來(lái)表達(dá)的:
?
可以看出待確定的參數(shù)有8個(gè),不是一個(gè)好辦法。可以采用直線的參數(shù)表達(dá),根據(jù)直線的對(duì)稱式方程導(dǎo)出直線的參數(shù)方程:
?
我們要做的是根據(jù)N個(gè)采樣點(diǎn)Pi確定參數(shù)方程的P和D,使所有采樣點(diǎn)到直線的距離的平方和最小。對(duì)于三維點(diǎn)到三維直線的距離我們可以使用矢量方法來(lái)計(jì)算,可以參考《點(diǎn)向直線投影》,
?
向量V為P到采樣點(diǎn)Pi的向量,向量D為直線的方向向量,是單位向量。V和D點(diǎn)乘得到V向D的投影長(zhǎng)度,即圖中紅色標(biāo)示部分的長(zhǎng)度l。則采樣點(diǎn)到直線的距離的平方是向量V的模的平方減去投影長(zhǎng)度l的平方。從而得到采樣點(diǎn)到直線的距離平方和方程:
?
參考“最小二乘法三維(k維)直線擬合http://www.whudj.cn/?p=72”可知,最小二乘法擬合的直線通過(guò)所有采樣點(diǎn)的中心點(diǎn)。即可以確定直線參數(shù)方程中的P。這樣最小二乘方程就是只有方向矢量的一個(gè)多元函數(shù)。使用類math_MultipleVarFunctionWithGradient來(lái)建立上述最小二乘方程:
?
其中成員變量myPoint是直線的中心點(diǎn),myPoints是所有的采樣點(diǎn)。最小二乘方程為確定直線參數(shù)方程中的方向矢量(dx,?dy,?dz)的三個(gè)變量方程。使用math_BFGS之類的非線性極值計(jì)算類來(lái)對(duì)這個(gè)最小二乘方程進(jìn)行求解。下面給出幾個(gè)測(cè)試用例:
?
綜上所述,擬合三維直線的最小二乘方程中點(diǎn)到直線的距離為點(diǎn)到直線的垂直距離,而書中二維直線擬合只是兩個(gè)y值之間的差值:
?
圖?點(diǎn)到直線的距離?(來(lái)自:https://zhuanlan.zhihu.com/p/36429715)
?
上述擬合過(guò)程也可看出三維直線的擬合是一個(gè)非線性的優(yōu)化問(wèn)題,處理這類問(wèn)題的一般步驟就是先建立目標(biāo)方程,再使用相關(guān)優(yōu)化求解類來(lái)對(duì)方程進(jìn)行求解。
?
總結(jié)
以上是生活随笔為你收集整理的最小二乘法拟合三维直线的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 单片机软件模拟串口
- 下一篇: Grafana添加星空背景