SVD求解Ax=0Ax=0Ax=0(齐次线性方程组)
当你有一个矩阵AAA 且 Ax=0Ax=0Ax=0
并且A的行数多于列数(M行N列,M>N, M>>N)或者列数大于行数(M行N列,M<N, M<<N),这意味你有更多的方程式比你的未知数,大多数情况下,这意味着系统是过约束的,但可能存在解。
以下是求解该问题的步骤
使用奇异值分解(SVD)
对于矩阵A,进行奇异值分解 A=UΣVTA=U\Sigma V^TA=UΣVT
检查Σ\SigmaΣ的零奇异值
Σ\SigmaΣ是一个对角矩阵,其中的值是按降序排列的,对于Ax=0Ax=0Ax=0的解,你需要关心的是最小的奇异值(接近或者等于0的值)及其对应的右奇异向量。
取VTV^TVT的最后一行
这行对应于最小的奇异值,并且给出了 Ax=0Ax=0Ax=0 的一个解,这个向量 vvv 是 AAA 的零空间的基,这意味着 Av=0Av=0Av=0
为什么?
因为奇异值分解给出了 AAA 的列空间和行空间的正交基,其中最小的奇异值给出了 AAA 的零空间的一个基。
注意
- 如果最小的奇异值非常接近于0,则 Ax=0Ax=0Ax=0 有非零解。这些构成了 AAA 的零空间。
- 如果最小的奇异值不接近0,则唯一解是零向量。