uniroot {stats} R Documentation

## One Dimensional Root (Zero) Finding

### Description

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.

### Usage

```uniroot(f, interval, lower = min(interval), upper = max(interval),
tol = .Machine\$double.eps^0.25, maxiter = 1000, ...)
```

### Arguments

 `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`.

### Details

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.

### Value

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`.

### References

Brent, R. (1973) Algorithms for Minimization without Derivatives. Englewood Cliffs, NJ: Prentice-Hall.

`polyroot` for all complex roots of a polynomial; `optimize`, `nlm`.

### Examples

```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
```

[Package stats version 2.1.0 Index]