https://github.com/cran/pracma
Tip revision: 71455748623ef69836470c75c5f9384f6e872d45 authored by HwB on 28 June 2011, 00:00:00 UTC
version 0.6-3
version 0.6-3
Tip revision: 7145574
aitken.R
##
## a i t k e n . R Aitken's acceleration method
##
aitken <- function(f, x0, nmax = 12, tol = 1e-8, ...) {
if (!is.numeric(x0) || length(x0) != 1)
stop("Argument 'x0' must be a numeric scalar.")
fun <- match.fun(f)
f <- function(x) fun(x, ...)
x <- x0
diff <- 1 + tol
niter <- 0
while (diff > tol && niter <= nmax) {
gx <- f(x)
ggx <- f(gx)
xnew <- (x*ggx - gx^2) / (ggx - 2*gx + x)
diff <- abs(x - xnew)
x <- xnew
niter <- niter + 1
}
if (niter > nmax)
warning("Maximum number of iterations exceeded.")
return(x)
}