Learn R Programming

NMOF (version 0.20-0)

bracketing: Zero-Bracketing

Description

Bracket the zeros (roots) of a univariate function

Usage

bracketing(fun, interval, ...,
           lower = min(interval), upper = max(interval),
           n = 20L,
           method = c("loop", "vectorised", "multicore", "snow"),
           mc.control = list(), cl = NULL)

Arguments

fun
a univariate function; it will be called as fun(x, ...) with x being a numeric vector
interval
a numeric vector, containing the end-points of the interval to be searched
...
further arguments passed to fun
lower
lower end-point. Ignored if interval is specified.
upper
upper end-point. Ignored if interval is specified.
n
the number of function evaluations. Must be at least 2 (in which case fun is evaluated only at the end-points); defaults to 20.
method
can be loop (the default), vectorised, multicore or snow. See Details.
mc.control
a list containing settings that will be passed to mclapply if method is multicore. Must be a list of named elements. See the documentation of mclapply in package multicore.
cl
default is NULL. If method is snow, this must be a cluster object or an integer (the number of cores to be used). See the documentation of package snow.

Value

  • a numeric matrix with two columns. Each row contains one interval that contains at least one root. If no roots were found, the matrix has zero rows.

Details

bracketing evaluates fun at equal-spaced values of x between (and including) lower and upper. If the sign of fun changes between two consecutive x-values, bracketing reports these two x-values as containing (bracketing) a root. There is no guarantee that there is only one root within a reported interval. bracketing will not narrow the chosen intervals. The argument method determines how fun is evaluated. Default is loop. If method == "vectorised", fun must be written such that it can be evaluated for a vector x (see Examples). If method == "multicore", function mclapply from package multicore is used. Further settings for mclapply can be passed through the list mc.control. If multicore is chosen but the package is not available (eg, currently on Windows), then method will be set to loop and a warning is issued. If method == "snow", function clusterApply from package snow is used. In this case, the argument cl must either be a cluster object (see the documentation of clusterApply) or an integer. If an integer, a cluster will be set up via makeCluster(c(rep("localhost", cl)), type = "SOCK"), and stopCluster is called when the function is exited. If snow is chosen but the package is not available or cl is not specified, then method will be set to loop and a warning is issued. In case that cl is a cluster object, stopCluster will not be called automatically.

References

Gilli, M., Maringer, D. and Schumann, E. (2011) Numerical Methods and Optimization in Finance. Elsevier. http://www.elsevierdirect.com/product.jsp?isbn=9780123756626 Schumann, E. (2011) Examples and Extensions for the NMOF Package. http://ssrn.com/abstract=1886522

See Also

uniroot (in package stats)

Examples

Run this code
## Gilli/Maringer/Schumann (2011), p. 290
testFun <- function(x) cos(1/x^2)

bracketing(testFun, interval = c(0.3, 0.9), n = 26L)
bracketing(testFun, interval = c(0.3, 0.9), n = 26L, method = "vectorised")

Run the code above in your browser using DataLab