2012-05-01 59 views
4

行列の逆行列の行列式を計算しようとしています。行列の逆行列が存在する。しかし、逆行列の行列式を計算しようとすると、MatlabのInf値が得られます。これの背後にある理由は何ですか?行列の行列式の計算に関する問題

+4

おそらく、あなたのマトリックスは単数形に近いです。 –

+0

単体に非常に近いことを意味します –

+1

単数型に非常に近い場合、行列式はゼロに非常に近くなり、逆行列の行列式は非常に大きくなります。数値的精度によって計算が制限されると、無限になる可能性があります。 –

答えて

2

短い答え:

  1. オーバーフロー行列式の数値計算の間、A
  2. 一つ以上の無限の要素:A = inv(B)与え、次いでdet(A)==Infは、2つの説明を有することができます。 det(B)がアンダーフローとオーバーフローdet(A)できるよう

は、最初のケースでは、あなたのマトリックスがひどくスケーリングされます。覚えておいてdet(a*B) == a^N * det(B)ここでaはスカラーであり、BNの倍数Nです。

第2のケース(すなわち、nnz(A==inf)>0)のマトリックスBは、「単精度から作業精度」である場合があります。

PS:

行列の条件数が大きい場合、行列はほぼ特異です。 (行列式の大きさはスケーリングの影響を受けるため、小さな行列式は特異性とは何の関係もありません。

行列は、ガウス消去でピボットがゼロの場合、特異度と特異度が異なります。逆行列を計算する場合、1/0Infを返します。

実際、Matlabのオーバーフローやゼロ除算の例外は捕捉されないため、IEEE 754によれば、Inf値が伝搬されます。