2016-07-24 7 views
0

私は行列演算にpython numpyを使用しています。恒等行列の計算は予期せぬ結果をもたらしています - 標準恒等行列を取得していません。Python numpy - non-zero以外の要素で単位行列を与える

R0 = matrix([ 
    [0.02187598, 0.98329681, -0.18068986], 
    [0.99856708, -0.01266115, 0.05199501], 
    [0.04883878, -0.18156839, -0.9821648] 
]); 

print R0.dot(R0.I) 

# prints [[ 1.00000000e+00 0.00000000e+00 5.55111512e-17] 
#   [ 0.00000000e+00 1.00000000e+00 0.00000000e+00] 
#   [ -5.55111512e-17 0.00000000e+00 1.00000000e+00]] 
+0

マトリックス型の代わりにNumPy配列を使用しない理由は何ですか? – Divakar

+0

私はグーグルで、これは私が最初に見つけたものです。 numpy配列が正しい結果を返す場合は、それらを使用できます。問題ない。 – user3834119

+0

'matrix'の代わりにnumpy配列を使うことは役に立ちません。通常の浮動小数点数値エラーが表示されます。一般に、R0.dot(R0.I)を数値計算した結果は、恒等行列ではありません。 –

答えて

2

問題がnumpyのは私に非常に近いものを返すが、正確に等しくない、数学的にドット(R、RI)の結果を伴う浮動小数点数の数値誤差のために、Iと同じであるにもかかわらず、ということですそれに。あなたは、正確な単位行列を生成する場合は電子17と

値はちょうどnumpy.identityを使用し、0

の非常に近い近似値である:

numpy.identity(3)

関連する問題