calculus (version 1.0.1)

hermite: Hermite Polynomials

Description

Computes univariate and multivariate Hermite polynomials.

Usage

hermite(order, sigma = 1, var = "x", transform = NULL)

Value

list of Hermite polynomials with components:

f

the Hermite polynomial.

order

the order of the Hermite polynomial.

terms

data.frame containing the variables, coefficients and degrees of each term in the Hermite polynomial.

Arguments

order

the order of the Hermite polynomial.

sigma

the covariance matrix of the Gaussian kernel.

var

character vector giving the variables of the polynomial.

transform

character vector representing a change of variables. See details.

Details

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

If transform is not NULL, the variables var \(x\) are replaced with transform \(f(x)\) to compute the polynomials \(H_{\nu}(f(x),\Sigma)\)

References

Guidotti E (2022). "calculus: High-Dimensional Numerical and Symbolic Calculus in R." Journal of Statistical Software, 104(5), 1-37. tools:::Rd_expr_doi("10.18637/jss.v104.i05")

See Also

Other polynomials: taylor()

Examples

Run this code
### univariate Hermite polynomials up to order 3
hermite(3)

### multivariate Hermite polynomials up to order 2
hermite(order = 2, 
        sigma = matrix(c(1,0,0,1), nrow = 2), 
        var = c('z1', 'z2'))
        
### multivariate Hermite polynomials with transformation of variables
hermite(order = 2, 
        sigma = matrix(c(1,0,0,1), nrow = 2), 
        var = c('z1', 'z2'),
        transform = c('z1+z2','z1-z2'))
        

Run the code above in your browser using DataLab