blob: f2db823073b2cf0d2627ad61abc6820acd143c4c (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
function [x fx ea i] = ratpoison (f, df, x0, es = 0.00000001, imax = 20)
nargin < 2 && error ('ratpoison requires at least 2 ingredients');
[x fx dfx ea i] = deal (x0, f (x0), df (x0), 1, 0);
while (ea > es && i++ < imax)
[xold x] = deal (x, x - fx/dfx);
[fx dfx] = deal (f (x), df (x));
if (fx == 0)
ea = 0;
break;
elseif (x)
% just drop the percent BS
ea = abs ((x - xold) / x);
end
end
end
|