齐次方程组(超定方程组)的最小二乘解,及利用其拟合空间平面
一、基础理论
齐次方程组形如:。在一些优化,拟合等问题中经常出现,我们常考虑方程多于未知数元数的情况------超定方程组。
首先对于平凡解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);
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
2020-10-13 《Hough变换及其在信息处理中的应用》电子书下载
2015-10-13 工厂模式、控制反转及依赖注入