行列を逆にすることができる AC コードで LAPACK を使用します。より正確には、dgetrf_ を使用してから dgetri_ を使用して反転を行います。
しかし、私は大きな行列を扱っていて、行列が可逆かどうかわからないので、可逆でない行列を逆にするために多くの時間を失います... LAPACKを使用する方法はありますか?これを確認するには?
行列を逆にすることができる AC コードで LAPACK を使用します。より正確には、dgetrf_ を使用してから dgetri_ を使用して反転を行います。
しかし、私は大きな行列を扱っていて、行列が可逆かどうかわからないので、可逆でない行列を逆にするために多くの時間を失います... LAPACKを使用する方法はありますか?これを確認するには?
特異行列での dgetrf+dgetri の失敗については、このリンクを参照してください (数年前ですが)。また、問題の行列の「可逆性」をチェックする方法、つまり条件数の推定 (関数dgecon
) も提案しています。
条件数は行列自体のプロパティであり、アルゴリズムの精度や PC の丸め誤差とは関係がないため、役立ちます。条件付け数が大きいほど、マトリックスが特異点に近づくため、本質的に条件付け数に (変数の) 上限を設定できます。このページの下部にある表を参照して、使用している行列のタイプに基づいた潜在的な関数呼び出し順序を確認してください。