4
行列の逆行列の行列式を計算しようとしています。行列の逆行列が存在する。しかし、逆行列の行列式を計算しようとすると、MatlabのInf値が得られます。これの背後にある理由は何ですか?行列の行列式の計算に関する問題
行列の逆行列の行列式を計算しようとしています。行列の逆行列が存在する。しかし、逆行列の行列式を計算しようとすると、MatlabのInf値が得られます。これの背後にある理由は何ですか?行列の行列式の計算に関する問題
短い答え:
A
にA = inv(B)
与え、次いでdet(A)==Inf
は、2つの説明を有することができます。 det(B)
がアンダーフローとオーバーフローdet(A)
できるよう は、最初のケースでは、あなたのマトリックスがひどくスケーリングされます。覚えておいてdet(a*B) == a^N * det(B)
ここでa
はスカラーであり、B
はN
の倍数N
です。
第2のケース(すなわち、nnz(A==inf)>0
)のマトリックスB
は、「単精度から作業精度」である場合があります。
PS:
行列の条件数が大きい場合、行列はほぼ特異です。 (行列式の大きさはスケーリングの影響を受けるため、小さな行列式は特異性とは何の関係もありません。
行列は、ガウス消去でピボットがゼロの場合、特異度と特異度が異なります。逆行列を計算する場合、1/0
はInf
を返します。
実際、Matlabのオーバーフローやゼロ除算の例外は捕捉されないため、IEEE 754によれば、Inf
値が伝搬されます。
おそらく、あなたのマトリックスは単数形に近いです。 –
単体に非常に近いことを意味します –
単数型に非常に近い場合、行列式はゼロに非常に近くなり、逆行列の行列式は非常に大きくなります。数値的精度によって計算が制限されると、無限になる可能性があります。 –