5

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

4

1 に答える 1

2

短い答え: が与えられA = inv(B)た場合、det(A)==Inf2 つの説明がある場合があります。

  1. 行列式の数値計算中のオーバーフロー、
  2. の 1 つまたは複数の無限要素A

最初のケースでは、行列が正しくスケーリングされていないため、det(B)アンダーフローやdet(A)オーバーフローが発生する可能性があります。det(a*B) == a^N * det(B)whereaはスカラーで、BN時間N行列であることを思い出してください。

2 番目のケース (つまりnnz(A==inf)>0) では、行列Bは「作業精度に対して特異」である可能性があります。

PS:

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

行列は、ガウス消去法でピボットがゼロの場合、作業精度に対して特異です。逆行列を計算するとき、matlab は1/0どの戻り値を計算する必要がありますInf

実際、Matlab のオーバーフローとゼロ除算の例外はキャッチされないため、IEEE 754 に従ってInf値が伝播されます。

于 2012-07-04T14:40:33.887 に答える