计算矩阵行列式的问题



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

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

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

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

在第二种情况下(即 nnz(A==inf)>0(矩阵B可以是"工作精度的单数"。

附注:

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

如果矩阵在高斯消除中枢轴为零,则矩阵对工作精度是奇异的:在计算逆矩阵时,matlab 必须计算返回Inf1/0

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

相关内容

  • 没有找到相关文章

最新更新