Can we use for loop in bisection method for root finding instead of while loop
Show older comments
f = @ (x) x.^2+5.*x-10 ;
xl=0;
xu=10;
xm = (xl+xu)/2;
tol = 1e-10;
iter = 0;
while(abs(f(xm))>tol) %do bisection till f(xm) is small enough
if (f(xl)*f(xm)<0) % determine which bracket root exists
xu = xm;
else
xl = xm;
end
iter = iter+1; %increase iteration value
xm = (xl+xu)/2 %new mean value
end
iter
Answers (2)
Bjorn Gustavsson
on 11 Jun 2019
0 votes
Yes it is possible, but why? You could use the break trick to exit the for-loop at convergence, but why bother, code should be clearly written - in the long-term vastly benefitial to marginal gains for a simple root-finding function.
HTH
Walter Roberson
on 11 Jun 2019
0 votes
Yes, a for loop makes sense to put an upper limit on iterations in case something goes wrong with the convergence. if/break works fine to leave the loop early.
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!