齐次方程组(超定方程组)的最小二乘解,及利用其拟合空间平面

一、基础理论
齐次方程组形如:。在一些优化,拟合等问题中经常出现,我们常考虑方程多于未知数元数的情况------超定方程组。

首先对于平凡解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);

原文链接:齐次方程组(超定方程组)的最小二乘解,及利用其拟合空间平面

posted @ 2024-10-13 20:53  rainbow70626  阅读(35)  评论(0编辑  收藏  举报