fsolve in a for loop
11 views (last 30 days)
Show older comments
I am using fsolve to solve a system of nonlinear equations. The constants in the equations are design variables. I would like to use a for loop to vary one of the design parameters through a range and then save the different outputs (I am only interested in one of the unknowns for this part) into an array. I have attached the code. When I run it, only the first value of the parameter I would like to change is ran through fsolve.
Any help is appreciated. Im sure theres plenty of places my code could improve, but this is my question.
0 Comments
Answers (1)
Star Strider
on 1 Nov 2016
Edited: Star Strider
on 1 Nov 2016
The colon operator increments by 1 by default, so this line:
for t_CP = .01:.1
will execute only once because after the first iteration the terminating condition, 0.1, is satisfied.
You need to do something like this:
% Solve non-linear equations by iteration
t_CP = .01 : 0.01 : 0.1;
for k1 = 1:length(t_CP)
... DO SOMETHING HERE ...
end
I am not certain what you want to do (I’m actually lost) so I’ve no idea what you’re looping through.
This might be an option:
% Solve non-linear equations by iteration
x0=[250 250 250 250 250 250 250 250 250 250 250 250 250 250 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 250 250 250 250 250 250 250 250 250 250 250 250 250 250]; %guesses for variables
for t_CP = 1:length(x0)
options=optimset('Display','off');
fsol = fsolve(@equation_function_model_2,x0(k1),options)
X(k1) = fsol(1)
end
This is just a guess.
2 Comments
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!