Numpy矩阵与自身逆矩阵相乘结果偏离单位矩阵的疑问
为什么矩阵乘逆矩阵得到的结果不是精确的单位矩阵?
嘿,这个问题其实超常见的,完全不用不好意思提问!
你看到的8.8817842e-16这个值,本质是浮点数精度误差导致的,这是计算机处理小数运算时的正常现象:
- 计算机用二进制浮点数存储和计算数值,但并不是所有十进制小数都能被二进制精确表示——比如部分分数在二进制里是无限循环的,运算过程中会产生微小的舍入误差。
- 虽然理论上矩阵
a和它的逆矩阵相乘应该得到完美的单位矩阵,但实际浮点数计算中,这些微小误差会累积,最终表现为这种接近0的极小值(这个值和0的差距已经小到完全可以忽略不计了)。
如果你想验证这个结果是否“近似等于单位矩阵”,可以用numpy的np.allclose()函数来判断:
import numpy as np from numpy.linalg import inv a = np.matrix('1,2;3,4') print(np.allclose(a.dot(inv(a)), np.eye(2))) # 会输出True
这个函数会自动考虑浮点数的精度范围,只要两个矩阵的对应元素差距在可接受的精度内,就会认为它们是相等的。
内容的提问来源于stack exchange,提问作者g_p
相关产品推荐
相关产品推荐

