Hermite polynomials

knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)
library(calculus)

Hermite polynomials are obtained by differentiation of the Gaussian kernel:

$$H_{\nu}(x,\Sigma) = exp \Bigl( \frac{1}{2} x_i \Sigma_{ij} x_j \Bigl) (- \partial_x )^\nu exp \Bigl( -\frac{1}{2} x_i \Sigma_{ij} x_j \Bigl)$$

where $\Sigma$ is a $d$-dimensional square matrix and $\nu=(\nu_1 \dots \nu_d)$ is the vector representing the order of differentiation for each variable $x = (x_1\dots x_d)$. In the case where $\Sigma=1$ and $x=x_1$ the formula reduces to the standard univariate Hermite polynomials:

$$ H_{\nu}(x) = e^{\frac{x^2}{2}}(-1)^\nu \frac{d^\nu}{dx^\nu}e^{-\frac{x^2}{2}} $$

The function hermite generates recursively all the Hermite polynomials of degree $\nu'$ where $|\nu'| \leq|\nu|$. The output is a list of Hermite polynomials of degree $\nu'$, where each polynomial is described as a list containing the character representing the polynomial, the order of the polynomial, and a data.frame containing the variables, coefficients and degrees of each term in the polynomial.

In the univariate case, for $\nu=2$:

hermite(order = 2)

In the multivariate case, where for simplicity $\Sigma_{ij}=\delta_{ij}$, $x=(x_1,x_2)$, and $|\nu|=2$:

hermite(order = 2, sigma = diag(2), var = c("x1", "x2"))

If transform is not NULL, the variables var $x$ are replaced with transform $f(x)$ to compute the polynomials $H_{ν}(f(x),\Sigma)$. For example:

$$ f(x_1,x_2)= \begin{bmatrix} x_1+x_2,x_1-x_2 \end{bmatrix} $$

hermite(order = 2, sigma = diag(2), var = c("x1", "x2"), transform = c('x1+x2','x1-x2'))

Cite as

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},
}


Try the calculus package in your browser

Any scripts or data that you put into this service are public.

calculus documentation built on March 31, 2023, 11:03 p.m.