在我自己创建的矩阵类中使用 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]] 是否有任何我应该转换的数据类型以使其工作或有什么问题?
1 回答
偶然的你
TA贡献1841条经验 获得超3个赞
这是由浮点错误引起的。值 8.8817842e-16 非常非常接近 0,但有时在对浮点数进行操作时,您获得的值并不完全正确。
另一个例子:0.1 + 0.2 = 0.30000000000000004
添加回答
举报
0/150
提交
取消