一、超定方程组
超定方程组是指方程个数大于未知量个数的方程组。对于方程组
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
\begin{array}{l} E(\mathbf{x})=\|\mathbf{A} \mathbf{x}-\mathbf{b}\|^{2} \\ =(\mathbf{A} \mathbf{x}-\mathbf{b})^{T}(\mathbf{A} \mathbf{x}-\mathbf{b}) \\ =\left(\mathbf{x}^{\mathrm{T}} \mathbf{A}^{\mathrm{T}}-\mathbf{b}^{\mathrm{T}}\right)(\mathbf{A} \mathbf{x}-\mathbf{b}) \\ =\mathbf{x}^{\mathrm{T}} \mathbf{A}^{\mathrm{T}} \mathbf{A} \mathbf{x}-\mathbf{b}^{\mathrm{T}} \mathbf{A} \mathbf{x}-\mathbf{x}^{\mathrm{T}} \mathbf{A}^{\mathrm{T}} \mathbf{b}+\mathbf{b}^{\mathrm{T}} \mathbf{b} \\ =\mathbf{x}^{\mathrm{T}} \mathbf{A}^{\mathrm{T}} \mathbf{A} \mathbf{x}-\left(\mathbf{A}^{\mathrm{T}} \mathbf{b}\right)^{\mathrm{T}} \mathbf{x}-\left(\mathbf{A}^{\mathrm{T}} \mathbf{b}\right)^{\mathrm{T}} \mathbf{x}+\mathbf{b}^{\mathrm{T}} \mathbf{b} \end{array}
E(x)=∥Ax−b∥2=(Ax−b)T(Ax−b)=(xTAT−bT)(Ax−b)=xTATAx−bTAx−xTATb+bTb=xTATAx−(ATb)Tx−(ATb)Tx+bTb令
E
(
x
)
E(\mathbf{x})
E(x)对
x
x
x一阶导数为0:
∂
E
∂
x
=
2
A
T
A
x
−
2
A
T
b
=
0
x
=
(
A
T
A
)
−
1
A
T
b
\begin{array}{c} \frac{\partial E}{\partial \mathbf{x}}=2 \mathbf{A}^{\mathbf{T}} \mathbf{A} \mathbf{x}-2 \mathbf{A}^{\mathrm{T}} \mathbf{b}=0 \\ \mathbf{x}=\left(\mathbf{A}^{T} \mathbf{A}\right)^{-1} \mathbf{A}^{T} \mathbf{b} \end{array}
∂x∂E=2ATAx−2ATb=0x=(ATA)−1ATb这样,求解最小二乘问题只需求解一个线性方程组即可,不再需要像梯度下降那样迭代了。
矩阵求导可以参考:
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的最小二乘解。文章来源:https://www.toymoban.com/news/detail-453290.html
案例:求单应性矩阵的matlab代码【原文连接】文章来源地址https://www.toymoban.com/news/detail-453290.html
% 返回值 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
到了这里,关于矩阵最小二乘法问题求解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!