How to solve N nonlinear equations using fsolve?

13 vues (au cours des 30 derniers jours)
Berk Özdemir
Berk Özdemir le 3 Mai 2020
I'm trying to solve a system on N nonlinear equations. For , for example, I can simply input 5 equations by hand that has 5 variables in total. Here's an example just to show what I use;
%%%%% Example %%%%%
f=@(x) [x(1)^2-x(2);
x(2)^2-x(3);
x(3)^2-x(4);
x(4)^2-x(5);
x(5)^2-x(1)];
X=ones(1,N-3);
S=fsolve(f,X);
%%%%% Example %%%%%
What I really want to do is to solve N nonlinear equations that has N variables in total. In this case there are 2 issues I need to solve.
1-) How can I input N variables?
2-) How can I input N functions?
Is there any loop I can use?
Thanks in advance.
  1 commentaire
Walter Roberson
Walter Roberson le 3 Mai 2020
do you have the symbolic toolbox? if so then create a vector of equations and matlabFunction that

Connectez-vous pour commenter.

Réponse acceptée

Walter Roberson
Walter Roberson le 3 Mai 2020
If you do not have the symbolic toolbox, you will need to enter the equations as text. strjoin() the equations with ';' and put '@(x)[' ']' around that, and str2func() to create the function handle.
  4 commentaires
Berk Özdemir
Berk Özdemir le 4 Mai 2020
Modifié(e) : Berk Özdemir le 4 Mai 2020
Dear Walter,
Thank you for your response, using vars option of matlabFunction worked, but that led me another problem.
I create a vector of symbolic variables such as;
A=sym('x', [1;N-3]);
where N is entered by the user. I checked for ,
f=matlabFunction(F,'vars',{[A(1) A(2) A(3) A(4) A(5) A(6) A(7)});
S=fsolve(f,X0);
and it worked. But what if A has 1000 variables?
EDIT : I simply changed
f=matlabFunction(F,'vars',{[A(1) A(2) A(3) A(4) A(5) A(6) A(7)});
to
f=matlabFunction(F,'vars',{[A]});
and it worked.
That helped a lot, thank you.
Walter Roberson
Walter Roberson le 4 Mai 2020
You could also just use
f=matlabFunction(F,'vars',{A});

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Symbolic Math Toolbox dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by