齐次方程组(超定方程组)的最小二乘解,及利用其拟合空间平面
一、基础理论
齐次方程组形如:。在一些优化,拟合等问题中经常出现,我们常考虑方程多于未知数元数的情况------超定方程组。
首先对于平凡解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);