18.1 線形代数に使用される手法
Octave には、行列自体の特性に応じて適切な行列分解を選択する多態的ソルバーが含まれています。一般に、行列タイプを決定するコストは、行列自体を分解するコストに比べて小さくなります。いずれの場合も、行列タイプは計算されるとキャッシュされるため、線形方程式で使用されるたびに再決定されることはありません。
線形方程式を解く方法や逆行列を形成する方法の選択ツリーは次のように表されます。
1.行列が上三角または下三角スパースである場合は、LAPACK xTRTRS >関数を使用して前方置換または後方置換を行い、4 に進みます。
2.行列が正方で、実数の正の対角を持つエルミート行列である場合は、LAPACK xPOTRF 関数を使用してコレスキー分解を試みます。
3.コレスキー分解が失敗した場合、または行列が実数の正の対角を持つエルミート行列ではなく、行列が正方行列である場合は、LAPACK xGETRF 関数を使用して分解します。
4.行列が正方でない場合、または以前のソルバーのいずれかが特異行列または特異行列に近い行列としてフラグを立てた場合は、LAPACK xGELSD 関数を使用して最小二乗解を見つけます。
ユーザーは、関数を使用して行列の型を強制することができますmatrix_type 。これにより、行列の型を検出するコストを回避できます。ただし、行列の型を誤って識別すると予期しない結果につながるため、matrix_type注意して使用する必要があります。
上で関数によって実行された、行列がコレスキー分解の候補であるかどうかのテストではmatrix_type 、行列がエルミート行列であることは確認されないことに注意してください。ただし、行列を因数分解しようとすると、非エルミート行列がすぐに検出されます。