在我自己創(chuàng)建的矩陣類中使用 numpy 庫時(shí),我遇到了一個(gè)問題。我正在使用 numpy.matmul() 和 numpy.linalg.inv() 對矩陣進(jìn)行乘法和求逆,據(jù)我所知,在將矩陣與其求逆結(jié)果相乘時(shí),您應(yīng)該返回一個(gè)單位/單位矩陣。所以我有這些功能:def matmul(matrixOne, matrixTwo): return np.matmul(matrixOne, matrixTwo)def invert(squaredMatrix): return np.linalg.inv(squaredMatrix) 它們在單獨(dú)使用時(shí)按預(yù)期工作,但當(dāng)我測試它是否返回單位矩陣時(shí),我這樣做:original = [[1,2], [3,4]]print("here is result",str(matmul(original,invert(original))))我應(yīng)該得到一個(gè)像這樣的矩陣:[[1.0, 0.0], [0.0, 1.0]] 在印刷品中,但我得到的是:[[1.0000000e+00 0.0000000e+00] [8.8817842e-16 1.0000000e+00]] 是否有任何我應(yīng)該轉(zhuǎn)換的數(shù)據(jù)類型以使其工作或有什么問題?
1 回答

偶然的你
TA貢獻(xiàn)1841條經(jīng)驗(yàn) 獲得超3個(gè)贊
這是由浮點(diǎn)錯(cuò)誤引起的。值 8.8817842e-16 非常非常接近 0,但有時(shí)在對浮點(diǎn)數(shù)進(jìn)行操作時(shí),您獲得的值并不完全正確。
另一個(gè)例子:0.1 + 0.2 = 0.30000000000000004
添加回答
舉報(bào)
0/150
提交
取消