Files
OctaveFunctions/NewNewton.m

33 lines
1.0 KiB
Matlab

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