Files
OctaveFunctions/FalsePosition.m

41 lines
983 B
Matlab

function [xList, errorList] = FalsePosition(f, p0, p1, errorAllowed)
%
%FalsePosition(f, p0, p1, errorAllowed)
%This function finds the root of a function using the method of False Position
%
%Make sure the number of arguments is correct
if(nargin ~= 4)
error('That is an incorrect number of arguments')
end
%A few necesary before we begin
pkg load symbolic;
warning('off','OctSymPy:sym:rationalapprox');
%Constant variables
maxIt = 50;
%Variables
cnt = 2;
q0 = double(subs(f,p0));
q1 = double(subs(f,p1));
p = 0;
q = 0;
currentError = errorAllowed + 1;
%Loop until you find a value within the error or you reach the maximum number of itterations
while((cnt <= maxIt) && (currentError >= errorAllowed))
p = p1 - (q1 * (p1 - p0))/(q1 - q0);
currentError = abs(p - p1);
%Add Values to lists
xList(end+1) = p;
errorList(end+1) = currentError;
++cnt;
q = double(subs(f,p));
if((q * q1) < 0)
p0 = p1;
q0 = q1;
end
p1 = p;
q1 = q;
end
end