给定一个线性系统
M x = 0
,其中 M
是一个 m, n 矩阵,x
是一个具有 n 个条目的向量,有多种方法可以找到 x
的非平凡解,例如奇异值分解(SVD) )。就我而言,M
可能由多个独立的子系统组成,例如
M = [[M1, 0 ], [0,M2]]
在这种情况下,
x
有多个解,因为我们可以找到第一个系统的解,并将第二个系统的解设置为平凡的解,反之亦然。因此,我想找到一种方法,给定矩阵M
,分离独立系统,即找到所有“子矩阵”M_j
是否有一种常见的方法可以通过编程来执行此操作,例如使用QR分解?
假设 M = {M1, M2, Mn},其中每个 Mi 代表 M 的第 i 列,并且是 m 个实数元素的向量。假设 x = {x1, x2, ..., xm} 是 m 个实数元素的向量。假设 y = {y1, y2, ..., yn} 是由 n 个实数元素组成的已知向量。那么如果所有 Mi 都是线性独立的,对于给定的非零向量 y,方程
Mx = y
有唯一解x。如果并非所有 Mi 都是线性独立的,则要么无解,要么有无穷多个解。如果 n > m,则 Mi 不一定都是线性独立的。
可以选择任何xi并重新排列以获得
M'x' = y - xi*Mi
哪里
M' = {M1, ..., M(i-1), M(i+1), ..., Mn}
x' = {x1, ..., x(i-1), x(i+1), ..., xn}
然后尝试求解 x'。重复此操作,直到左侧矩阵与给定向量 x 元素的选定值的唯一解线性相关。然后,您的子矩阵将是剩余线性独立矩阵的列的任何分区。