一、基礎理論
齊次方程組形如:。在一些最佳化,擬合等問題中經常出現,我們常考慮方程多於未知數元數的情況------超定方程組。
首先對於平凡解x=0我們一般不感興趣,一般我們會尋求方程組的非零解。
如果x是方程組的一個解,那麼對於,也是齊次方程組的解,一個合理的假設是隻求滿足的解。
假設A的維數是m×n,一般的m>n(超定),那麼方程組存在精確解的條件是rank(A)<n------>即矩陣A列不滿秩。當沒有精確解的時候(rank(A) = n, A列滿秩),我們通常求其最小二乘解,描述為:
求使||Ax||最小化並滿足||x||=1的x。
先介紹一個引理,即對於一個酉陣或半酉陣p()和一個向量x(向量維數等於P列數),有:
將A進行精簡奇異值分解,令:
其中U和V為半酉陣,分別滿足
則:
另,若令:
則問題等效成求使||Dy||最小化並滿足||y||=1的y
需要說明的是對於當前問題,A列滿秩,則D是對角陣,V是酉陣(方陣)
在奇異值分解中D的對角線元素是遞減排列的,那麼只需去取=(0,0,......0,1),則;
,是A最小的奇異值
此時:
即x為V矩陣的最後一列,在此題背景下x為A‘A的最小特徵值對應的單位特徵向量。
示例:利用空間點擬合空間平面
有平面上的n個點的座標,擬合平面ax+by+cy+d=0
注:這裡不用ax+by+cy+1=0的形式擬合,形成一個Ax=b的非齊次方程組,然後透過廣義逆的方式求解,主要考慮到平面可能過原點等問題。
有m個方程:
用矩陣的方式表示成Ax=0的形式為;
透過上述方式可進行求解。
二、算例
matlab程式碼如下:
function n = get_plane(X) %% % X為平面上的點座標,大小為n×3矩陣 % n為平面的四維向量表示 %% [m,~] = size(X); a1 = ones(m,1); A = [X,a1]; [~,~,V] = svd(A,'econ'); n = V(:,4);
原文連結:齊次方程組(超定方程組)的最小二乘解,及利用其擬合空間平面