2016-07-24 40 views
0

我正在使用python numpy進行矩陣運算。單位矩陣的計算給出了意想不到的結果 - 沒有得到標準的單位矩陣。Python numpy - 爲非diognal元素賦予非零元素

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

因爲我用google搜索了,而且這些是我第一次找到的。如果numpy數組給出正確的結果,我可以使用這些。不是問題。 – user3834119

+0

使用numpy數組而不是'matrix'將無濟於事。你正在看到正常的浮點數值錯誤。一般來說,數值計算'R0.dot(R0.I)'的結果不會完全是*單位矩陣。 –

回答

2

的問題是,即使在數學上點(R,RI)的結果等於我,由於浮點數數值誤差,numpy的返回的東西很接近我,但不完全相等到它。

與E-17的值是0

非常接近的近似值如果要產生精確的單位矩陣,只需使用numpy.identity:

numpy.identity(3)