# bisect: Rootfinding Through Bisection or Secant Rule In pracma: Practical Numerical Math Functions

 bisect R Documentation

## Rootfinding Through Bisection or Secant Rule

### Description

Finding roots of univariate functions in bounded intervals.

### Usage

``````bisect(fun, a, b, maxiter = 500, tol = NA, ...)

secant(fun, a, b, maxiter = 500, tol = 1e-08, ...)

regulaFalsi(fun, a, b, maxiter = 500, tol = 1e-08, ...)
``````

### Arguments

 `fun` 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)` `...` additional arguments passed to the function.

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

The “Secant rule” uses a succession of roots of secant lines to better approximate a root of a function. “Regula falsi” combines bisection and secant methods. The so-called ‘Illinois’ improvement is used here.

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

`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
secant(f, 0.6, 1)       # 0.5384693         different root
regulaFalsi(f, 0.6, 1)  # 0.9061798459      correct to 10 decimals
``````

pracma documentation built on Nov. 10, 2023, 1:14 a.m.