mirror of
https://bitbucket.org/Mattrixwv/octavefunctions.git
synced 2025-12-06 10:43:58 -05:00
38 lines
967 B
Matlab
38 lines
967 B
Matlab
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(nargin ~= 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
|