-
Notifications
You must be signed in to change notification settings - Fork 0
/
Bisection.asv
50 lines (38 loc) · 1017 Bytes
/
Bisection.asv
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
38
39
40
41
42
43
44
45
46
47
48
49
50
function [itr, x_l, x_u] = Bisection(f, currentI, Xu,Xl,es,Im, mode, table)
format long
if((f(Xl))*(f(Xu))>0)
disp('no bracket');
table.Data =
return
end
xrold = 0;
%for strp mode
if (strcmp(mode, 'Step') ~= 0)
Im = currentI;
end
for i = currentI : Im
startTime = cputime;
Xr=(Xu+Xl)/2; % compute the midpoint xr
ea = abs((Xr-xrold)/Xr); % approx. relative error
test= f(Xl) * f(Xr); % compute f(xl)*f(xr)
xrold = Xr ;
itr = i + 1;
%adding new row to table
oldData = get(table,'Data');
newData = [oldData; {i, Xl, Xu, Xr, ea, cputime - startTime}];
set(table,'Data',newData)
if(test < 0)
Xu=Xr;
else
Xl=Xr;
end
x_l = Xl;
x_u = Xu;
if(test == 0)
ea=0;
end
if(ea < es)
break;
end
end
end % end of quadratic