MATLAB Function Reference    
fmin

1変数関数の最小化

表示

詳細

x = fmin('fun',x1,x2) は、区間 で、fun(x) の局所的な最小値になる code>x の値を出力します。

x = fmin('fun',x1,x2,options) は、上と同じですが、コントロールパラメータ options を使います。

x = fmin('fun',x1,x2,options,P1,P2,...) は、上と同じですが、目的関数 fun(x,P1,P2,...) に引数を渡します。options へ空行列を渡すと、デフォルト値を使うことになります。

[x,options] = fmin(...) は、options(10) に、使用するステップ数を出力します。

引数
x1,x2
function が最小化される範囲の指定
P1,P2...
function へ渡す引数
fun
最小化される関数名を含む文字列
options
コントロールパラメータベクトル。options の18要素の内、3つだけがfmin で参照されます。Optimization Toolbox の関数では、他のものも使用します。fmin で使用する 3つのコントロールoptions は、
  • options(1) -- 非ゼロの場合、解の算出作業状況が表示されます。options(1) のデフォルト値は0です。
  • options(2) -- 終了に関するトレランスです。デフォルト値は、1.e-4です。
  • options(14) -- ステップの最大回数で、デフォルト値は、500です。

例題

fmin('cos',3,4) は、 を小数以下数桁で計算します。

fmin('cos',3,4,[1,1.e-12]) は、 を12桁で計算します。

区間 (0,2), で、関数 の最小値を求めるために、f.m ファイルを記述します。

そして、つぎの引数と共に、fmin を起動します。

結果は、つぎのようになります。

最小になる位置での関数の値は、つぎのようになります。

アルゴリズム

アルゴリズムは、黄金分割サーチと双曲線内挿をベースにしています。同じアルゴリズムを実現する Fortran プログラムが、参考文献 [1] に用意されています。

参考
fmins       多変数関数の最小化

fzero       1変数関数のゼロ点検出

Optimization Toolbox の中の foptions (または、 help foptionsとタイプしてください)

参考文献

[1] Forsythe, G. E., M. A. Malcolm, and C. B. Moler, Computer Methods for Mathematical Computations, Prentice-Hall, 1976.


 flops fminbnd