Solving nonlinear equations using fmincon

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, ...

 採用された回答

Star Strider
Star Strider 2020 年 7 月 28 日

0 投票

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 件のコメント

MB
MB 2020 年 7 月 28 日
Yes! Thank you. :)
Star Strider
Star Strider 2020 年 7 月 28 日
As always, my pleasure!

サインインしてコメントする。

その他の回答 (0 件)

製品

リリース

R2020a

質問済み:

MB
2020 年 7 月 28 日

コメント済み:

2020 年 7 月 28 日

Community Treasure Hunt

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

Start Hunting!

Translated by