Help with iteration counter not working or displaying wrong numbers?
Show older comments
Hi, I was creating some code to solve an equation using bisection and regula falsi. I wanted to see which method converges faster so I decided to make an iteration counter to count how many iterations were done for each result to meet my tolerance value (0.001). I'm not sure why the iterations number which are displayed along side my other value are the same for both methods. They also have decimal places. Is there somewhere in bisect.m or regfalsi.m where I am making a mistake or in main.m where I pull the iteration values in part B and C.
Specifically this area
function bisectioncalc = bisect(f,a,b) %Head is the num.soln
c = (a+b)/2; % calculation of midpoint
r = abs(f(c));
I=0;
while r > 0.001
if (f(a)*f(c))<0
b = c; % c values becomes a
elseif (f(b)*f(c))<0
a = c; % c values becomes b
end
c = (a+b)/2;
r = abs(f(c)); %relative error/tolerance formula
I = I + 1;
end
bisectioncalc = c; %assign c back to bisectionfalsicalc
end
I want to know whether my placment of the counter is correct and if I am calling it correctly in main.m
Thank you!
3 Comments
Walter Roberson
on 25 Feb 2021
The counter looks fine there.
Where is your else case if neither condition is satisfied?
(If you can be certain that one of the two will be satisfied then you do not need the second test.)
Ralph Rodrigues
on 25 Feb 2021
Edited: Ralph Rodrigues
on 25 Feb 2021
Walter Roberson
on 25 Feb 2021
What if f(c ) is exactly equal to 0?
Accepted Answer
More Answers (0)
Categories
Find more on Logical 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!