MATLAB Answers

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)
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')

Accepted Answer

Stephen Cobeldick
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

More Answers (1)

Walter Roberson
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.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!