Skip to contents

A class for spectral specifications of multi-companion matrices.

Objects from the Class

Objects can be created by calls of one of the following equivalent forms:

  • mcSpec(dim, mo, root1, iorder, siorder, order, evtypes, ...),

  • new("mcSpec", dim, mo, root1, iorder, siorder, order, evtypes, ...).

An object of class "mcSpec" holds a spectral specification of a square multi-companion matrix. The specification may be only partial. In that case unspecified components are set to NA.

Eigenvalues are represented by their modulus and complex argument. The argument is in cycles per unit time. So, a negative real number has argument 0.5.

The complex eigenvalues come in pairs and only one needs to be specified. If an eigenvalue is not simple, it should not be repeated. Rather, the size of the corresponding Jordan block should be specified.

The types of the eigenvalues may be "r" (real) or "cp" (complex pair).

See mcSpec for full details about the initialization function for class mcSpec.

Slots

dim:

dimension of the matrix, a positive integer.

mo:

multi-companion order, a positive integer.

ev.type:

Types of eigenvalues, "r" or "cp", a character vector.

co.type:

Types of the co parameters, a character vector.

order:

orders of the factors, the default is rep(dim,mo).

n.root:

number of nonzero roots.

ev.abs:

absolute values (moduli) of the roots.

ev.arg:

complex arguments of the roots (cycles per unit time). In particular, zero for positive reals, 0.5 for negative reals. (TODO: check that functions that use this specification know that!)

block.length:

sizes of Jordan blocks corresponding to the eigenvalues, a vector of positive integers. By default the eigenvalues are simple.

co.abs:

moduli of the co parameters, a matrix.

co.arg:

arguments of the co parameters, a matrix.

mo.col:

Object of class "numeric".

F0bot:

Object of class "optionalMatrix".

Methods

initialize

signature(.Object = "mcSpec"): see mcSpec.

Author

Georgi N. Boshnakov

Note

The initialization function for mcSpec class is incomplete, in the sense that it does not cover all cases.

See also

Examples

mcSpec(dim = 5, mo = 4, root1 = c(1,1), order = rep(3,4))
#> An object of class "mcSpec"
#> Slot "dim":
#> [1] 5
#> 
#> Slot "mo":
#> [1] 4
#> 
#> Slot "ev.type":
#> [1] "r" "r" "r" "r" "r"
#> 
#> Slot "co.type":
#> character(0)
#> 
#> Slot "order":
#> [1] 3 3 3 3
#> 
#> Slot "n.root":
#> [1] 3
#> 
#> Slot "ev.abs":
#> [1]  1  1  0  0 NA
#> 
#> Slot "ev.arg":
#> [1]  0  0  0  0 NA
#> 
#> Slot "block.length":
#> [1] 1 1 1 1 1
#> 
#> Slot "co.abs":
#>      [,1] [,2] [,3] [,4] [,5]
#> [1,]   NA   NA    0    0   NA
#> [2,]   NA   NA    0    0   NA
#> [3,]   NA   NA    1    0   NA
#> [4,]   NA   NA    0    1   NA
#> 
#> Slot "co.arg":
#>      [,1] [,2] [,3] [,4] [,5]
#> [1,]   NA   NA    0    0   NA
#> [2,]   NA   NA    0    0   NA
#> [3,]   NA   NA    0    0   NA
#> [4,]   NA   NA    0    0   NA
#> 
#> Slot "mo.col":
#> [1] 3
#> 
#> Slot "F0bot":
#> NULL
#> 
mcSpec(dim = 5, mo = 4, root1 = c(1,1,1), order = rep(5,4))
#> An object of class "mcSpec"
#> Slot "dim":
#> [1] 5
#> 
#> Slot "mo":
#> [1] 4
#> 
#> Slot "ev.type":
#> [1] "r"  "r"  "r"  "cp"
#> 
#> Slot "co.type":
#> character(0)
#> 
#> Slot "order":
#> [1] 5 5 5 5
#> 
#> Slot "n.root":
#> [1] 5
#> 
#> Slot "ev.abs":
#> [1]  1  1  1 NA
#> 
#> Slot "ev.arg":
#> [1]  0  0  0 NA
#> 
#> Slot "block.length":
#> [1] 1 1 1 1
#> 
#> Slot "co.abs":
#>      [,1] [,2] [,3] [,4]
#> [1,]   NA   NA   NA   NA
#> [2,]   NA   NA   NA   NA
#> [3,]   NA   NA   NA   NA
#> [4,]   NA   NA   NA   NA
#> 
#> Slot "co.arg":
#>      [,1] [,2] [,3] [,4]
#> [1,]   NA   NA   NA   NA
#> [2,]   NA   NA   NA   NA
#> [3,]   NA   NA   NA   NA
#> [4,]   NA   NA   NA   NA
#> 
#> Slot "mo.col":
#> [1] 5
#> 
#> Slot "F0bot":
#> NULL
#> 
mcSpec(dim = 5, mo = 4, root1 = c(1,1,1,1), order = rep(5,4))
#> An object of class "mcSpec"
#> Slot "dim":
#> [1] 5
#> 
#> Slot "mo":
#> [1] 4
#> 
#> Slot "ev.type":
#> [1] "r" "r" "r" "r" "r"
#> 
#> Slot "co.type":
#> character(0)
#> 
#> Slot "order":
#> [1] 5 5 5 5
#> 
#> Slot "n.root":
#> [1] 5
#> 
#> Slot "ev.abs":
#> [1]  1  1  1  1 NA
#> 
#> Slot "ev.arg":
#> [1]  0  0  0  0 NA
#> 
#> Slot "block.length":
#> [1] 1 1 1 1 1
#> 
#> Slot "co.abs":
#>      [,1] [,2] [,3] [,4] [,5]
#> [1,]    1    0    0    0   NA
#> [2,]    0    1    0    0   NA
#> [3,]    0    0    1    0   NA
#> [4,]    0    0    0    1   NA
#> 
#> Slot "co.arg":
#>      [,1] [,2] [,3] [,4] [,5]
#> [1,]    0    0    0    0   NA
#> [2,]    0    0    0    0   NA
#> [3,]    0    0    0    0   NA
#> [4,]    0    0    0    0   NA
#> 
#> Slot "mo.col":
#> [1] 5
#> 
#> Slot "F0bot":
#> NULL
#>