dポイントプレゼントキャンペーン実施中!

一般次元の逆行列を求めるプログラミングを組もうとしています。
とりあえず見本の動作を確認・理解してから作ろうとしているのですが、
mukun_mmg.at.infoseek.co.jp/mmg/bncpp/al050.html
の★逆行列導出プログラム★
を動かしてみると、当該ページ記載の
3次元行列
1 2 3
2 5 7
3 7 11
は逆行列
6 -1 -1
-1 2 -1
-1 -1 1
が無事求まるのですが、自分の持っているテキスト課題の
2 4 6
2 4 8
1 3 5
の逆行列が正常に求まりません(結果表示に未確定である#INDが表れる)。
見本プログラムのどのあたりに原因があるのでしょうか?ご教示頂きたいです


ちなみに、この逆行列は
1 1/2 -2
1/2 -1 1
-1/2 1/2 0
です。

A 回答 (2件)

>見本プログラムのどのあたりに原因があるのでしょうか?


(1) a[1][1]の値がゼロである場合が考慮されていない
(2) 左上2行2列の部分行列 { { a[1][1], a[1][1] }, { a[2][1}, a[2][2] } }の行列式の値がゼロである場合が考慮されていない
(3) 以下、a[1][1]を含む部分正方行列の行列式の値がゼロである場合が考慮されていない
 うまくいかなかったデータは(2)の場合にあてはまり、i=2のときpivotの値がゼロになります。
pivotがゼロになったら、行や列の入れ替えをする交換をすることで回避できることがあります。
ヒントとして、うまくいかなかったデータの1列目と3列目を入れ替えて計算し、出てきた結果の
1行目と3行目を入れ替えたらどうなるでしょうか、試してみてください。
    • good
    • 0

練習したいのでしょうから、修正したコードを書くつもりはありませんが、


こんなふうに、31行目にコードを追加して結果を見てみるとわかるかもしれませんね。

http://ideone.com/H0b16
    • good
    • 0

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