uniroot {stats} | R Documentation |
The function uniroot
searches the interval from lower
to upper
for a root (i.e., zero) of the function f
with
respect to its first argument.
uniroot(f, interval, lower = min(interval), upper = max(interval), tol = .Machine$double.eps^0.25, maxiter = 1000, ...)
f |
the function for which the root is sought. |
interval |
a vector containing the end-points of the interval to be searched for the root. |
lower |
the lower end point of the interval to be searched. |
upper |
the upper end point of the interval to be searched. |
tol |
the desired accuracy (convergence tolerance). |
maxiter |
the maximum number of iterations. |
... |
additional arguments to f . |
Either interval
or both lower
and upper
must be
specified. The function uses Fortran subroutine ‘"zeroin"’ (from
Netlib) based on algorithms given in the reference below.
If the algorithm does not converge in maxiter
steps, a warning
is printed and the current approximation is returned.
A list with four components: root
and f.root
give the
location of the root and the value of the function evaluated at that
point. iter
and estim.prec
give the number of iterations
used and an approximate estimated precision for root
.
Brent, R. (1973) Algorithms for Minimization without Derivatives. Englewood Cliffs, NJ: Prentice-Hall.
polyroot
for all complex roots of a polynomial;
optimize
, nlm
.
f <- function (x,a) x - a str(xmin <- uniroot(f, c(0, 1), tol = 0.0001, a = 1/3)) str(uniroot(function(x) x*(x^2-1) + .5, low = -2, up = 2, tol = 0.0001), dig = 10) str(uniroot(function(x) x*(x^2-1) + .5, low = -2, up =2 , tol = 1e-10 ), dig = 10) ## Find the smallest value x for which exp(x) > 0 (numerically): r <- uniroot(function(x) 1e80*exp(x) -1e-300,,-1000,0, tol=1e-20) str(r, digits= 15)##> around -745.1332191 exp(r$r) # = 0, but not for r$r * 0.999... minexp <- r$r * (1 - .Machine$double.eps) exp(minexp) # typically denormalized