• ベストアンサー

逆行列の高速解法

C言語を用いて逆行列を計算するアルゴリズムのうち, 計算時間が短いプログラム例を教えていただけませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

数値計算のアルゴリズムはどれもメリットとデメリットがあります。問題にしている行列はどのような行列か教えて下さい。専門家からの回答もつきやすくなりますよ。

その他の回答 (4)

  • iykm
  • ベストアンサー率22% (5/22)
回答No.5

#4です。GOTO BLAS というものもあり、2割ほど高速なようです。

参考URL:
http://www.cs.utexas.edu/users/flame/goto/
norioP
質問者

お礼

ありがとうございます. 引き続き参考にさせていただきました.

  • iykm
  • ベストアンサー率22% (5/22)
回答No.4

既存のライブラリを使うのが、高速なように思います。 LAPACK, CLAPACK, LAPACK++の何れかに、さらにATLASによるBLASのチューニングを 行えば、自作のプログラムより一桁近く速くなるように思います。

norioP
質問者

お礼

ありがとうございます. 参考にさせていただきます.

回答No.3

一般に連立一時方程式を解く際には逆行列を経由すると精度が落ちたり計算時間もかかります。行列が疎行列か密行列かで適したアルゴリズムが違うのですが、どれぐらいの次元のどんな成分の行列を何回ぐらい解かれるでしょうか?それはタイムクリティカルな部分の演算ですか?

norioP
質問者

お礼

ご返答ありがとうございました. 疎行列とは0要素の多い行列という意味だとしますと, 疎行列ではないようです. 行列の次数は最大で8です. 演算は下の御礼に記したものです. ただし,実時間制御にもちいるため, 精度よりも高速性を重視しております.

回答No.2

#1です。 勝手に固有値問題と勘違いしてしまいました。済みません。とりあえずLU分解で良いんじゃないですか?

参考URL:
http://www.fuka.info.waseda.ac.jp/~kozo/suuchi/simple_equation/simple_equation_4.html
norioP
質問者

お礼

抱えている問題は, X={(I-A)^(-1)}*(I+A) Y={(I-A)^(-1)}*B    A:正方,B:非正方 です.やはりLU分解の方法が最速でしょうか?

関連するQ&A

専門家に質問してみよう