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.
    5 views (last 30 days)
  
       Show older comments
    
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')


0 Comments
Accepted Answer
  Stephen23
      
      
 on 14 May 2021
        
      Edited: Stephen23
      
      
 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)
0 Comments
More Answers (1)
  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.
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!