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);

“handleit”在哪里

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 回答