计算矩阵行列式的问题

raj*_*pit 5 matlab linear-algebra matrix-inverse

我正在尝试计算矩阵逆的行列式。矩阵的逆存在。但是,当我尝试计算逆的行列式时,它在Matlab中为我提供了Inf值。这背后的原因是什么?

Ste*_*o M 2

简短回答:给定A = inv(B),则det(A)==Inf可能有两种解释:

  1. 行列式数值计算期间溢出,
  2. 中的一个或多个无限元素A

在第一种情况下,您的矩阵缩放得很严重,因此det(B)可能会下溢和det(A)溢出。请记住,det(a*B) == a^N * det(B)其中a是标量,BN时间N矩阵。

在第二种情况下(即nnz(A==inf)>0)矩阵B可能是“工作精度奇异”。

附:

如果条件数很大,则矩阵几乎是奇异的。(小的行列式与奇点无关,因为行列式本身的大小受到缩放的影响。)。

如果一个矩阵在高斯消去法中具有零主元,那么它对于工作精度来说是奇异的:在计算逆矩阵时,matlab 必须计算1/0哪个返回Inf

事实上,在 Matlab 中,不会捕获溢出和零除异常,因此,根据 IEEE 754,Inf会传播一个值。