# Any value (different values) I enter for TOLERANCE and ITERATION gives the same results(Answer( . It is supposed to give different answers . I don't know why this is occurring.

2 views (last 30 days)
Jim Wilson Owusu on 14 May 2021
Edited: Stephen Cobeldick on 14 May 2021
clear all
close all
clc
tol=input ('Enter TOLERANCE number:') ;
n =input('Enter ITERATION number:');
n=100;
f=@(x) (x+1-2*sin(pi*x));
a=0;
b=0.5;
if f(a) * f(b)>0
warning('ít is not applicable:')
elseif f(a)==0
fprintf('The root is %d', a)
elseif f(b)==0
fprintf('The root is %d', b)
end
pre=0;
for i=1:n
c=(a+b)/2;
if f(c)==0
fprintf('The root is: %d\n', c)
elseif f(c)*f(b)<0
a=c;
elseif f(c)*f(a)<0
b=c;
end
if abs(c-pre)<=tol
break;
end
pre=c;
end
fprintf('The root is %g with the %.3d tolerance',c,tol)
plot(c, f(c),f(a), 'ro')

Stephen Cobeldick on 14 May 2021
Edited: Stephen Cobeldick on 14 May 2021
tol = 0.001;
n = 100;
f = @(x) (x+1-2*sin(pi*x));
fplot(f,[0,0.5])
a = 0;
b = 0.5;
pre=0;
for i = 1:n
c = (a+b)/2;
if f(c)==0
fprintf('The root is: %d\n', c)
elseif f(c)*f(b)<0
a=c;
else % !!!!!!!!!!!! Remove ELSEIF here !!!!!!!!!
b=c;
end
if abs(c-pre)<=tol
break;
end
pre=c;
end
fprintf('The root is %g with the %g tolerance in %d iterations',c,tol,i)
The root is 0.206055 with the 0.001 tolerance in 9 iterations

Walter Roberson on 14 May 2021
You exit the loop when you reach the tolerance.
What happens if you exit the loop no later than 5 iterations? Then giving 20 instead would not produce any change in output. You should display the number of iterations used as well.