MATLAB Function Reference | ![]() ![]() |
表示
x = fminbnd(fun,x1,x2) x = fminbnd(fun,x1,x2,options) x = fminbnd(fun,x1,x2,options,P1,P2,...) [x,fval] = fminbnd(...) [x,fval,exitflag] = fminbnd(...) [x,fval,exitflag,output] = fminbnd(...)
詳細
fminbnd
は、指定した区間内での1変数関数の最小値を求めます。
x = fminbnd(fun,x1,x2)
は、区間 x1 < x < x2
内で、fun
に記述された関数の局所的な最小値になる値x
を戻すます。
x = fminbnd(fun,x1,x2,options)
は、構造体 options
で指定される最適化パラメータを使って、最小化します。これらのパラメータを関数 optimset
を使って定義することができます。fminbnd
は、つぎの options
構造体フィールドを使います。
Display
- 表示レベル。off
は、出力表示を行いません。iter
は、各繰り返し毎に出力を表示します。final
は、最終出力のみを表示します。MaxFunEvals
- 関数計算の可能な回数の最大回数MaxIter
- 可能な繰り返し回数の最大回数TolX
- x
での終了のトレランスx = fminbnd(fun,x1,x2,options,P1,P2,...)
は、付加的な引数P1
、P2
、等を、目的関数 fun(x,P1,P2,...)
に渡します。オプションを設定しない場合は、options=[]
を使います。
[x,fval] = fminbnd(...)
は、x
で、fun
の中で計算する目的関数の値を出力します。
[x,fval,exitflag] = fminbnd(...)
は、fminbnd
の終了条件を記述する値exitflag
を出力します。
> 0
は、解 x
で関数が収束することを示します。
0
は、関数計算の回数が、設定した最大回数を超えていることを示します。[x,fval,exitflag,output] = fminbnd(...)
は、最適化に関する情報を含んだ構造体 output
を出力します。
output.algorithm
- 使用するアルゴリズムoutput.funcCount
- 関数計算回数output.iterations
- 実行した繰り返し回数引数
fun
は、最小化を行う関数です。fun
は、スカラ x
を受け入れて、x
でけいさんしたスカラ目的関数 f
を出力します。関数 fun
は、@
を使って、指定することができます。
x = fminbnd(@myfun,x0)
ここで、myfun
は、つぎのように表す MATLAB 関数です。
function f = myfun(x) f = ... % x で、関数値を計算
x = fminbnd(inline('sin(x*x)'),x0);
例題
x = fminbnd(@cos,3,4)
は、数桁の精度で、 を計算し、終了に関するメッセージを与えます。
[x,fval,exitflag] = fminbnd(@cos,3,4,optimset('TolX',1e-12,'Display','off'))
は、12桁の精度で、 を計算し、出力を表示せず、
x
での関数値を出力し、exitflag
1を出力します。
引数 fun
は、インライン関数としても設定できます。区間 (0,2)
で、関数 の最小値を求めるため、インラインオブジェクト
f
を作成します。
f = inline('x.^3-2*x
-5');
x = fminbnd(f,
0,
2)
x = 0.8165
y = f(x) y = -6.0887
アルゴリズム
アルゴリズムは、黄金分割サーチと双曲線内挿をベースにしています。同じアルゴリズムを実現する Fortran プログラムが、参考文献 [1] に用意されています。
制限
最小化される関数は、連続である必要があります。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 | ![]() |