python - 为什么将矩阵乘以它与numpy的逆矩阵不产生单位矩阵?
问题描述
我将一个矩阵乘以它的逆矩阵,而不是得到一个识别矩阵作为回报。我怀疑浮点舍入存在问题(或者如果原始矩阵条目只是整数则缺少?)感谢所有帮助。
C = np.array([[5,5,5],[4,5,6],[7,8,9]])
print("Original matrix")
print(C)
print("Inverse matrix")
D = np.linalg.inv(C)
print(D)
print("Identity matrix")
print((C.dot(D)))
Original matrix
[[5 5 5]
[4 5 6]
[7 8 9]]
Inverse matrix
[[-6.75539944e+14 -1.12589991e+15 1.12589991e+15]
[ 1.35107989e+15 2.25179981e+15 -2.25179981e+15]
[-6.75539944e+14 -1.12589991e+15 1.12589991e+15]]
Identity matrix
[[ 0.5 -2. 1.75]
[ 0. 0. 0.5 ]
[ 0.5 0. 2.75]]
解决方案
矩阵属性之一说,如果矩阵的行列式不为零,则矩阵仅具有逆形式。您的矩阵 C 的行列式为零,因此它没有逆矩阵。Numpy 进行计算是因为它没有得到零,而是一个在实践中为零的近似值。
>>> np.linealg.det(C)
4.440892098500603e-15
在这种情况下,行列式的值可以被认为是零。
推荐阅读
- apache-spark - Spark SQL 执行缓慢且资源空闲
- javascript - 如果下拉列表的值包含 unpaid,其他下拉列表将自动只读
- python - 我如何在 PyGame 上正确重新缩放图像而不会被严重裁剪?
- autohotkey - 未知问题,未输入计数器的数字
- c# - C# Web API 在本地机器上工作,但在服务器上不工作
- c++ - 原始文件未播放或播放不正确 - 双簧管 (Android-ndk)
- c# - 即使主线程被阻塞也设置窗口位置?
- javascript - PHP laravel 使用 jQuery 解析数据或将它们组合成单个数组
- unreal-engine4 - 在虚幻引擎 4 蓝图中创建小部件不起作用?
- android - 如何在 ContextMenu 中使用 MenuItem.setIntent()