Filter löschen
Filter löschen

Solving nonlinear equations using fmincon

6 Ansichten (letzte 30 Tage)
MByk
MByk am 28 Jul. 2020
Kommentiert: Star Strider am 28 Jul. 2020
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, ...

Akzeptierte Antwort

Star Strider
Star Strider am 28 Jul. 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.
.
  2 Kommentare
MByk
MByk am 28 Jul. 2020
Yes! Thank you. :)
Star Strider
Star Strider am 28 Jul. 2020
As always, my pleasure!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Systems of Nonlinear Equations finden Sie in Help Center und File Exchange

Produkte


Version

R2020a

Community Treasure Hunt

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

Start Hunting!

Translated by