3

行列Aが与えられた場合、行列の等価性に現れ、 numpyまたはscipyでA = P [I_r、0; 0、0] Qを満たす可逆行列PおよびQを便利に取得することは可能ですか?

4

1 に答える 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 に答える