Matlab 矩阵行列式计算的几个问题

Matlab 矩阵行列式计算的几个问题,matlab,linear-algebra,matrix-inverse,Matlab,Linear Algebra,Matrix Inverse,我试图计算矩阵逆的行列式。矩阵的逆矩阵存在。然而,当我试图计算逆的行列式时,它在matlab中给了我Inf值。这背后的原因是什么?简短的回答:给定A=inv(B),那么det(A)==Inf可能有两种解释: 行列式数值计算期间的溢出 A中的一个或多个无限元素 在第一种情况下,矩阵的缩放比例很差,因此det(B)可能会下溢而det(A)溢出。请记住,det(a*B)=a^N*det(B)其中a是标量,B是N次N矩阵 在第二种情况下(即nnz(A==inf)>0),矩阵B可能是“工作精度的奇异值”

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

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

  • 行列式数值计算期间的溢出
  • A
    中的一个或多个无限元素
  • 在第一种情况下,矩阵的缩放比例很差,因此
    det(B)
    可能会下溢而
    det(A)
    溢出。请记住,
    det(a*B)=a^N*det(B)
    其中
    a
    是标量,
    B
    N
    N
    矩阵

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

    附言:

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

    如果矩阵在高斯消去法中有一个零轴,则其工作精度是奇异的:当计算逆矩阵时,matlab必须计算
    1/0
    ,返回
    Inf


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

    也许你的矩阵非常接近奇异值。非常接近奇异值是什么意思?如果非常接近奇异值,那么行列式将非常接近零,所以倒数的行列式会很大。如果计算受到数值精度的限制,结果可能是无穷大。我意识到这一点。但它可能足够接近以数字精度为主导。在这种情况下,问题解决了!你现在应该结束这个问题。