行列Aが与えられた場合、行列の等価性に現れ、 numpyまたはscipyでA = P [I_r、0; 0、0] Qを満たす可逆行列PおよびQを便利に取得することは可能ですか?
1 に答える
1
おそらく、特異値分解 (SVD) を実行してから、特異値をユニタリ行列の 1 つに掛けることができます。
http://en.wikipedia.org/wiki/Singular_value_decompositionで SVD の定義を参照してください。
基本的に、ユニタリ行列、対角行列、および別のユニタリ行列が得られます。対角行列には、rank(A) に等しい数の非ゼロ要素があります。
Pythonコードでは、
P, S, Q = numpy.linalg.svd(A)
for i, row in enumerate(Q):
row *= S[i]
numpy.linalg.svdについては、 http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.svd.htmlを参照してください。
P、Q はまさにあなたが望むものになります。ただし、そのような分解の独自の方法はないことに注意してください。
于 2013-10-18T19:24:12.323 に答える