R: Rootfinding Through Bisection

bisect {pracma} | R Documentation

## Rootfinding Through Bisection

### Description

Finding roots of univariate functions in bounded intervals.

### Usage

    bisect(f, a, b, maxiter = 100, tol = NA)

    regulaFalsi(f, a, b, maxiter = 100, tol = .Machine$double.eps^0.5)

### Arguments

`f` | Function or its name as a string.
`a, b` | interval end points.
`maxiter` | maximum number of iterations; default 100.
`tol` | absolute tolerance; default `eps^(1/2)`

### Details

“Bisection” is a well known root finding algorithms for real, univariate, continuous functions. Bisection works in any case if the function has opposite signs at the endpoints of the interval.

`bisect` stops when floating point precision is reached, attaching a tolerance is no longer needed. This version is trimmed for exactness, not speed. Special care is taken when 0.0 is a root of the function. Argument 'tol' is deprecated and not used anymore.

“Regula falsi” combines bisection and secant methods. The so-called ‘Illinois’ improvement is used.

### Value

Return a list with components `root`, `f.root`, the function value at the found root, `iter`, the number of iterations done, and `root`, and the estimated accuracy `estim.prec`

### References

Quarteroni, A., R. Sacco, and F. Saleri (2007). Numerical Mathematics. Second Edition, Springer-Verlag, Berlin Heidelberg.

### See Also

`ridders`

### Examples

    bisect(sin, 3.0, 4.0)
    # $root             $f.root             $iter   $estim.prec
    # 3.1415926536      1.2246467991e-16    52      4.4408920985e-16

    bisect(sin, -1.0, 1.0)
    # $root             $f.root             $iter   $estim.prec
    # 0                 0                   2       0

    # Legendre polynomial of degree 5
    lp5 <- c(63, 0, -70, 0, 15, 0)/8
    f <- function(x) polyval(lp5, x)
    bisect(f, 0.6, 1)       # 0.9061798453      correct to 15 decimals
    regulaFalsi(f, 0.6, 1)  # 0.9061798459      correct to 10 decimals

[Package pracma version 2.0.4 Index]