step.DV {pnd} | R Documentation |
Dumontet–Vignes automatic step selection
Description
Dumontet–Vignes automatic step selection
Usage
step.DV(
FUN,
x,
h0 = 1e-05 * max(abs(x), sqrt(.Machine$double.eps)),
range = h0/c(1e+06, 1e-06),
max.rel.error = .Machine$double.eps^(7/8),
ratio.limits = c(2, 15),
maxit = 40L,
cores = 1,
preschedule = getOption("pnd.preschedule", TRUE),
cl = NULL,
...
)
Arguments
FUN |
Function for which the optimal numerical derivative step size is needed. |
x |
Numeric scalar: the point at which the derivative is computed and the optimal step size is estimated. |
h0 |
Numeric scalar: initial step size, defaulting to a relative step of
slightly greater than .Machine$double.eps^(1/3) (or absolute step if |
range |
Numeric vector of length 2 defining the valid search range for the step size. |
max.rel.error |
Positive numeric scalar > 0 indicating the maximum relative
error of function evaluation. For highly accurate functions with all accurate bits
is equal to |
ratio.limits |
Numeric vector of length 2 defining the acceptable ranges for step size: the algorithm stops if the relative perturbation of the third derivative by amplified rounding errors falls within this range. |
maxit |
Maximum number of algorithm iterations to avoid infinite loops in cases
the desired relative perturbation factor cannot be achieved within the given |
cores |
Integer specifying the number of CPU cores used for parallel computation. Recommended to be set to the number of physical cores on the machine minus one. |
preschedule |
Logical: if |
cl |
An optional user-supplied |
... |
Passed to FUN. |
Details
This function computes the optimal step size for central differences using the (Dumontet and Vignes 1977) algorithm. If the estimated third derivative is exactly zero, the function assumes a third derivative of 1 to prevent division-by-zero errors.
Note: the iteration history tracks the third derivative, not the first.
Value
A list similar to the one returned by optim()
:
-
par
– the optimal step size found. -
value
– the estimated numerical first derivative (using central differences). -
counts
– the number of iterations (each iteration includes four function evaluations). -
abs.error
– an estimate of the truncation and rounding errors. -
exitcode
– an integer code indicating the termination status:-
0
– Optimal termination within tolerance. -
1
– Third derivative is zero; large step size preferred. -
3
– Solution lies at the boundary of the allowed value range. -
4
– Maximum number of iterations reached; optimal step size is within the allowed range. -
5
– Maximum number of iterations reached; optimal step size was outside allowed range and had to be snapped to a boundary. -
6
– No search was performed (used whenmaxit = 1
).
-
-
message
– A summary message of the exit status. -
iterations
– A list including the full step size search path (note: for the third derivative), argument grids, function values on those grids, and estimated third derivative values.
References
Dumontet J, Vignes J (1977). “Détermination du pas optimal dans le calcul des dérivées sur ordinateur.” RAIRO. Analyse numérique, 11(1), 13–25. doi:10.1051/m2an/1977110100131.
Examples
f <- function(x) x^4
step.DV(x = 2, f)
step.DV(x = 2, f, h0 = 1e-3)
# Plug-in estimator with only one evaluation of f'''
step.DV(x = 2, f, maxit = 1)
step.plugin(x = 2, f)