polynomialIndex: Multivariate Polynomial Representation

View source: R/RcppExports.R

polynomialIndexR Documentation

Multivariate Polynomial Representation

Description

Function polynomialIndex provides 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

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 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 which coefficients are zero and variables which powers are zero. Output may contain long coefficients representation as they are not rounded.

Value

Function polynomialIndex returns matrix which rows are responsible for variables while columns are related 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 
## which degrees are (1, 3, 5)

polynomialIndex(c(1, 3, 5))

## Consider multivariate polynomial of degrees (2, 1) such that coefficients
## for elements which powers sum is even are 2 and for those which 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 polynomial coefficients vector filling it
# with NA values
pol_coefficients <- rep(NA, (pol_degrees[1] + 1) * (pol_degrees[2] + 1))

# Now let's fill 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 correspondence is correct
printPolynomial(pol_degrees, pol_coefficients)

## Let's represent 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 May 31, 2023, 8:25 p.m.

Related to polynomialIndex in hpa...