% Demonstration of Root Finding using False Position
%
function y = fcn(x)
y = 9.8 * 68.1 * (1-exp(-10*x/68.1))/x - 40;
end
xl = 1; % 'Enter lower bound of root bracket;
xu = 4; % 'Enter upper bound of root bracket;
maxerror = 0.01; % 'Enter maximum error ;
maxit = 100; % 'Enter maximum number of iterations;
count = 0; % iteration counter
rel_error = 1; % to force entry into while loop
xr = xu; % require starting value in loop below
write("xl ","xu ","xr ","error ");
% main loop until change between iterations small enough
while (rel_error > maxerror) & (count < maxit)
count = count + 1;
xrold = xr;
xr = xu - fcn(xu)*(xu-xl)/(fcn(xu)-fcn(xl));
if xr ~= 0
rel_error = abs((xr - xrold)/xr) * 100;
end
write(xl," ",xu," ",xr," ",rel_error);
test = fcn(xl) * fcn(xr); % form test product
if test == 0
rel_error = 0; % root is at xr
else if test < 0
xu = xr; % root is below xr
else
xl = xr; % root is above xr
end
end
end