1. ホーム
  2. python

[解決済み] numpyを用いた行列の条件数

2022-03-01 03:16:33

質問

[Python 2.7 and numpy v1.11.1] 私は行列の条件数について調べていて、関数を使わずに行列の条件数を計算しようとしています。 np.linalg.cond() .

numpyのドキュメントによると、行列の条件数の定義は、"xのノルムをxの逆数のノルムに乗算したものです。

||x|| * ||x^-1||)

行列の場合

a = np.matrix([[1, 1, 1],
               [2, 2, 1],
               [3, 3, 0]])

print np.linalg.cond(a)

1.84814479698e+16

print np.linalg.norm(a) * np.linalg.norm(np.linalg.inv(a))

2.027453660713377e+17

私の計算の間違いはどこにあるのでしょうか?

ありがとうございます。

解決方法は?

フロベニウスノームの定義を使って条件を計算しようとしています。これは条件計算のオプション・パラメータです。

print(np.linalg.norm(a)*np.linalg.norm(np.linalg.inv(a)))
print(np.linalg.cond(a, p='fro'))

生成する

2.02745366071e+17
2.02745366071e+17