正半定矩阵的行列式是否可能等于 0。就我而言,它即将变为零。我有一个对角矩阵,对角线元素不为零。当我尝试计算这个矩阵的行列式时,结果是 0。为什么会这样?
这就是为什么计算行列式从来都不是一个好主意的原因。是的,我明白。你的书,你的老师或你的老板告诉你这样做。他们可能错了。为什么?决定因素是鳞片不足的野兽。即使你有效地计算行列式(许多算法甚至无法做到这一点(,大多数时候你也不会真正想要一个行列式。
考虑这个简单的正定矩阵。
A = eye(1000);
决定因素是什么?我什至不需要打扰。它是 1。但是,如果你坚持...
det(A)
ans =
1
好的,这样就可以了。如果我们简单地将整个矩阵乘以一个小常数,例如 0.1,情况如何。决定因素是什么?你可能会说没有理由打扰,因为我们已经知道决定因素。它必须只是 det(A(*0.1^1000,所以 1e-1000。
det(A*0.1)
ans =
0
我们在这里做错了什么?失败的地方是我们忘记了我们在浮点运算中工作。由于 MATLAB 中双精度的动态范围仅下降到基本上
realmin
ans =
2.2250738585072e-308
然后较小的数字变为零 - 它们下溢。无论如何,大多数时候,当我们计算行列式时,我们这样做是出于错误的原因。如果他们想让你测试矩阵是否是奇异的,那么使用秩或 cond,而不是 det。
根据定义,正半定矩阵的特征值可能等于零,因此其行列式可以为零
现在,我看不出你这句话是什么意思,
我有一个对角矩阵,对角线元素不为零。当我尝试计算...
如果矩阵是对角线,并且对角线中的所有元素都不为零,则行列式应为非零。如果您在计算机中计算它,请注意下溢。您可以考虑对数的总和,而不是对角线元素的乘积