raj*_*pit 5 matlab matrix linear-algebra
是否有可能正半正定矩阵的行列式等于0.在我的情况下它将变为零.我有一个对角线矩阵,对角线元素非零.当我试图计算这个矩阵的行列式时,它会出现为0.为什么会这样?
小智 7
这就是计算行列式从来不是一个好主意的原因.是的,我知道.你的书,老师或老板告诉你这样做.他们可能是错的.为什么?决定因素是规模不大的野兽.即使您有效地计算行列式(许多算法甚至无法做到),您在大多数情况下并不真正想要一个行列式.
考虑这个简单的正定矩阵.
A = eye(1000);
Run Code Online (Sandbox Code Playgroud)
什么是决定因素?我甚至不需要打扰.它是1.但是,如果你坚持......
det(A)
ans =
1
Run Code Online (Sandbox Code Playgroud)
好的,这样才行.如果我们简单地将整个矩阵乘以一个小常数,例如0.1,那该怎么办?什么是决定因素?你可能会说没有理由打扰,因为我们已经知道了决定因素.它必须是det(A)*0.1 ^ 1000,所以1e-1000.
det(A*0.1)
ans =
0
Run Code Online (Sandbox Code Playgroud)
我们在这做错了什么?失败的地方我们忘了记得我们正在进行浮点运算.由于MATLAB中double的动态范围仅下降到基本上
realmin
ans =
2.2250738585072e-308
Run Code Online (Sandbox Code Playgroud)
然后较小的数字变为零 - 它们下溢.无论如何,在我们计算行列式的大部分时间里,无论如何我们都是出于错误的原因这样做了.如果他们想让你测试矩阵是否是单数,那么使用rank或cond,而不是det.
根据定义,正半正定矩阵可以具有等于零的特征值,因此其行列式因此可以为零
现在,我看不出你对句子的意思,
我有一个对角线矩阵,对角线元素非零.当我试着计算......
如果矩阵是对角线的,并且对角线中的所有元素都不为零,则行列式应该是非零的.如果您在计算机中计算它,请注意下溢.您可以考虑对数之和而不是对角元素的乘积