function [xList, errorList] = Secant(f, p0, p1, errorAllowed) % %Secant(f, p0, p1, errorAllowed) %This function find the root of a function using the Secant Method % %Make sure the number of arguments is correct if(narginchk(4,4)) error('That is an incorrect number of arguments') end %A few necesary things before we get started 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)); currentError = errorAllowed + 1; p = 0; %Loop until you find an answer within 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 the x and error values to memory xList(end+1) = p; errorList(end+1) = currentError; %Setup for the next run ++cnt; p0 = p1; q0 = q1; p1 = p; q1 = double(subs(f,p)); end end