function [xList, errorList] = NewNewton (f, startingValue, errorAllowed) % %NewNewton (f, startingValue, errorAllowed) %This function computes the root of a function using the modified Newton's method % %Make sure the number of arguments is correct if(nargin ~= 3) 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; fp = diff(f); fpp = diff(fp); %Variables oldAnswer = startingValue; newAnswer = 0; currentError = errorAllowed + 1; cnt = 1; %Loop until you find an answer within error or you reach the maximum number of itterations while((currentError >= errorAllowed) && (cnt < maxIt)) newAnswer = oldAnswer - ((double(subs(f,oldAnswer)) * double(subs(fp,oldAnswer)))/(double(subs(fp,oldAnswer))^2 - (double(subs(f,oldAnswer)) * double(subs(fpp,oldAnswer))))); currentError = abs(newAnswer - oldAnswer); xList(end+1) = newAnswer; errorList(end+1) = currentError; oldAnswer = newAnswer; end end