Skip to contents

lpolm objects represent Laurent polynomial matrices of the form $$a(z) = a_{-q} z^{-q} + \cdots + a_{-1} z^{-1} + a_0 + a_1 z + \cdots + a_p z^p$$ If \(a(z)\) is an \((m,n)\) dimensional Laurent polynomial matrix (i.e. the coefficients \(a_i\) are \((m,n)\) dimensional real or complex valued matrices), then the lpolm object stores the coefficients in an (m,n,q+p+1)-dimensional (numeric or complex) array \(a_{-q}, \ldots, a_{-1}, a_{0}, a_{1}, \ldots, a_{p}\), together with a class attribute c("lpolm","ratm").
The constructor function lpolm(a, min_deg) takes an integer min_deg (default is zero) and a (numeric or complex) vector, matrix or 3-dimensional array and returns an lpolm object.

Usage

lpolm(a, min_deg = 0)

Arguments

a

either a (numeric or complex) vector, matrix or 3-D array. A vector is coerced to a scalar (i.e. \((1,1)\)-dimensional) polynomial and a matrix gives a Laurent polynomial matrix whose only coefficient matrix is of degree min_deg.

min_deg

Integer. Default set to zero. Smallest degree in the Laurent polynomial. Negative for Laurent polynomials which cannot be coerced to polm objects (as.polm throws an error).

Value

An object of class c("lpolm", "ratm"). When non-negative, the object is still of this class. However, it can then be coerced to an object of class c("polm", "ratm") using as.polm

Details

Any of the dimensions of the 3-dimensional array may also be zero. In particular, if the third dimension is zero, then the lpolm object is interpreted as the zero Laurent polynomial.

This class is special in the sense that it is not possible to upgrade it to an lmfd, rmfd, stsp, or pseries object.

For important methods and functions for this class have a look at the "see also" section. Note that some functions are only written for polm objects: degree, col_end_matrix, normal forms like snf, hnf, whf.

See also

  • polm.

  • test_lpolm generates random polynomials.

  • checks: is.lpolm

  • generic S3 methods: dim, str and print.

  • arithmetics: Ops.ratm, matrix multiplication %r%

  • matrix operations: t.lpolm, bind, [.lpolm, [<-.lpolm, ...

  • prune discards leading and trailing zero matrices of Laurent polynomials.

  • get_bwd discards all coefficient matrices pertaining to negative powers and returns a polm object.

  • get_fwd discards all coefficient matrices pertaining to positive powers. It returns thus an lpolm object.

  • polm2fwd performs the transformation \(p(z) \rightarrow p(z^{-1})\) on a polm object and returns an lpolm object.

Examples

# (1 x 1) Laurent polynomial matrix a(z) =  3z^{-2} + 2z^{-1} + 1
lpolm(3:1, min_deg = -2)
#> ( 1 x 1 ) Laurent polynomial matrix with degree <= 0, and minimal degree >= -2
#>      z^-2 [,1] z^-1 [,1] z^0 [,1]
#> [1,]         3         2        1

# Non-negative minimal degrees are allowed too (no implicit coercion to polm object)
lpolm(3:1, min_deg = 2)
#> ( 1 x 1 ) Laurent polynomial matrix with degree <= 4, and minimal degree >= 2
#>      z^2 [,1] z^3 [,1] z^4 [,1]
#> [1,]        3        2        1

lpolm(matrix(1:4,2,2), min_deg = -2)
#> ( 2 x 2 ) Laurent polynomial matrix with degree <= -2, and minimal degree >= -2
#>      z^-2 [,1]  [,2]
#> [1,]         1     3
#> [2,]         2     4