|
|
◆ _dfmin()
| double _dfmin |
( |
double |
a, |
|
|
double |
b, |
|
|
double(*)(double) |
f, |
|
|
double |
tol |
|
) |
| |
1変数非線形関数の最小点
- 目的
- dfminは与えられた値aとbの間にある関数f(x)の最小点を求める.
黄金分割探索と逐次放物線補間を組み合わせた方法が使われる. フィボナッチ探索よりも収束がひどく遅くなることはない. 関数fの二次微分が連続で(aでもbでもない)最小点において正であれば超1次収束し, その次数は通常1.324・・・になる.
関数fの値は eps*abs(dfmin)+(tol/3) よりも近い2点において計算されることはない. ここで, epsは計算機イプシロンの平方根である. fが単峰形の関数で, 少なくてもeps*abs(x)+(tol/3) 離れた点におけるfの計算値が常に単峰形であれば, 区間[a, b]におけるfの大域的最小点の座標が誤差 3*eps*abs(dfmin)+tol 以下で求められる. fが単峰形でない場合, 局所的(おそらく大域的でない)最小点が同様の精度で求められる.
- 戻り値
- 区間[a, b]においてf(x)が最小になる点のx座標.
- 引数
-
| [in] | a | 探索範囲の下端. |
| [in] | b | 探索範囲の上端. |
| [in] | f | 目的関数f(x)を求めるユーザー関数で, 次のように定義すること. double f(double x)
{
return (f(x)の関数値);
}
|
| [in] | tol | 要求精度(解の誤差範囲幅の要求値). (tol >= 0) |
- 出典
- D. Kahaner, C. Moler, S. Nash, "Numerical Methods and Software", Prentice-Hall (1989)
|