Using fsolve inside an other fsolve
1 view (last 30 days)
Show older comments
Hi everyone,
How can I use the result of each iteration fsolve as the initial guess for other fsolve. My code is like that: The main file
if true
X0 = rho; % Make a starting guess at the solution
options = optimoptions('fsolve','Display','iter'); % Option to display output
[X,fval,exitflag,output] = fsolve(@eqDFT,X0,options); % Call solver
rho=X;
end
m -file for the first fsolve
if true
function F=eqDFT(X)
Y0 = [alpha1 alpha2]; % Make a starting guess at the solution
options = optimoptions('fsolve','TolFun',1.e-12,'Display','iter'); % Option to display output
Y = fsolve(@eqAlpha,Y0,options,X); % Call solver
....
end
and the second fsolve @eqAlpha with Y variable and additionnal parameter X which is defined by rho like that
if true
function G=eqAlpha(Y,rho)
....
end
end
Thank you so much for reading this question and give me some ideas about it.
0 Comments
Accepted Answer
Alan Weiss
on 16 Mar 2015
I am not sure that I understand you. How many times do you want to run fsolve? I suppose that you have a sequence of equations to solve, where each differs from the previous by a little bit, so the solution to the previous equation is a good starting guess for the next.
All you have to do is to use the previous solution x as the x0 input for fsolve. Something like
x0 = rho
for ii = 1:15
x = fsolve(fun,x0);
% change the parameters for fun here
x0 = x; % update x0
end
Alan Weiss
MATLAB mathematical toolbox documentation
2 Comments
Alan Weiss
on 16 Mar 2015
What you are doing looks reasonable in some sense. But some of the details are not clear to me.
When you call
[a,Y]=fsolve(@func(Y,X(i)),Y0);
the returned Y will almost certainly be a vector of zeros, or a vector with very small elements. Is that what you want?
Alan Weiss
MATLAB mathematical toolbox documentation
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!