-
Notifications
You must be signed in to change notification settings - Fork 0
/
NewtonRaphson.m
38 lines (33 loc) · 1.06 KB
/
NewtonRaphson.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
function [root, i, diffunc] = NewtonRaphson(func,currentI, initialPoint,maxIteration,precision,mode, table)
%Newton Summary of this function goes here
% Detailed explanation goes here
syms x;
diffunc = diff(func,x);
x0 = initialPoint;
%for strp mode
if (strcmp(mode, 'Step') ~= 0)
maxIteration = currentI;
end
for counter = currentI : maxIteration
startTime = cputime;
denom = vpa(subs(diffunc,x0));
if(denom == 0)
table.Data = {'', '', '', 'Division By Zero', '', ''};
i = 0;
root = x0;
return
end
x1 = x0 - (func(x0)/ vpa(subs(diffunc,x0)));
i = counter + 1;
%adding new row to table
oldData = get(table,'Data');
newData = [oldData; {counter, double(x0), '', double(x1),double(abs(x1 - x0)) , cputime - startTime}];
set(table,'Data',newData)
if( precision > abs(x1 -x0))
root = double(x1);
return;
end
x0 = x1;
root = double(x1);
end
end