Common Library  0.9.5
tadah_fussy::math_lib::solver::GaussJordanElimination 構造体

ガウス・ジョルダン法による連立方程式の解法 [詳解]

公開メンバ関数

template<typename T , class Ran >
void operator() (SquareMatrix< T > a, Ran b)
 ガウス・ジョルダン法により連立方程式の解を求める [詳解]
 
template<typename T , class MATRIX >
void multiple (SquareMatrix< T > a, MATRIX *b)
 ガウス・ジョルダン法により連立方程式の解を一度に求める [詳解]
 

詳解

ガウス・ジョルダン法による連立方程式の解法

関数詳解

◆ operator()()

template<typename T , class Ran >
void tadah_fussy::math_lib::solver::GaussJordanElimination::operator() ( SquareMatrix< T >  a,
Ran  b 
)

ガウス・ジョルダン法により連立方程式の解を求める

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

◆ multiple()

template<typename T , class MATRIX >
void tadah_fussy::math_lib::solver::GaussJordanElimination::multiple ( SquareMatrix< T >  a,
MATRIX *  b 
)

ガウス・ジョルダン法により連立方程式の解を一度に求める

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

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