Azzera filtri
Azzera filtri

Solving nonlinear equations using fmincon

27 visualizzazioni (ultimi 30 giorni)
Hello, I have 4 nonlinear equations with 4 unknows (x(1), x(2), x(3), x(4)). I can get solutions using "lsqnonlin" and "fsolve" but I'am having an error message when I use fmincon. How can I fix it? I also tried to create a function and put all equations inside but it is not working either. Thanks for the help.
Obj_Fun = @(x)[ ... ] % 4 equations in each row.
lb = [-1,-1,-1,-1];
ub = [1,1,1,1];
A = [];
b = [];
Aeq = [];
beq = [];
x0 = rand(1,4);
[x,fval,exitflag,output] = fmincon(Obj_Fun,x0,A,b,Aeq,beq,lb,ub)
Error using fmincon (line 635)
Supplied objective function must return a scalar value.
Error in FMinCon_Testing (line 30)
[x,fval,exitflag,output] = fmincon(Obj_Fun,x0,A,b,Aeq,beq, ...

Risposta accettata

Star Strider
Star Strider il 28 Lug 2020
The error is straightforward:
Error using fmincon (line 635)
Supplied objective function must return a scalar value.
This is the reason fsolve works, since it is a root-finding algorithm.
In order for this to work with fmincon (and certain other optimisation functions), you would need to do something like this:
[x,fval,exitflag,output] = fmincon(@(x)norm(Obj_Fun(x)),x0,A,b,Aeq,beq,lb,ub)
That will llikely work with fmincon. Whether it produces the desired result is less certain.
.

Più risposte (0)

Categorie

Scopri di più su Systems of Nonlinear Equations in Help Center e File Exchange

Prodotti


Release

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by