赞
踩
超定方程组是指方程个数大于未知量个数的方程组。对于方程组
A
x
=
b
Ax=b
Ax=b,
A
A
A为n×m矩阵,如果R列满秩,且n>m。则方程组没有精确解,此时称方程组为超定方程组。
在实验数据处理和曲线拟合问题中,求解超定方程组非常普遍。比较常用的方法是最小二乘法。
如果有向量
x
x
x使得下式的值达到最小,则称
x
x
x为上述超定方程的最小二乘解。
最小二乘法问题:
E
(
x
)
=
∥
A
x
−
b
∥
2
E(\mathbf{x})=\|\mathbf{A} \mathbf{x}-\mathbf{b}\|^{2}
E(x)=∥Ax−b∥2求使
E
(
x
)
E(\mathbf{x})
E(x)达到最小值时
x
x
x的值:
E
(
x
)
=
∥
A
x
−
b
∥
2
=
(
A
x
−
b
)
T
(
A
x
−
b
)
=
(
x
T
A
T
−
b
T
)
(
A
x
−
b
)
=
x
T
A
T
A
x
−
b
T
A
x
−
x
T
A
T
b
+
b
T
b
=
x
T
A
T
A
x
−
(
A
T
b
)
T
x
−
(
A
T
b
)
T
x
+
b
T
b
∂
E
∂
x
=
2
A
T
A
x
−
2
A
T
b
=
0
x
=
(
A
T
A
)
−
1
A
T
b
矩阵求导可以参考:
https://zhuanlan.zhihu.com/p/273729929
对于特殊的
A
x
=
0
Ax=0
Ax=0型超定方程组:
∂
E
∂
x
=
2
A
T
A
x
=
0
\frac{\partial E}{\partial \mathbf{x}}=2 \mathbf{A}^{\mathbf{T}} \mathbf{A} \mathbf{x}=0
∂x∂E=2ATAx=0通过以下方式获得最小二乘解:
[V,D] = eig(A'*A)
其中D是特征值对角矩阵(特征值沿主对角线降序),V是对应D特征值的特征向量(列向量)组成的特征矩阵,A’表示A的转置。其最小二乘解为V(1),即系数矩阵A最小特征值对应的特征向量就是超定方程组
A
x
=
0
Ax = 0
Ax=0的最小二乘解。
案例:求单应性矩阵的matlab代码【原文连接】
% 返回值 H 是一个3*3的矩阵 % pts1 和 pts2是2*4的坐标矩阵对应特征点的(x,y)坐标 n = size(pts1,2); A = zeros(2*n,9); A(1:2:2*n,1:2) = pts1'; A(1:2:2*n,3) = 1; A(2:2:2*n,4:5) = pts1'; A(2:2:2*n,6) = 1; x1 = pts1(1,:)'; y1 = pts1(2,:)'; x2 = pts2(1,:)'; y2 = pts2(2,:)'; A(1:2:2*n,7) = -x2.*x1; A(2:2:2*n,7) = -y2.*x1; A(1:2:2*n,8) = -x2.*y1; A(2:2:2*n,8) = -y2.*y1; A(1:2:2*n,9) = -x2; A(2:2:2*n,9) = -y2; [evec,~] = eig(A'*A); H = reshape(evec(:,1),[3,3])'; H = H/H(end); % make H(3,3) = 1
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。