Performs one-dimensional root-finding using the ITP algorithm of
Oliveira and Takahashi (2021). This function is equivalent to
itp
but calculations are performed entirely using C++, and
the arguments differ slightly: itp_c
has a named required argument
pars
rather than ...
and it does not have the arguments
interval
, f.a
or f.b
.
Arguments
- f
An external pointer to a C++ function that evaluates the function
.- pars
A list of additional arguments to the function. This may be an empty list.
- a, b
Numeric scalars. Lower (
a
) and upperb
limits of the interval to be searched for a root.- epsilon
A positive numeric scalar. The desired accuracy of the root. The algorithm continues until the width of the bracketing interval for the root is less than or equal to
2 * epsilon
.- k1, k2, n0
Numeric scalars. The values of the tuning parameters
1, 2, 0. See the Details section ofitp
.The default value for
k1
initp_c
is set as the inadmissible value of-1
(in reality 1 must be positive) as a device to set the same default value fork1
asitp
, that is,k1 = 0.2 / (b - a)
. If the input value ofk1
is less than or equal to 0 then, insideitp_c
,k1 = 0.2 / (b - a)
is set.
Value
An object (a list) of class "itp"
with the same structure
as detailed in the Value section of itp
, except
that the attribute f_name
is empty (equal to ""
).
Details
For details see itp
.
References
Oliveira, I. F. D. and Takahashi, R. H. C. (2021). An Enhancement of the Bisection Method Average Performance Preserving Minmax Optimality, ACM Transactions on Mathematical Software, 47(1), 1-24. doi:10.1145/3423597
Examples
wiki_ptr <- xptr_create("wiki")
wres <- itp_c(f = wiki_ptr, pars = list(), a = 1, b = 2, epsilon = 0.0005)
wres
#> function:
#> root f(root) iterations
#> 1.521 0.0001315 4
plot(wres, main = "Wiki")