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回の繰り返しに対応します。最後の列は、各繰り返しで使われる手法、すなわち、黄金分割探索または双曲線内挿のどちらかが表示されます。
![]() | 関数の最小化と零点の検出 | 複数変数関数の最小化 | ![]() |