polynomialIndex: Multivariate Polynomial Representation

View source: R/RcppExports.R

polynomialIndexR Documentation

Multivariate Polynomial Representation

Description

Function polynomialIndex provides a matrix which allows to iterate through the elements of multivariate polynomial being aware of these elements' powers. So (i, j)-th element of the matrix is power of j-th variable in i-th multivariate polynomial element.

Function printPolynomial prints multivariate polynomial given its degrees (pol_degrees) and coefficients (pol_coefficients) vectors.

Usage

polynomialIndex(pol_degrees = numeric(0), is_validation = TRUE)

printPolynomial(pol_degrees, pol_coefficients, is_validation = TRUE)

Arguments

pol_degrees

a non-negative integer vector of polynomial degrees (orders).

is_validation

logical value indicating whether function input arguments should be validated. Set it to FALSE for a slight performance boost (default value is TRUE).

pol_coefficients

numeric vector of polynomial coefficients.

Details

Multivariate polynomial of degrees (K_{1},...,K_{m}) (pol_degrees) has the form:

a_{(0,...,0)}x_{1}^{0}*...*x_{m}^{0}+ ... + a_{(K_{1},...,K_{m})}x_{1}^{K_{1}}*...*x_{m}^{K_{m}},

where a_{(i_{1},...,i_{m})} are polynomial coefficients, while polynomial elements are:

a_{(i_{1},...,i_{m})}x_{1}^{i_{1}}*...*x_{m}^{i_{m}},

where (i_{1},...,i_{m}) are polynomial element's powers corresponding to variables (x_{1},...,x_{m}) respectively. Note that i_{j}\in \{0,...,K_{j}\}.

Function printPolynomial removes polynomial elements whose coefficients are zero and variables whose powers are zero. Output may contain long coefficient representations as they are not rounded.

Value

Function polynomialIndex returns a matrix whose rows correspond to variables while columns correspond to powers. So (i, j)-th element of this matrix corresponds to the power i_{j} of the x_{j} variable in i-th polynomial element. Therefore i-th column of this matrix contains vector of powers (i_{1},...,i_{m}) for the i-th polynomial element. So the function transforms m-dimensional elements indexing to one-dimensional.

Function printPolynomial returns the string which contains polynomial symbolic representation.

Examples

## Get polynomial indexes matrix for the polynomial 
## whose degrees are (1, 3, 5)

polynomialIndex(c(1, 3, 5))

## Consider multivariate polynomial of degrees (2, 1) such that coefficients
## for elements whose powers sum is even are 2 and for those whose powers sum
## is odd are 5. So the polynomial is 2+5x2+5x1+2x1x2+2x1^2+5x1^2x2 where
## x1 and x2 are polynomial variables.

# Create variable to store polynomial degrees
pol_degrees <- c(2, 1)

# Let's represent its powers (not coefficients) in a matrix form
pol_matrix <- polynomialIndex(pol_degrees)

# Calculate polynomial elements' powers sums
pol_powers_sum <- pol_matrix[1, ] + pol_matrix[2, ]

# Let's create a polynomial coefficients vector filling it
# with NA values
pol_coefficients <- rep(NA, (pol_degrees[1] + 1) * (pol_degrees[2] + 1))

# Now let's fill the coefficients vector with correct values
pol_coefficients[pol_powers_sum %% 2 == 0] <- 2
pol_coefficients[pol_powers_sum %% 2 != 0] <- 5

# Finally, let's check that the correspondence is correct
printPolynomial(pol_degrees, pol_coefficients)

## Let's represent a polynomial 0.3+0.5x2-x2^2+2x1+1.5x1x2+x1x2^2

pol_degrees <- c(1, 2)
pol_coefficients <- c(0.3, 0.5, -1, 2, 1.5, 1)

printPolynomial(pol_degrees, pol_coefficients)

hpa documentation built on April 14, 2026, 5:09 p.m.

Related to polynomialIndex in hpa...