最小二乘法求解超定方程的原理

假设

我们要求解一个方程 A X = 0 AX=0 AX=0
其中,A是一个 n ∗ m n*m nm的矩阵,X是一个 m ∗ 1 m*1 m1的向量
一般情况下,n>>m,这就是一个超定方程了,理论上无解,但是我们可以求得最小二乘意义下的解

求解过程

m i n ∣ ∣ A X ∣ ∣ 2 2 min||AX||^2_2 minAX22


∣ ∣ A X ∣ ∣ 2 2 = ( A X ) T ( A X ) = X T A T A X ||AX||^2_2=(AX)^T(AX)=X^TA^TAX AX22=(AX)T(AX)=XTATAX
此时令 B = A T A B=A^TA B=ATA,并且设B的特征值以及特征向量为 λ i , b i ⃗ \lambda_i,\vec{b_i} λi,bi ,此时可以得到几个结论

  1. X肯定可以表示为 X = ∑ 0 m α i b i ⃗ X= \sum_{0}^m{\alpha_i\vec{b_i}} X=0mαibi ,假设对应的特征值从大到小排列
  2. b i ⃗ × b j ⃗ = { 1 , i = j 0 , i ̸ = j \vec{b_i}\times \vec{b_j}=\begin{cases} 1,i=j \\ 0,i\not=j \end{cases} bi ×bj ={1,i=j0,i̸=j

所以
X T A T A X = X T B X = ( ∑ 0 m α i b i ⃗ ) T B ( ∑ 0 m α i b i ⃗ ) = ( ∑ 0 m α i b i ⃗ T ) ( ∑ 0 m α i λ i b i ⃗ ) = ∑ 0 m α i 2 λ i ≥ a m 2 λ m X^TA^TAX=X^TBX\\=(\sum_{0}^m{\alpha_i\vec{b_i}})^TB(\sum_{0}^m{\alpha_i\vec{b_i}}) \\=(\sum_{0}^m{\alpha_i\vec{b_i}^T})(\sum_{0}^m{\alpha_i\lambda_i\vec{b_i}}) \\=\sum_{0}^m{\alpha_i^2\lambda_i}\geq a_m^2\lambda_m XTATAX=XTBX=(0mαibi )TB(0mαibi )=(0mαibi T)(0mαiλibi )=0mαi2λiam2λm
当且仅当 X = ∑ 0 m α i b i ⃗ = α m b m ⃗ X= \sum_{0}^m{\alpha_i\vec{b_i}}=\alpha_m\vec{b_m} X=0mαibi =αmbm 时等号成立。

由于方程AX=0,乘上任意系数都成立,所以 X = b m ⃗ X=\vec{b_m} X=bm 即可。

你可能感兴趣的:(SLAM)