| Mathematics | ![]() |
1変数関数の最小化
M-ファイルの中でコード化された1変数の数学関数が与えられるとすると、関数fminbndを使って、与えられた間隔で関数の極小値を算出します。例えば、区間(0.3 1)の中で関数humpsの最小値を見つけるには、つぎのように行ないます。
x = fminbnd(@humps,0.3,1)
x =
0.6370
4番目の引数を、最初の要素に対してゼロでない値をもつfminbndをoptimsetコマンドに転送することにより出力の表を作成しましょう。
x = fminbnd(@humps,0.3,1,optimset('Display','iter'))
Func-count x f(x) Procedure
1 0.567376 12.9098 initial
2 0.732624 13.7746 golden
3 0.465248 25.1714 golden
4 0.644416 11.2693 parabolic
5 0.6413 11.2583 parabolic
6 0.637618 11.2529 parabolic
7 0.636985 11.2528 parabolic
8 0.637019 11.2528 parabolic
9 0.637052 11.2528 parabolic
x =
0.6370
これは、関数計算が行なわれる度に、カレントのxとそれに対する関数値f(x)を示しています。fminbndに対して、一つの関数計算は、アルゴリズムの1回の繰り返しに対応します。最後の列は、各繰り返しで使われる手法、すなわち、黄金分割探索または双曲線内挿のどちらかが表示されます。
| 関数の最小化と零点の検出 | 複数変数関数の最小化 | ![]() |