首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >块矩阵行列式没有像预期的那样工作?

块矩阵行列式没有像预期的那样工作?
EN

Stack Overflow用户
提问于 2020-01-30 05:53:51
回答 2查看 546关注 0票数 0

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

代码语言:javascript
运行
复制
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很简单。

代码语言:javascript
运行
复制
m.linalg.det(B)
(-8.126832540256171e-14-1.5987211554602298e-14j)

这显然不等于零。

我用https://www.symbolab.com/再次检查了我的答案,行列式绝对是零。

我觉得我在做一些可笑的愚蠢的事情,但不能完全弄清楚是什么。有什么帮助吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-01-30 05:57:50

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

这就是为什么我们通常不测试它们的等价性,而是测试它们的紧密性

代码语言:javascript
运行
复制
np.allclose(np.linalg.det(B), 0). # True
票数 2
EN

Stack Overflow用户

发布于 2020-01-30 20:27:03

要对Nils进行一点扩展,答案是:

有多种方法可以计算行列式。代数课上教授的方法-- laplace expansion --对于较小的(如3x3)矩阵来说是一种合理的方法,但很快就变得不可能了--因为需要大量的计算--对于较大的矩阵。

在您的例子中,所有实部和虚部都是小整数,这样的计算将精确地计算行列式为0。

在python中,linalg.det使用了一种不同的方法,将矩阵分解为因子--三角矩阵和排列--其行列式很容易计算,然后乘积的行列式就是这些因子的行列式的乘积。这是一个N阶的立方体计算,因此即使是非常大的矩阵也可以使用。

然而,这样的因子分解是(有点)不准确的;原始矩阵不会与乘积完全相等。因此,行列式也很可能有一点不准确。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59976159

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档