逆行列

テクニカルレポート

線形方程式 Ax = b の解はx = A-1bと記述できますが、解を求める際に最初にAの逆行列を計算し次にA-1bを計算するというやり方は良い方法ではありません。このような方程式を解くためには、nAG数値計算ライブラリチャプターF04及びF07ルーチンをご利用下さい。これらのルーチンを使用することにより速く実行することができ、また数値的に安定しており正確です。 同様に、最小2乗問題を解く場合も疑似逆行列を計算するのではなくnAG数値計算ライブラリのチャプターF04及びF08ルーチンをご利用下さい。

n次の非特異正方行列に関しては、行列が正定値の実対称行列か正定値の複素エルミート行列のどちらかであることがわかっている場合は適切なルーチンを使用しないと無駄で不経済な処理となってしまいます。正定値であることがわかっていない場合は一般的なルーチンを使用する必要があります。nAG数値計算ライブラリのほとんどのルーチンで、逆行列は以下の線形方程式を解いて求められています。

  • Axi = ei (i=1,2,...,n )  ei : 恒等行列のi番目の列

逆行列を求める代表的なnAG数値計算ライブラリルーチンに以下があります。それぞれルーチンを呼び出すサンプルソースコードが提供されておりサンプルソースコードを説明しているWebページを参照いただけます。

ルーチン名 用途 ルーチンを呼び出すサンプルソースコード
F07AJ 実行列の逆行列 Fortranのサンプルソースコード
C言語のサンプルソースコード
F07AW 複素行列の逆行列 Fortranのサンプルソースコード
C言語のサンプルソースコード
F01BL 実行列の疑似逆行列 Fortranのサンプルソースコード

他にも元となる行列の種類によって逆行列を求める多様なルーチンが用意されています。
以下は元となる行列の種類と使用するルーチン(Fortranライブラリの場合)の対応表です。

実行列の場合

nxn行列
ランクn
実行列 帯行列 対称行列 正定値 保証精度 三角行列 線形配列 1つの三角形要素が線形配列 使用する
ルーチン名
注1
× F01ABF
× × F07GDF 及び F07GJF
× × × F01ADF あるいは (F07FDF 及び F07FJF)
× × F07PDF 及び F07PJF
× × × F07MDF 及び F07MJF
× × F07UJF
× × × F07TJF
× × × × F07ADF 及び F07AJF
× × × F04AEF

複素行列の場合

nxn行列
ランクn
実行列 帯行列 エルミート 対称行列 三角行列 線形配列 正定値 1つの三角形要素が線形配列 使用する
ルーチン名
× 注1
× × F07GRF 及び F07GWF
× × × F07FRF 及び F07FWF
× × × F07PRF 及び F07PWF
× × × × F07MRF 及び F07MWF
× × × F07QRF 及び F07QWF
× × × × F07NRF 及び F07NWF
× × × × F07UWF
× × × × × F07TWF
× × × × × F07ANF あるいは (F07ARF 及び F07AWF)
注1: 帯行列Aの逆行列は一般にAとは同じ形をしていません。このような行列を求める関数は特別には提供されていません。行列はフル行列として処理されるか、または方程式Ax=B(この場合Bは恒等行列へ初期化されています)を解く必要があります。後者についてはF04チャプターのセクション4を参照下さい。

疑似行列の場合

nxn行列
ランクn
複素行列 フルランク m<n の mxn行列 効率性より
信頼性重視
使用する
ルーチン名
× F01RJF 及び F01RKF
× × F08ASF 及び (F08AUF あるいは F08ATF)
× × F08KPF
× × F01QJF 及び F01QKF
× × × F08AEF 及び (F08AGF あるいは F08AFF)
× × × F08KBF
× × × × F08KBF
× × × × × F01BLF

逆行列を求める方法についての詳細はチャプターF01を参照下さい。

関連情報
MENU
© 日本ニューメリカルアルゴリズムズグループ株式会社 2025
Privacy Policy  /  Trademarks