在 MATLAB 上查找矩阵的 m 线性独立列
Finding m-linearly independent columns of a matrix on MATLAB
让我们有一个线性系统 Ax<= b。为了找到这个多面体集合的一个顶点,我们需要选择 A 的 m 个线性无关列,并用相应的变量求解系统。如何使用 MATLAB 生成 all 个 m 线性无关列?然后我会找到我拥有的多面体的所有顶点。
我能想到的是:生成所有的(n,m)子集组合。一一排查。每当秩为 =m 时,采用这些解,因为它们具有完整的 m 秩。有没有更有效的方法?
要找到线性无关的列,您可以使用 eig
或 qr
。
对于eig
,特征值等于零表示非独立列
对于qr
,R矩阵对角线上的零表示非独立列
例如:
mat2 =
1 1 1
1 1 1
0 0 2
qr
给出
R =
-1.414213562373095 -1.414213562373095 -1.414213562373095
0 0 0
0 0 2.000000000000000
和eig
给出
ans =
2
0
2
让我们有一个线性系统 Ax<= b。为了找到这个多面体集合的一个顶点,我们需要选择 A 的 m 个线性无关列,并用相应的变量求解系统。如何使用 MATLAB 生成 all 个 m 线性无关列?然后我会找到我拥有的多面体的所有顶点。
我能想到的是:生成所有的(n,m)子集组合。一一排查。每当秩为 =m 时,采用这些解,因为它们具有完整的 m 秩。有没有更有效的方法?
要找到线性无关的列,您可以使用 eig
或 qr
。
对于eig
,特征值等于零表示非独立列
对于qr
,R矩阵对角线上的零表示非独立列
例如:
mat2 =
1 1 1
1 1 1
0 0 2
qr
给出
R =
-1.414213562373095 -1.414213562373095 -1.414213562373095
0 0 0
0 0 2.000000000000000
和eig
给出
ans =
2
0
2