% 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