Common Library  0.9.5
ConvergenceTest_ByMax< T > クラステンプレート

差分と値の比率の最大値による収束判定 [詳解]

公開メンバ関数

 ConvergenceTest_ByMax (T e)
 しきい値を指定して構築 [詳解]
 
void init ()
 求めた最大値を初期化(ゼロクリア)する [詳解]
 
void init (T e)
 しきい値を再設定し、求めた総和を初期化(ゼロクリア)する [詳解]
 
void operator() (T preVal, T newVal)
 前後の値から差分との比率の絶対値を求め、前回の最大値と比較してより大きければ入れ替える [詳解]
 
bool isConvergent ()
 収束しているかを判定する [詳解]
 
e () const
 設定されているしきい値を返す [詳解]
 

詳解

template<class T>
class ConvergenceTest_ByMax< T >

差分と値の比率の最大値による収束判定

反復処理において、前の値 p と今回の値 c の差分 c - p と c との比率の絶対値 | ( c - p ) / c | を求める ( 但し c = 0 ならば | c - p | をそのまま用いる )。 一回の処理で得られる全ての値の中からその最大値を抽出し、その値が指定したしきい値以下かどうかを判定する。

下記のように利用する。

ConvergenceTest_ByMax< double > test( e ); // e はしきい値
std::vector< double > preVal( n ); // 前の値
: // preVal に初期値をセット
std::vector< double > curVal( n ); // 現在の値
for (;;) {
: // curVal に値をセット
test.init();
for ( std::vector< double >::size_type i = 0 ; i < preVal.size() ; ++i )
test( preVal[i], curVal[i] );
if ( test.isConvergent() )
break;
}
差分と値の比率の最大値による収束判定
Definition: equation.h:284
T e() const
設定されているしきい値を返す
Definition: equation.h:329

一回の反復処理で扱う値がただ一つであれば、ConvergenceTest_BySum と ConvergenceTest_ByMax の結果は一致する。

構築子と解体子

◆ ConvergenceTest_ByMax()

template<class T >
ConvergenceTest_ByMax< T >::ConvergenceTest_ByMax ( e)
inline

しきい値を指定して構築

引数
e判定時のしきい値

関数詳解

◆ init() [1/2]

template<class T >
void ConvergenceTest_ByMax< T >::init ( )
inline

求めた最大値を初期化(ゼロクリア)する

戻り値
なし

◆ init() [2/2]

template<class T >
void ConvergenceTest_ByMax< T >::init ( e)
inline

しきい値を再設定し、求めた総和を初期化(ゼロクリア)する

引数
e新たなしきい値
戻り値
なし

◆ operator()()

template<class T >
void ConvergenceTest_ByMax< T >::operator() ( preVal,
newVal 
)

前後の値から差分との比率の絶対値を求め、前回の最大値と比較してより大きければ入れ替える

引数
preVal前の値
newVal現在の値
戻り値
なし

◆ isConvergent()

template<class T >
bool ConvergenceTest_ByMax< T >::isConvergent ( )
inline

収束しているかを判定する

戻り値
差分と値の比率の絶対値の最大値が充分に小さければ(しきい値より小さければ) true を返す

◆ e()

template<class T >
T ConvergenceTest_ByMax< T >::e ( ) const
inline

設定されているしきい値を返す

戻り値
しきい値

このクラス詳解は次のファイルから抽出されました: