clc, clf, clear all, close all;
f = input('Define function: ');
tol = input('Enter tolerance: ');
L = -100;
U = 100;
n=100;
j = 1;
for i = L:U
if f(i)*f(i+1) < 0
a(j) = i;
b(j) = i+1;
j = j+1;
end
end
if ~exist('a', 'var')
fprintf('Cannot solve using Bisection or False Position Method!');
return;
end
choice = input('Select 1 for Bisection Method, 2 for False Position Method: ');
if choice == 1
fprintf('------------------------------\n');
fprintf('Solving using Bisection Method\n');
fprintf('------------------------------\n');
elseif choice == 2
fprintf('-----------------------------------\n');
fprintf('Solving using False Position Method\n');
fprintf('-----------------------------------\n');
else
fprintf('Invalid Selection!\n');
return;
end
x = a(1):0.001:b(end);
hold on, grid on, box on
set(gca,'fontname','times new roman','fontsize', 12)
set(gcf,'Position', [400 200 550 300])
xline(0), yline(0)
plot(x, f(x), 'b', 'linewidth', 1.5), xlabel('x'), ylabel('f(x)'),
for i = 1:length(a)
c=0;
fprintf('Guess %d: a=%d, b=%d\n', i, a(i),b(i));
for j= 1:n
cp = c;
if choice == 1
c = (a(i)+b(i))/2;
else
c = (a(i)*f(b(i))-b(i)*f(a(i)))/(f(b(i))-f(a(i)));
end
error = abs(c-cp);
I(j,1)=j;
A(j,1)=a(i);
B(j,1)=b(i);
fa(j,1)=f(a(i));
fb(j,1)=f(b(i));
C(j,1)=c;
fc(j,1)=f(c);
Error(j,1)=error;
if error <= tol
break
end
if f(a(i))*f(c) < 0
b(i) = c;
elseif f(a(i))*f(c) > 0
a(i) = c;
else
break
end
end
root(i)=c;
data = table(I,A,B,fa,fb,C,fc,Error);
disp(data)
fprintf('Root is: %d\n', c);
plot(c, 0, 'r*', 'LineWidth', 2)
clear I A B fa fb C fc Error;
end