Mathematics | ![]() ![]() |
最適化コードをMATLAB バージョン5の書式に変換
ほとんどの関数名と呼び出しの順番が、新しい機能に対応するため、また、入出力変数の役割を明確化するために、バージョン5で変更されました。
この表は、MATLABで供給される最適化関数のリストで、バージョン5に変更された関数名を示しています。
古い(バージョン4)名前 |
新しい(バージョン5)名前 |
fmin |
fminbnd |
fmins |
fminsearch |
foptions |
optimget, optimset |
fzero |
fzero (名前は変更されず) |
|
lsqnonneg |
この節の情報は、新しい関数や引数の情報が記述されている各々の関数リファレンスのページを参照してください。
optimsetとoptimgetの使用
optimset
関数は、デフォルトパラメータ設定を上書きする
foptions
の代りです。optimsetは最適化ルーチンで使用されるパラメータを含んだoptions構造体を作ります。もし、最適化ルーチンの最初の呼び出しで、options構造体が与えられなかったり、または、空行列を与えると、デフォルトパラメータ設定が生成されます。詳細はoptimsetのリファレンスページを参照してください。
新しい呼び出し順序
options
構造体を必要とします(optimset
, optimget
を参照してください)。'final'
が使用されていました。新しいデフォルトはoptions.display
= 'notify'
です)。exitflag
を戻します。output
構造体を持っています。以下の節では、古い関数名と呼び出し順を新しいものに変換する方法について説明します。示される呼び出し方法は、最も一般的な場合で、すべての可能な入出力引数を含んでいます。これらの引数の多くは、オプションであることに注意してください。詳細に関しては、関数リファレンスのページを参照してください。
fmin から fminbndへの変換 バージョン 4では、次の呼び出し方法でfmin
を使用していました。
[X,OPTIONS] = fmin('FUN',x1,x2,OPTIONS,P1,P2,...);
バージョン 5では、つぎのように fminbnd
を呼び出します。
[X,FVAL,EXITFLAG,OUTPUT] = fminbnd(@FUN,x1,x2,... OPTIONS,P1,P2,...);
fmins から fminsearchへの変換 バージョン4では、次の呼び出し方法でfmins
を使用していました。
[X,OPTIONS] = fmins('FUN',x0,OPTIONS,[],P1,P2,...);
バージョン5では、つぎのように fminsearch
を呼び出します。
[X,FVAL,EXITFLAG,OUTPUT] = fminsearch(@FUN,xs0,... OPTIONS,P1,P2,...);
新形式のfzeroへの変換 バージョン4では、次の呼び出し方法でfzero
を使用していました。
X = fzero('F',X,TOL,TRACE,P1,P2,...);
バージョン5では、TRACE
とTOL
引数を次のように置き換えます。
if TRACE == 0, val = 'none'; elseif TRACE == 1 val = 'iter'; end OPTIONS = optimset('Display',val,'TolX',TOL);
現在は、つぎのように fzero
を呼び出します。
[X,FVAL,EXITFLAG,OUTPUT] = fzero(@F,X,OPTIONS,P1,P2,...);
nnls から lsqnonnegへの変換 バージョン4では、つぎのようにnnls
を呼び出して使用しました。
[X,LAMBDA] = nnls(A,b,tol);
OPTIONS = optimset('Display','none','TolX',tol);
現在では、つぎのように lsqnonneg
を呼び出します。
[X,RESNORM,RESIDUAL,EXITFLAG,OUTPUT,LAMBDA] = lsqnonneg(A,b,X0,OPTIONS);
![]() |
トラブルシュート | 数値積分 (求積法) | ![]() |