The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
library(calculus)
The function taylor
provides a convenient way to compute the Taylor series of arbitrary
unidimensional or multidimensional functions. The mathematical function
can be specified both as a character
string or as a
function
. Symbolic or numerical methods are applied
accordingly. For univariate functions, the \(n\)-th order Taylor approximation centered
in \(x_0\) is given by:
\[ f(x) \simeq \sum_{k=0}^n\frac{f^{(k)}(x_0)}{k!}(x-x_0)^k \]
where \(f^{(k)}(x_0)\) denotes the \(k\)-th order derivative evaluated in \(x_0\). By using multi-index notation, the Taylor series is generalized to multidimensional functions with an arbitrary number of variables:
\[ f(x) \simeq \sum_{|k|=0}^n\frac{f^{(k)}(x_0)}{k!}(x-x_0)^k \]
where now \(x=(x_1,\dots,x_d)\) is the vector of variables, \(k=(k_1,\dots,k_d)\) gives the order of differentiation with respect to each variable \(f^{(k)}=\frac{\partial^{(|k|)}f}{\partial^{(k_1)}_{x_1}\cdots \partial^{(k_d)}_{x_d}}\), and:
\[|k| = k_1+\cdots+k_d \quad\quad k!=k_1!\cdots k_d! \quad\quad x^k=x_1^{k_1}\cdots x_d^{k_d}\]
The summation runs for \(0\leq |k|\leq n\) and identifies the set
\[\{(k_1,\cdots,k_d):k_1+\cdots k_d \leq n\}\]
that corresponds to the partitions of the integer \(n\). These partitions can be computed with
the function partitions
that is included in the package and optimized in C++
for
speed and flexibility. For example, the following call generates the
partitions needed for the \(2\)-nd
order Taylor expansion for a function of \(3\) variables:
partitions(n = 2, length = 3, fill = TRUE, perm = TRUE, equal = FALSE)
#> [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
#> [1,] 0 0 0 1 0 0 2 0 1 1
#> [2,] 0 0 1 0 0 2 0 1 0 1
#> [3,] 0 1 0 0 2 0 0 1 1 0
Based on these partitions, the function taylor
computes the corresponding derivatives and builds the Taylor series. The
output is a list
containing the Taylor series, the order of
the expansion, and a data.frame
containing the variables,
coefficients and degrees of each term in the Taylor series.
taylor("exp(x)", var = "x", order = 2)
#> $f
#> [1] "(1) * 1 + (1) * x^1 + (0.5) * x^2"
#>
#> $order
#> [1] 2
#>
#> $terms
#> var coef degree
#> 0 1 1.0 0
#> 1 x^1 1.0 1
#> 2 x^2 0.5 2
By default, the series is centered in \(x_0=0\) but the function also supports
\(x_0\neq 0\), the multivariable case,
and the approximation of user defined R functions
.
<- function(x, y) log(y)*sin(x)
f taylor(f, var = c(x = 0, y = 1), order = 2)
#> $f
#> [1] "(0.999999999969436) * x^1*(y-1)^1"
#>
#> $order
#> [1] 2
#>
#> $terms
#> var coef degree
#> 0,0 1 0 0
#> 0,1 (y-1)^1 0 1
#> 1,0 x^1 0 1
#> 0,2 (y-1)^2 0 2
#> 2,0 x^2 0 2
#> 1,1 x^1*(y-1)^1 1 2
Guidotti E (2022). “calculus: High-Dimensional Numerical and Symbolic Calculus in R.” Journal of Statistical Software, 104(5), 1-37. doi:10.18637/jss.v104.i05
A BibTeX entry for LaTeX users is
@Article{calculus,
title = {{calculus}: High-Dimensional Numerical and Symbolic Calculus in {R}},
author = {Emanuele Guidotti},
journal = {Journal of Statistical Software},
year = {2022},
volume = {104},
number = {5},
pages = {1--37},
doi = {10.18637/jss.v104.i05},
}
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.