ガウス=ザイデル法による連立方程式の計算
[詳解]
template<class T, template< class > class Test = ConvergenceTest_BySum>
class LES_GaussSeidel< T, Test >
ガウス=ザイデル法による連立方程式の計算
テンプレート引数の T は係数や解の型を、Test は収束判定用関数オブジェクト (ConvergenceTest_BySum か ConvergenceTest_ByMax の利用を想定。デフォルトは ConvergenceTest_BySum) をそれぞれ表す。
◆ LES_GaussSeidel()
template<class T , template< class > class Test = ConvergenceTest_BySum>
収束判定のしきい値と最大処理回数を指定して構築
- 引数
-
e | 収束判定のしきい値 |
maxCnt | 収束しなかった場合の最大処理回数 |
◆ operator()()
template<class T , template< class > class Test>
template<class Ran >
連立方程式を解く
- 計算回数が最大処理回数 maxCnt を超えた場合は例外 ExceptionExcessLimit を投げる。 但し、それまでに得られた近似解は連立方程式の解ベクトル b に返される。
- 係数行列の対角成分にゼロが含まれる場合、std::runtime_error を投げる。
- 覚え書き
- 係数行列と右辺(解ベクトル)の大きさが等しいかチェックしていないことに注意
- todo:
- 対角成分にゼロが含まれる場合、std::runtime_error を投げるが、実際には式の入れ替えで 解ける場合がある。対角成分が大きくなるほど速く収束するため、そのための処理を実装したほうがよい。
- 引数
-
a | 連立方程式の係数行列への参照 |
b | 対象の連立方程式の解ベクトルの先頭位置(計算結果の未知数がそのまま返される) |
- 戻り値
- なし
このクラス詳解は次のファイルから抽出されました: