正半正定矩阵的行列式

时间:2012-05-01 21:46:05

标签: matlab matrix linear-algebra

正半正定矩阵的行列式是否可能等于0.在我的情况下它将变为零。我有一个对角线矩阵,对角线元素非零。当我试图计算这个矩阵的行列式时,它会出现为0.为什么会这样?

2 个答案:

答案 0 :(得分:7)

这就是为什么计算行列式绝不是一个好主意的原因。是的,我知道。你的书,老师或老板告诉你这样做。他们可能是错的。为什么?决定因素是规模不大的野兽。即使您有效地计算行列式(许多算法甚至无法做到这一点),您在大多数情况下并不真正想要一个行列式。

考虑这个简单的正定矩阵。

A = eye(1000);

决定因素是什么?我甚至不需要打扰。它是1.但是,如果你坚持......

det(A)
ans =
     1

好的,这样才行。如果我们简单地将整个矩阵乘以一个小常数,例如0.1,那该怎么办?什么是决定因素?你可能会说没有理由打扰,因为我们已经知道了决定因素。它必须是det(A)* 0.1 ^ 1000,所以1e-1000。

det(A*0.1)
ans =
     0

我们在这里做错了什么?失败的地方我们忘了记得我们正在进行浮点运算。由于MATLAB中double的动态范围仅下降到基本上

realmin
ans =
      2.2250738585072e-308

然后较小的数字变为零 - 它们下溢。无论如何,在我们计算行列式的大部分时间里,无论如何我们都是出于错误的原因这样做了。如果他们想让你测试矩阵是否是单数,那么使用rank或cond,而不是det。

答案 1 :(得分:6)

根据定义,正半正定矩阵的特征值可能等于零,因此其行列式可以为零

现在,我看不出你对这句话的意思,

  

我有一个对角线矩阵,对角线元素非零。当我试图计算......

如果矩阵是对角线的,并且对角线中的所有元素都不为零,则行列式应该是非零的。如果您在计算机中计算它,请注意下溢。 您可以考虑对数之和而不是对角元素的乘积