MATLAB 中的 fsolve 错误

Posted

技术标签:

【中文标题】MATLAB 中的 fsolve 错误【英文标题】:fsolve error in MATLAB 【发布时间】:2014-08-24 13:31:10 【问题描述】:

我正在处理以下代码:

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 时出错 'double' 类型的输入参数的未定义函数 'eqns'。

Error in fsolve (line 217)
        fuser = feval(funfcn3,x,varargin:);

原因:

Failure in initial user-supplied objective function evaluation. 
FSOLVE cannot continue.

我完全是 MATLAB 初学者,不知道错误出在哪里。

【问题讨论】:

【参考方案1】:

您没有指定fsolve 的第一个参数正确。当您对如何调用函数有疑问时,查看文档总是非常有用的。对于fsolve,这里是:http://www.mathworks.com/help/optim/ug/fsolve.html

在您的情况下,对于您的 fsolve 声明,您必须这样做:

sol=fsolve(@eqns,guess)

fsolve 需要您要解决的函数的函数句柄,而不是函数本身的实际名称。

【讨论】:

以上是关于MATLAB 中的 fsolve 错误的主要内容,如果未能解决你的问题,请参考以下文章

请教,Matlab的fsolve函数怎么用

matlab关于fsolve函数

matlab fsolve函数应用

使用Matlab fsolve()通过2个变量找到2个函数的零点

matlab中fsolve解二元方程问题

怎样使MATLAB的fsolve函数不输出提示信息?