- ベストアンサー
エクセルで逆行列を計算する際にエラーが発生する問題
- エクセル2007で108×108の対角行列の逆行列を計算する際に#NUMエラーが発生し、計算が進まない問題が発生しています。
- 57×57以上の行列では行列式の値も#NUMとなり、逆行列の計算も#NUMとなってしまいます。
- 問題の原因はソフトやPCの処理能力ではなく、別の要素に起因している可能性があります。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
#1です。 「対角行列」は読んでいませんでした。 一般の場合、逆行列をMINVERSE関数で求めるとき、Excelは行列式を計算します。対角行列かどうかはExcelは知らない。計算値がExcel最大値を超えて「#NUM」になるなら、 「=MINVERSE(行列範囲/k)/k で、求められるのではないか、ということです。 たとえば、質問の場合、k=1000にするとか、k=10000にするとかで。 ただし、Excelは、、有効桁数が15桁ほどだったと思うので、繰り返し計算が多いとデータによっては誤差が出ます。それはまた別の話ですが。
その他の回答 (4)
- f272
- ベストアンサー率46% (8532/18264)
対角行列の逆行列ですね。対角成分を逆数にするだけですから,エラーが出るような状況にはならないはずだが,どうやって計算してるの?
- okormazd
- ベストアンサー率50% (1224/2412)
#1です。 ああ、Excelの制限だけ気にしていたのですが、行列の桁数を下げればできるかも。 1000*|1.2345|とかにすれば回避できるか。でも制限に引っかかるかな。
- okormazd
- ベストアンサー率50% (1224/2412)
#1です. 訂正してください。 3.回避方法 行列の次数を下げて ↓ 3.回避方法 行列式の次数を下げて
- okormazd
- ベストアンサー率50% (1224/2412)
1. 「ソフトやPCの処理能力の問題かとも思ったのですが違う」 どうしてそう思うのでしょうか。 Excel 2007の仕様では、処理できる最大値は、1.79769313486231E+308です。 逆行列を求めるには行列式の値を使います。 7桁~4桁の数の108乗を扱うことになれば、最大値をオーバーして「#NUM」になります。57×57ほどすなわち57乗程度が限度でしょう。 2. 逆行列がなければ、「#NUM」になります。行列式の値が0でなければいいのですが、それを確認するにも、1.の制限でそのままではできないでしょう。 3.回避方法 行列の次数を下げて計算して再組立てすればできるはずですが、108次から56次以下まで下げるなんて、プログラムでも組まなければにわかにはできないでしょう。 数学計算専用ソフトでも使いますか。
お礼
ありがとうございますm(__)m この方法で計算できました! 大変助かりましたm(__)m