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