0

fsolve を使用してこの線形方程式系を解こうとしています。

options = optimoptions('fsolve','Display','iter'); 
guess=[0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 400000; 400000];
[Unkn,value]=fsolve(@handleit,guess,options);

「ハンドル」の場所

function Eqn = handleit(u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,u14,u15,f1,f2,f16)
Eqn=[...some equation is here...];

これを実行すると、次のエラーが発生します。

Error using handleit (line 2)
Not enough input arguments.
Error in fsolve (line 218)
            fuser = feval(funfcn{3},x,varargin{:});
Caused by:
    Failure in initial user-supplied objective function evaluation. FSOLVE cannot continue.

エラーの最後の行について、推測をhandleit関数に代入しましたが、エラーなしで評価されました

4

1 に答える 1

0

問題は、パラメーターが関数に渡される方法にあります。一般に、関数はf(x,a)の形式を持つ必要があります。ここで、xは最適化するパラメーターを持つ行列であり、aは固定パラメーターの行列です。次の (やや不安定な) 例のように:

a=[2 3; 4 1];  % <-- fixed parameters
x0 = [1 2; 3  4]; % <-- trial values
test = @(x,a) exp((x(1)-a(1)).^2).*exp((x(2)-a(2)).^2).*exp((x(3)-a(3)).^2).*exp((x(4)-a(4)).^2);
fsolve(test,x0,[],a)
于 2013-08-25T19:06:45.197 に答える