LU分解(クラウト法)による連立方程式の解法
[詳解]
◆ operator()()
template<class T , class Ran >
void LES_LUdecomposition_Crout::operator() |
( |
const SquareMatrix< T > & |
a, |
|
|
Ran |
b |
|
) |
| |
LU分解(クラウト法)により連立方程式の解を求める
- 処理途中で係数行列の対角成分にゼロが見つかった場合、ゼロ除算が発生するため例外 std::runtime_error を投げる
- 覚え書き
- 係数行列と右辺(解ベクトル)の大きさが等しいかチェックしていないことに注意
-
解が不定または不能の場合、理論上は処理途中で係数行列の対角成分にゼロが発生する。 しかし、誤差により完全にゼロにはならず、処理が継続される場合もある。 そのとき、解が不定ならば無数にある解の一つが得られ、不能の場合は正しくない結果となる。 得られた結果が正しいかどうかは、 MathLib::VerifyLinearEquationSystem() を使って確認することができる。
- 引数
-
a | 対象の連立方程式の係数行列 |
b | 対象の連立方程式の解ベクトルの先頭位置(計算結果の未知数がそのまま返される) |
- 戻り値
- なし
◆ multiple()
template<class T , class MATRIX >
void LES_LUdecomposition_Crout::multiple |
( |
const SquareMatrix< T > & |
a, |
|
|
MATRIX * |
b |
|
) |
| |
LU分解(クラウト法)により連立方程式の解を一度に求める
- 覚え書き
- 解が不定または不能の場合、理論上は処理途中で係数行列の対角成分にゼロが発生する。 しかし、誤差により完全にゼロにはならず、処理が継続される場合もある。 そのとき、解が不定ならば無数にある解の一つが得られ、不能の場合は正しくない結果となる。 得られた結果が正しいかどうかは、 MathLib::VerifyLinearEquationSystem_Multi() を使って確認することができる。
- 引数
-
a | 対象の連立方程式の係数行列 |
b | 対象の連立方程式の解行列へのポインタ(計算結果の未知数がそのまま返される) |
- 戻り値
- なし
この構造体詳解は次のファイルから抽出されました: