首页 > 解决方案 > Numpy 矩阵行列式没有按预期工作?

问题描述

我有一个问题,要求我证明矩阵 B 的行列式等于 0。矩阵 B 定义为:

import numpy as np
from numpy import linalg as m

B = np.array([[-1-3.j,-8-10.j,0-3.j], 
                [-7-3.j,-4-9.j,-3-2.j], 
                [11-3.j,-16-12.j,6-5.j] 
              ])
print(B)
[[ -1. -3.j  -8.-10.j   0. -3.j]
 [ -7. -3.j  -4. -9.j  -3. -2.j]
 [ 11. -3.j -16.-12.j   6. -5.j]]

行列式很简单,使用numpy

m.linalg.det(B)
(-8.126832540256171e-14-1.5987211554602298e-14j)

这显然不等于零。

我使用https://www.symbolab.com/仔细检查了我的答案,行列式绝对为零。

我觉得我在做一些荒谬可笑的事情,但无法完全弄清楚是什么。有什么帮助吗?

标签: pythonnumpylinear-algebranumpy-ndarray

解决方案


你看到的是非常小的数字,几乎等于零。由于数值不准确,它们并不完全等于零。

这就是为什么我们通常不会测试它们是否相等,而是测试它们是否接近

np.allclose(np.linalg.det(B), 0). # True

推荐阅读