最適化問題を解決するために MATLAB fminunc 関数を使用しています。minFunc パッケージを試してみたい:
http://www.di.ens.fr/~mschmidt/Software/minFunc.html
fminunc を使用するとき、関数 funObj.m を定義しました。この関数は、任意の点 'x' での目的値と勾配を提供します。また、マトリックスである{a、b、c}などのいくつかの外部入力も受け取ります。したがって、関数プロトタイプは次のようになります。
function [objVal,G] = funObj(x,a,b,c)
minFunc パッケージで同じセットアップを使用したい。例から、私はこれがうまくいくはずだと考えました:
options.Method='lbfgs';
f = @(x)funObj(x,a,b,c);
x = minFunc(f,x_init,options);
しかし、この方法で呼び出すと、次のようなエラーが発生します。
Error using funObj
Too many output arguments.
私の場合、minFunc を呼び出す正しい方法は何ですか?
* *EDIT : よし、minFunc で使用したいサンプル関数を次に示します。a*(bx)^2 の最小値を見つけたいとしましょう。ここで、a、b はスカラー パラメーターであり、x もスカラーです。MATLAB 目的関数は次のようになります。
function obj = testFunc(x,a,b)
obj = a*(b-x)^2;
(MATLAB で) fminunc を使用してこれを最小化する関数呼び出しは次のとおりです。
f = @(x)testFunc(x,a,b);
x = fminunc(f,x_init);
これにより、x = 10 の最小値が得られます。次に、minFunc を使用して同じことを行うにはどうすればよいでしょうか。