## Documentation Center |

For routines that permit equality constraints, nonlinear equality
constraints must be computed with the nonlinear inequality constraints.
For linear equalities, the coefficients of the equalities are passed
in through the matrix `Aeq` and the right-hand-side
vector `beq`.

For example, if you have the nonlinear equality constraint
and the nonlinear inequality
constraint *x*_{1}*x*_{2} ≥ –10,
rewrite them as

and then solve the problem using the following steps.

function f = objfun(x) f = exp(x(1))*(4*x(1)^2+2*x(2)^2+4*x(1)*x(2)+2*x(2)+1);

function [c, ceq] = confuneq(x) % Nonlinear inequality constraints c = -x(1)*x(2) - 10; % Nonlinear equality constraints ceq = x(1)^2 + x(2) - 1;

x0 = [-1,1]; % Make a starting guess at the solution options = optimoptions(@fmincon,'Algorithm','sqp'); [x,fval] = fmincon(@objfun,x0,[],[],[],[],[],[],... @confuneq,options);

After 21 function evaluations, the solution produced is

x,fval x = -0.7529 0.4332 fval = 1.5093 [c,ceq] = confuneq(x) % Check the constraint values at x c = -9.6739 ceq = 5.3291e-15

Note that `ceq` is equal to 0 within the default
tolerance on the constraints of `1.0e-006` and that `c` is
less than or equal to 0, as desired.

Was this topic helpful?