2016-07-24 70 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)