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.

조회 수: 1 (최근 30일)
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')

채택된 답변

Stephen23
Stephen23 2021년 5월 14일
편집: Stephen23 2021년 5월 14일
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

추가 답변 (1개)

Walter Roberson
Walter Roberson 2021년 5월 14일
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.

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by