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)
我正在使用 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)