Python numpy - 给出非对数元素非零的单位矩阵

Python numpy - Giving identity matrix with non-diognal elements non-zero

我正在使用 python numpy 进行矩阵运算。单位矩阵的计算给出了意想不到的结果 - 没有得到标准的单位矩阵。

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]]

问题在于,即使 dot(R, R.I) 在数学上的结果等于 I,但由于浮点数中的数值错误,numpy returns 非常接近我,但不完全等于它。

e-17 的值非常接近 0。

如果要生成精确的单位矩阵,只需使用numpy.identity:

numpy.identity(3)