フルランクのNxM
行列があると仮定します。ここで、 。列を(次元で)で表すと、行列は次のように記述できます。A
M>N
C_i
Nx1
A = [C_1, C_2, ..., C_M]
元の行列の最初の線形独立列を取得して、行列式がゼロ以外の可逆行列であるA
新しいNxN
行列を作成するにはどうすればよいですか。B
B = [C_i1, C_i2, ..., C_iN]
{i1, i2, ..., iN}
matlabまたはpythonnumpyでインデックスを見つけるにはどうすればよいですか?これは、特異値分解を使用して実行できますか?コードスニペットは大歓迎です。
編集:これをより具体的にするために、次のPythonコードを検討してください
from numpy import *
from numpy.linalg.linalg import det
M = [[3, 0, 0, 0, 0],
[0, 0, 1, 0, 0],
[0, 0, 0, 0, 1],
[0, 2, 0, 0, 0]]
M = array(M)
I = [0,1,2,4]
assert(abs(det(M[:,I])) > 1e-8)
N
したがって、行列Mが与えられると、線形独立な列ベクトルのセットのインデックスを見つける必要があります。