我在我自己创建的矩阵类中使用numpy库时遇到了一个问题。我使用numpy.matmul()和numpy.linalg.inv()对矩阵进行乘法和反演,据我所知,当将矩阵与其倒置结果相乘时,您应该返回一个单位/单位矩阵。所以我有这样的功能:
def matmul(matrixOne, matrixTwo):
return np.matmul(matrixOne, matrixTwo)
def invert(squaredMatrix):
return np.linalg.inv(squaredMatrix) 当单独使用时,它们可以正常工作,但是当我测试它是否返回一个单元矩阵时,我会这样做:
original = [[1,2], [3,4]]
print("here is result",str(matmul(original,invert(original))))我应该在打印中得到这样的矩阵:[[1.0, 0.0], [0.0, 1.0]],但是我得到:[[1.0000000e+00 0.0000000e+00] [8.8817842e-16 1.0000000e+00]],有什么数据类型是我应该转换来实现的,或者是什么问题?
发布于 2020-08-24 13:44:11
这是由浮点错误引起的。值8.8817842e-16非常非常接近于0,但有时在浮动操作时,得到的值并不完全正确。
另一个例子: 0.1 + 0.2 = 0.30000000000000004
https://stackoverflow.com/questions/63562156
复制相似问题