template<class T>
class tadah_fussy::math_lib::convergence_test::BySum< T >
差分の和と全体の和の比率による収束判定
反復処理において、前の値 p と今回の値 c の差分の絶対値 | c - p | と c のそれぞれに対して和をを求める。 一回の処理で得られる和 Δs = Σ| c - p | と S = Σc の比率 Δs / S を求め、 その値が指定したしきい値以下かどうかを判定する。但し、S = 0 であれば判定結果は常に true となる。
下記のように利用する。
BySum< double > test(
e );
std::vector< double > preVal( n );
:
std::vector< double > curVal( n );
for (;;) {
:
test.init();
for ( std::vector< double >::size_type i = 0 ; i < preVal.size() ; ++i )
test( preVal[i], curVal[i] );
if ( test.isConvergent() )
break;
}
T e() const
設定されているしきい値を返す
Definition: equation.h:274
一回の反復処理で扱う値がただ一つであれば、ConvergenceTest_BySum と ConvergenceTest_ByMax の結果は一致する。