我正在处理以下代码:
function opemployment=eqns(unknown);
global kappa varphi lgamma beta r delta s x b e theta v;
h=unknown(1);
gamma=unknown(2);
opemployment(1)=(h^(gamma-1))*((1-kappa)*((lgamma*(varphi^beta))/(gamma*kappa*beta+1-kappa))*h^(gamma*beta-gamma)-(r+delta+s)*(s^(gamma-1))*x^(-gamma));
opemployment(2)=(1-kappa)*(b-e+(kappa/(1-kappa))*theta*v^(gamma-1));
然后致电:
close all; clear all;
global kappa varphi lgamma beta r delta s x b e theta v;
kappa = 0.1;
varphi = 2;
lgamma = 3;
beta = 0.9;
r = 2;
delta = 2 ;
s = 3;
x = 5;
b = 4;
e =3;
theta = 3 ;
v = 2;
guess = [0.7,0.3];
sol=fsolve('eqns',guess)
然而,我收到以下错误: '使用feval时出错 未定义函数'eqns'表示'double'类型的输入参数。
Error in fsolve (line 217)
fuser = feval(funfcn{3},x,varargin{:});
引起:
Failure in initial user-supplied objective function evaluation.
FSOLVE cannot continue.
我是一名完整的MATLAB初学者,并且不知道错误所在的位置。
答案 0 :(得分:1)
您没有指定fsolve
的第一个参数正确。当您对如何调用函数有疑问时,查看文档总是非常有用。对于fsolve
,请点击此处:http://www.mathworks.com/help/optim/ug/fsolve.html
在您的情况下,对于您的fsolve
声明,您必须这样做:
sol=fsolve(@eqns,guess)
fsolve
期望您要解决的函数的函数句柄,而不是函数本身的实际名称。