Common Library
0.9.5
|
連立方程式・最適化問題の解法用名前空間 [詳解]
データ構造 | |
struct | GaussianElimination |
ガウスの消去法による連立方程式の解法 [詳解] | |
struct | GaussJordanElimination |
ガウス・ジョルダン法による連立方程式の解法 [詳解] | |
struct | LUdecomposition_Doolittle |
LU分解(ドゥーリトル法)による連立方程式の解法 [詳解] | |
struct | LUdecomposition_Crout |
LU分解(クラウト法)による連立方程式の解法 [詳解] | |
class | Jacobi |
ヤコビ法による連立方程式の計算 [詳解] | |
class | GaussSeidel |
ガウス=ザイデル法による連立方程式の計算 [詳解] | |
class | Jacobi_SOR |
ヤコビ法に SOR 法を適用した連立方程式の計算 [詳解] | |
class | GaussSeidel_SOR |
ガウス=ザイデル法に SOR 法を適用した連立方程式の計算 [詳解] | |
class | CGM_LinearEquation |
共役勾配法 ( Conjugate Gradient Method ) による連立方程式の計算 [詳解] | |
class | Verify |
連立方程式を解いた結果が正しいかを検証する [詳解] | |
class | HC_Operator |
山登り法 ( Hill Climbing ) 用多変数関数オブジェクト [詳解] | |
class | CGM_Operator |
共役勾配法 ( Conjugate Gradient Method ) 用多変数関数オブジェクト [詳解] | |
関数 | |
template<class F , class T > | |
T | GradientMethod (F f, T x0, T h, T e) |
勾配法 ( Gradient Method ) [詳解] | |
template<class F , class T > | |
T | BisectionMethod (F f, T x0, T x1, T e) |
二部法 ( Bisection Method ) [詳解] | |
template<class F , class T > | |
T | SecantMethod (F f, T x0, T x1, T e) |
セカント法 ( Secant Method ) [詳解] | |
template<class F , class T > | |
T | FalsePositionMethod (F f, T x0, T x1, T e) |
はさみうち法 ( False Position Method ) [詳解] | |
template<class F , class T > | |
T | InverseQuadraticInterpolation (F f, T x0, T x2, T e) |
逆二次補間法 ( Inverse Quadratic Interpolation ) [詳解] | |
template<class F , class T > | |
T | BrentMethod (F f, T x0, T x2, T e) |
ブレント法 ( Brent Method ) [詳解] | |
template<class F , class DF , class D > | |
D | Newton (D y, F f, DF df, D xInit, uint32_t maxCount, D threshold) |
ニュートン-ラフソン法により f(x) = y を満たす x (x0) を求める [詳解] | |
template<class Op , class T > | |
void | HillClimbing (Op op, std::vector< T > *x0, T h, T e) |
山登り法 ( Hill Climbing ) による多変量関数の極値計算 [詳解] | |
template<class Op , class T > | |
void | ConjugateGradientMethod (Op op, std::vector< T > *x0, T h, T e) |
共役勾配法による多変量関数の極値計算 [詳解] | |
連立方程式・最適化問題の解法用名前空間
T tadah_fussy::math_lib::solver::GradientMethod | ( | F | f, |
T | x0, | ||
T | h, | ||
T | e | ||
) |
勾配法 ( Gradient Method )
テンプレート引数 F は関数の型を、T はデータの型をそれぞれ表す。 収束判定値 e は f(x) がゼロに収束したか、ステップ幅がゼロに収束したかのいずれにも利用される。
f | 関数 f(x) |
x0 | x の初期値 |
h | ステップ幅 |
e | 収束判定値 |
T tadah_fussy::math_lib::solver::BisectionMethod | ( | F | f, |
T | x0, | ||
T | x1, | ||
T | e | ||
) |
二部法 ( Bisection Method )
テンプレート引数 F は関数の型を、T はデータの型をそれぞれ表す。 収束判定値 e は f(x) がゼロに収束したか、x0, x1 が充分近くなったかのいずれにも利用される。 x0, x1 の間に解があることを想定している。
f | 関数 f(x) |
x0,x1 | 解のある範囲 |
e | 収束判定値 |
T tadah_fussy::math_lib::solver::SecantMethod | ( | F | f, |
T | x0, | ||
T | x1, | ||
T | e | ||
) |
セカント法 ( Secant Method )
テンプレート引数 F は関数の型を、T はデータの型をそれぞれ表す。 収束判定値 e は f(x) がゼロに収束したかに利用される。
f | 関数 f(x) |
x0 | x の初期値 |
x1 | 直線を求めるためのもう一つの点 |
e | 収束判定値 |
T tadah_fussy::math_lib::solver::FalsePositionMethod | ( | F | f, |
T | x0, | ||
T | x1, | ||
T | e | ||
) |
はさみうち法 ( False Position Method )
テンプレート引数 F は関数の型を、T はデータの型をそれぞれ表す。 収束判定値 e は f(x) がゼロに収束したか、x0, x1 が充分近くなったかのいずれにも利用される。 x0, x1 の間に解があることを想定している。
f | 関数 f(x) |
x0,x1 | 解のある範囲 |
e | 収束判定値 |
T tadah_fussy::math_lib::solver::InverseQuadraticInterpolation | ( | F | f, |
T | x0, | ||
T | x2, | ||
T | e | ||
) |
逆二次補間法 ( Inverse Quadratic Interpolation )
テンプレート引数 F は関数の型を、T はデータの型をそれぞれ表す。 収束判定値 e は f(x) がゼロに収束したかに利用される。
f | 関数 f(x) |
x0,x2 | 二次関数を求めるときに利用する二点 |
e | 収束判定値 |
T tadah_fussy::math_lib::solver::BrentMethod | ( | F | f, |
T | x0, | ||
T | x2, | ||
T | e | ||
) |
ブレント法 ( Brent Method )
テンプレート引数 F は関数の型を、T はデータの型をそれぞれ表す。 収束判定値 e は f(x) がゼロに収束したか、x0, x2 が充分近くなったかのいずれにも利用される。
f | 関数 f(x) |
x0,x2 | 二次関数または直線を求めるときに利用する二点 |
e | 収束判定値 |
D tadah_fussy::math_lib::solver::Newton | ( | D | y, |
F | f, | ||
DF | df, | ||
D | xInit, | ||
uint32_t | maxCount, | ||
D | threshold | ||
) |
ニュートン-ラフソン法により f(x) = y を満たす x (x0) を求める
テンプレート引数の F は関数 f(x)、DF はその導関数 f'(x) の型を表す。 また、D は x の値の型を表す。D は浮動小数点数の型であることを前提とする。
y | y ( = f(x0) ) の値 |
f | 関数 f(x) |
df | f(x) の導関数 f'(x) |
xInit | x の初期値 |
maxCount | 処理を行う最大回数 |
threshold | 収束を判断するしきい値。| [ f(x) - f(x0) ] / f'(x) | がこの値より小さくなれば処理を終了する。 |
void tadah_fussy::math_lib::solver::HillClimbing | ( | Op | op, |
std::vector< T > * | x0, | ||
T | h, | ||
T | e | ||
) |
山登り法 ( Hill Climbing ) による多変量関数の極値計算
テンプレート引数の Op は多変量関数オブジェクト HC_Operator の派生型であることを想定
op | 関数 f(x) |
x0 | 初期値(結果をそのまま返す) |
h | ステップ幅 |
e | 収束判定値 |
void tadah_fussy::math_lib::solver::ConjugateGradientMethod | ( | Op | op, |
std::vector< T > * | x0, | ||
T | h, | ||
T | e | ||
) |
共役勾配法による多変量関数の極値計算
テンプレート引数の Op は多変量関数オブジェクト CGM_Operator の派生型であることを想定
op | 関数 f(x) |
x0 | 初期値(結果をそのまま返す) |
h | ステップ幅 |
e | 収束判定値 |