1

私は MATLAB を初めて使用し、Optimization Toolbox を実行しようとしています。コードを実行すると、

function f = objfun(x)
f = exp(x(1))*(4*(x(1)^2)+2*x(2)^2);

x0 = [-1,1];
options = optimset('LargeScale','off');
[x,fval,exitflag,output] = fminunc(@objfun,x0,options);

次のエラーが表示されます。

??? 入力引数 "x" は未定義です。

==> 2 での誤差
f = exp(x(1)) (4 (x(1)^2)+2*x(2)^2);

私が欠けているものを指摘するのを手伝ってください..

よろしくお願いします!

4

1 に答える 1

2

エラーを再現できません。たぶん、それはあなたがあなたのコードをセットアップする方法、またはそれを関数に書いた方法と関係がありますか?

以下をファイルに入れて「testJugeshOptimization.m」として保存すると:

function x = testJugeshOptimization

x0 = [-1,1];
options = optimset('LargeScale','off');
[x,fval,exitflag,output] = fminunc(@objfun,x0,options);

%% subfunction objfun
function f = objfun(x)
f = exp(x(1))*(4*(x(1)^2)+2*x(2)^2);

そして、関数を次のように実行します

x = testJugeshOptimization

結果が出ます

Local minimum found.

Optimization completed because the size of the gradient is less than
the default value of the function tolerance.

<stopping criteria details>


ans =

   1.0e-07 *

   -0.1679    0.0773
于 2012-12-31T04:04:10.990 に答える