swh:1:snp:81eadaa089e8253d8469bcef66aa332632c6c669
Tip revision: 63e8a52ae6668e736720c89691352d6dc3bc9eb1 authored by HwB on 17 January 2012, 00:00:00 UTC
version 0.9.6
version 0.9.6
Tip revision: 63e8a52
taylor.R
##
## t a y l o r . R Taylor Series Approximation
##
taylor <- function(f, x0, n = 4, ...) {
if (!is.numeric(x0))
stop("Argument 'x0' must be a numeric value or vector.")
if (!is.numeric(n) || floor(n) != ceil(n) || length(n) != 1)
stop("Order 'n' must be an integer between 1 and 4.")
fun <- match.fun(f)
f <- function(x) fun(x, ...)
if (n > 4) {
n <- 4
warning("Order 'n' is too high; will be set to 'n=4'.")
} else if (n <= 0) {
n <- 1
warning("Order 'n' is too low; will be set to 'n=1'.")
}
T <- f(x0)
for (i in 1:n) {
T <- polyadd(T, fderiv(f, x0, i)/fact(i) * polypow(c(1, -x0), i))
}
return(T)
}