プロが教える店舗&オフィスのセキュリティ対策術

 ある行列の逆行列をLU分解で求めるプログラムを使用しています。その行列の成分の大きさの最大値と最小値の差が10の30乗ほどあります。コンピュータで計算する場合、極端に大きな数字や小さな数字のまま計算すると正しく計算できないことがあります。AA-1=Eなので、行列の各成分をX倍すれば、求めたい逆行列A-1のX倍の逆行列が求まります。これをX分の1にすれば、求めたい逆行列を求めることができます。
 すなわち、各成分の値がコンピュータで処理するのに適していない場合、ある種の補正によって、計算が可能となり、出てきた逆行列はその補正とは反対の操作をすることで求めたい逆行列を求めることができます。

 そこで質問です。
 コンピュータで逆行列を計算するのに適した行列の成分の値の大きさはいくつ程度でしょうか。
 またその適した値にするテクニックとしてはどのようなものがあるでしょうか。

A 回答 (2件)

 桁落ちの誤差のためにとんでもない逆行列が計算されてしまうことがあり、これを避けるのは難しい問題ですよね。

特に特定の行や列に極めて似通ったものがあるときには極端な差が要素になくてもこのような現象が起きます。ですから、予めそのような組み合わせの行や列が存在しないかどうかを検定するルーチンを用意するというのはどうでしょうか。そのルーチンにひっかかったときには行列の位が殆ど一つ下がるのに等しいわけで、求めた逆行列は殆ど意味がないというウォーニングを出すことにするのです。
 また、対角要素でそれぞれの行を割ったもの(対角要素がすべて1になります)の逆行列を求めた後、その対角要素だけが入り、あとの要素はゼロになる行列をかけてやるという方法を採ると桁落ち誤差が減ると言われています。
    • good
    • 0

背景が分からないので、なんともいえないのですが、連立方程式(Ax=b)を解くのであれば, Aの逆行列求めてからA-1bを求めるより、LU分解法による連立方程式の解法について数値計算の参考書を見てください。


Aが正値対象行列であれば反復解法である CG法 も使えます。
最小値と最大値の差が大きいのであれば、連立方程式の行または列をスケーリングすればいいと思います。

そもそも条件数が大きいと、数値計算の誤差の影響が大きいと思うのでその点に注意する必要がありますね。

期待されていた回答からずれていたらすみません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング