MATLAB Function Reference    
fminbnd

設定した区間での1変数関数の最小化

表示

詳細

fminbnd は、指定した区間内での1変数関数の最小値を求めます。

x = fminbnd(fun,x1,x2) は、区間 x1 < x < x2 内で、fun に記述された関数の局所的な最小値になる値xを戻すます。

x = fminbnd(fun,x1,x2,options) は、構造体 options で指定される最適化パラメータを使って、最小化します。これらのパラメータを関数 optimset を使って定義することができます。fminbnd は、つぎの options 構造体フィールドを使います。

x = fminbnd(fun,x1,x2,options,P1,P2,...) は、付加的な引数P1P2、等を、目的関数 fun(x,P1,P2,...) に渡します。オプションを設定しない場合は、options=[]を使います。

[x,fval] = fminbnd(...) は、x で、funの中で計算する目的関数の値を出力します。

[x,fval,exitflag] = fminbnd(...) は、fminbndの終了条件を記述する値exitflagを出力します。

[x,fval,exitflag,output] = fminbnd(...) は、最適化に関する情報を含んだ構造体 output を出力します。

引数

fun は、最小化を行う関数です。fun は、スカラ x を受け入れて、x でけいさんしたスカラ目的関数 f を出力します。関数 fun は、@ を使って、指定することができます。

ここで、myfun は、つぎのように表す MATLAB 関数です。

fun は、インラインオブジェクトにすることもできます。

他の引数は、上の表示で記述したものと同じです。

例題

x = fminbnd(@cos,3,4) は、数桁の精度で、 を計算し、終了に関するメッセージを与えます。

は、12桁の精度で、 を計算し、出力を表示せず、x での関数値を出力し、exitflag 1を出力します。

引数 fun は、インライン関数としても設定できます。区間 (0,2) で、関数 の最小値を求めるため、インラインオブジェクト f を作成します。

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

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

最小値での関数値は、つぎのように求めます。

アルゴリズム

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

制限

最小化される関数は、連続である必要があります。fminbnd は、局所的な解のにを与える可能性もあります。

fminbnd は、解が区間の境界上に存在する場合、遅い収束を示す場合があります。

fminbnd は、実変数のみを取り扱います。

参考

fminsearch, fzero, optimset, function_handle, inline

参考文献

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


 fmin fmins