3

n > m の amxn 長方形行列 A があります。A のランク r <= m が与えられると、簡約 QR 分解により、mxr 次元の行列 Q と rxn 次元の行列 R が得られます。Q の列は、A の範囲の正規直交基底です。R は上三角になりますが、階段状になります。ピボットを持つ R の列は、A の独立した列に対応します。

numpy.linalg から qr 関数を適用すると (同じように思われる scipy.linalg にもこの関数のバージョンがあります)、mxm 次元の行列 Q と mxn 次元の R を返します。行列 A は m 未満です。これは、Q の列が Re^m の正規直交基底である「完全な」QR 分解のようです。numpy.linalg;scipy.linalg の関数 qr によって返されるこの R 行列を通じて、A の独立した列を識別することは可能ですか?

4

1 に答える 1

1

非ゼロである R の対角要素をチェックします。

import numpy as np
min_tol = 1e-9
A = np.array([[1,2,3],[4,3,2],[1,1,1]])
print("Matrix rank of: {}".format(np.linalg.matrix_rank(A)))
Q,R = np.linalg.qr(A)
indep = np.where(np.abs(R.diagonal()) >  min_tol)[0]
print(A[:, indep])
print("Independent columns are: {}".format(indep))

ここも参照してください: 共分散行列で縮退した行/列を見つける方法

于 2014-08-24T20:47:16.977 に答える