mc.0chain.struct: Compute structural Jordan chains for zero eigenvalues

View source: R/mcompanion.R

mc.0chain.structR Documentation

Compute structural Jordan chains for zero eigenvalues

Description

Compute structural Jordan chains for zero eigenvalues,

Usage

mc.0chain.struct(dim, mo, mo.col, chains = list(), sort = TRUE)

Arguments

dim

dimension of the mc-matrix, a positive integer

mo

multi-companion order

mo.col

top order

chains

a list of Jordan chains for zero eigenvalues

sort

if TRUE sort the chains in descending order of their lengths.

Details

Structural Jordan chains for 0 eigenvalues are present when mo.col < dim.

If chains is empty, then this function assumes that the structural chains span the space corresponding to 0 eigenvalues (equivalently, the mo.col x mo.col principal submatrix is of full rank).

Otherwise, the chains given by chains are amended with the structural chains. The given chains are usually changed in the process. (Actually, mc.0chain.struct doesn't change existing chains. It only adds new ones if needed, since it assumes that triangulation has already been done.)

Note that a multi-companion matrix cannot have more than mo chains corresponding to an eigenvalue. In particular, it is not appropriate to ignore the possibility for chains of length larger than 1, as is normal in numerical computations, see the references for details.

Value

a list with with the following components:

eigval

the eigenvalues (all 0 here), one for each chain

len.block

the lengths of the chains

chains

a list with one element (a matrix) for each Jordan chain

Note

The more obscure particular cases need testing.

Author(s)

Georgi N. Boshnakov

See Also

mc_0chains which calls this function.

Examples

y742t <- mc.0chain.struct(7, 4, 2) # sort = TRUE is default
y742f<- mc.0chain.struct(7, 4, 2, sort = FALSE)

o <- order(y742f[[2]], decreasing = TRUE)
y742fa <- lapply(y742f, function(x) x[o])
stopifnot(identical(y742t, y742fa))

mcompanion documentation built on Sept. 22, 2023, 5:12 p.m.