逆行列の行列式を計算しようとしています。逆行列が存在します。ただし、逆数の行列式を計算しようとすると、matlab で Inf 値が得られます。この背後にある理由は何ですか?
5465 次
1 に答える
2
短い答え: が与えられA = inv(B)た場合、det(A)==Inf2 つの説明がある場合があります。
- 行列式の数値計算中のオーバーフロー、
- の 1 つまたは複数の無限要素
A。
最初のケースでは、行列が正しくスケーリングされていないため、det(B)アンダーフローやdet(A)オーバーフローが発生する可能性があります。det(a*B) == a^N * det(B)whereaはスカラーで、BはN時間N行列であることを思い出してください。
2 番目のケース (つまりnnz(A==inf)>0) では、行列Bは「作業精度に対して特異」である可能性があります。
PS:
条件数が大きい行列は、ほぼ特異です。(行列式自体の大きさはスケーリングの影響を受けるため、小さな行列式は特異点とは何の関係もありません。)
行列は、ガウス消去法でピボットがゼロの場合、作業精度に対して特異です。逆行列を計算するとき、matlab は1/0どの戻り値を計算する必要がありますInf。
実際、Matlab のオーバーフローとゼロ除算の例外はキャッチされないため、IEEE 754 に従ってInf値が伝播されます。
于 2012-07-04T14:40:33.887 に答える