Error using 'constraints' Too many output arguments - Please advise

I created two .m files (1) fm (2) eqcst
function y = fm(x)
y=(x(3)^2*(x(3)^2/2 + x(1)^2)) +( x(4)^2*(x(4)^2/2 + x(2)^2));
end
function c=eqcst(x)
c=(x(1)*x(3)*x(3))-(x(2)*x(4)*x(4));
end
Using fmincon
[xfinal,fval,exitflag,output]=fmincon(@fm,[0.1,0.1,0.1,0.1],[],[],[],[],[],[],@eqcst,options)
gives the error
Error using eqcst
Too many output arguments.
Error in fmincon (line 623)
[ctmp,ceqtmp] = feval(confcn{3},X,varargin{:});
Caused by:
Failure in initial nonlinear constraint function evaluation. FMINCON cannot continue.

 Accepted Answer

Non-linear constraint function must always return two output variables, one for non-linear inequality and one for non-linear equalities. If you do not have any non-linear equalities, then return [] for the second output. (Though your use of "eq" suggests that perhaps that is the nonlinear equalities, so perhaps it should be the first output that should be set to [])

More Answers (0)

Products

Release

R2017a

Asked:

on 30 Jun 2018

Commented:

on 1 Jul 2018

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!