Professor Diomar Cesar Lobao

Universidade Federal Fluminense-Volta Redonda, RJ, Brasil

Diomar Cesar


Dept. Ciências Exatas - Exact Science Dept.

Search

falspos.m

% Demonstration of Root Finding using False Position
%
% The function is defined in the file 'fcn.m'
%      function y = fcn(x)
%          y = 9.8 * 68.1 * (1-exp(-10*x/68.1))/x - 40;

clear;

      xl = input ('Enter lower bound of root bracket:  ');
      xu = input ('Enter upper bound of root bracket:  ');
maxerror = input ('Enter maximum error (percent):      ');
   maxit = input ('Enter maximum number of iterations: ');

fplot('fcn',[xl xu]); grid on; hold on;

count = 0;          % iteration counter
rel_error = 1;      % to force entry into while loop
xr = xu;            % require starting value in loop below

fprintf('\n  #         xl         xu         xr      error\n\n');

% 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));
  plot(xr,fcn(xr),'ro');

  if xr ~= 0
    rel_error = abs((xr - xrold)/xr) * 100;
  end
  fprintf('%3g %10g %10g %10g %10.4f\n',count,xl,xu,xr,rel_error)

  test = fcn(xl) * fcn(xr);  % form test product

  if test == 0
    rel_error = 0;  % root is at xr
  elseif test < 0
    xu = xr;        % root is below xr
  else
    xl = xr;        % root is above xr
  end

end
Skip to content