Common Library  0.9.5
LES_LUdecomposition_Crout 構造体

LU分解(クラウト法)による連立方程式の解法 [詳解]

公開メンバ関数

template<class T , class Ran >
void operator() (const SquareMatrix< T > &a, Ran b)
 LU分解(クラウト法)により連立方程式の解を求める [詳解]
 
template<class T , class MATRIX >
void multiple (const SquareMatrix< T > &a, MATRIX *b)
 LU分解(クラウト法)により連立方程式の解を一度に求める [詳解]
 

詳解

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分解(クラウト法)により連立方程式の解を一度に求める

  • 処理途中で係数行列の対角成分にゼロが見つかった場合、ゼロ除算が発生するため例外 std::runtime_error を投げる
  • 係数行列の列数と右辺(解行列)の行数が等しくない場合は例外 ExceptionNotEqualLength< SquareMatrix< T >::size_type > を投げる
覚え書き
解が不定または不能の場合、理論上は処理途中で係数行列の対角成分にゼロが発生する。 しかし、誤差により完全にゼロにはならず、処理が継続される場合もある。 そのとき、解が不定ならば無数にある解の一つが得られ、不能の場合は正しくない結果となる。 得られた結果が正しいかどうかは、 MathLib::VerifyLinearEquationSystem_Multi() を使って確認することができる。
引数
a対象の連立方程式の係数行列
b対象の連立方程式の解行列へのポインタ(計算結果の未知数がそのまま返される)
戻り値
なし

この構造体詳解は次のファイルから抽出されました: