Skip to contents

Parameterise the Jordan chains corresponding to a given eigenvalue of a multi-companion matrix.

Usage

spec_core(mo, evalue, heights, ubasis = NULL, uorth = NULL, evspace = NULL)

Arguments

mo

multi-companion order, a positive integer.

evalue

eigenvalue, a real or complex number.

heights

dimensions of Jordan blocks of evalue, a vector of positive integers.

ubasis

basis of the universe, a matrix.

uorth

orthogonal complement of ubasis w.r.t. the full core basis, see Details.

evspace

The space spanned by the eigenvectors, see Details.

Details

spec_core prepares a canonical representation of the parameters of a multi-companion matrix coresponding to an eigenvalue. Roughly speaking, free parameters are represented by NA's in the returned object. For no-repeated eigenvalues the parameterisation consists of the eigenvalue and the seed parameters of the eigenvector. Even then, for uniqueness some convention needs to be adopted.

So, in general the parameterisation is effectively in terms of subspaces.

TODO: Currently this is not documented and is work in progress, there are only some working notes (rakopis: "Some technical details about the parameterisation of mc-matrices").

Value

a list representing the parameterised chains corresponding to the eigenvalue. Currently it contains the following elements:

evalue
heights
co
core.vectors
param.tall
param.hang
generators

Author

Georgi N. Boshnakov

Examples

spec_core(4, 1, c(1,1,1,1))
#> $evalue
#> [1] 1
#> 
#> $heights
#> [1] 1 1 1 1
#> 
#> $co
#>      [,1] [,2] [,3] [,4]
#> [1,]    1    0    0    0
#> [2,]    0    1    0    0
#> [3,]    0    0    1    0
#> [4,]    0    0    0    1
#> 
#> $core.vectors
#> $core.vectors[[1]]
#> $core.vectors[[1]]$tall
#>      [,1] [,2] [,3] [,4]
#> [1,]    1    0    0    0
#> [2,]    0    1    0    0
#> [3,]    0    0    1    0
#> [4,]    0    0    0    1
#> 
#> $core.vectors[[1]]$hang
#>      [,1] [,2] [,3] [,4]
#> [1,]   NA   NA   NA   NA
#> [2,]   NA   NA   NA   NA
#> [3,]   NA   NA   NA   NA
#> [4,]   NA   NA   NA   NA
#> 
#> $core.vectors[[1]]$both
#>      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
#> [1,]    1    0    0    0   NA   NA   NA   NA
#> [2,]    0    1    0    0   NA   NA   NA   NA
#> [3,]    0    0    1    0   NA   NA   NA   NA
#> [4,]    0    0    0    1   NA   NA   NA   NA
#> 
#> 
#> 
#> $param.tall
#> $param.tall[[1]]
#> [1] NA
#> 
#> 
#> $param.hang
#> $param.hang[[1]]
#>      [,1] [,2] [,3] [,4]
#> [1,]   NA   NA   NA   NA
#> [2,]   NA   NA   NA   NA
#> [3,]   NA   NA   NA   NA
#> [4,]   NA   NA   NA   NA
#> 
#> 
#> $generators
#> $generators[[1]]
#> NULL
#> 
#> 

spec_core(4, 1, c(2,1,1,1))
#> $evalue
#> [1] 1
#> 
#> $heights
#> [1] 2 1 1 1
#> 
#> $co
#>      [,1] [,2] [,3] [,4] [,5]
#> [1,] -Inf    0  Inf  Inf  Inf
#> [2,] -Inf    0  Inf  Inf  Inf
#> [3,] -Inf    0  Inf  Inf  Inf
#> [4,] -Inf    0  Inf  Inf  Inf
#> 
#> $core.vectors
#> $core.vectors[[1]]
#> $core.vectors[[1]]$tall
#>      [,1]
#> [1,] -Inf
#> [2,] -Inf
#> [3,] -Inf
#> [4,] -Inf
#> 
#> $core.vectors[[1]]$hang
#>      [,1] [,2] [,3]
#> [1,]  Inf  Inf  Inf
#> [2,]  Inf  Inf  Inf
#> [3,]  Inf  Inf  Inf
#> [4,]  Inf  Inf  Inf
#> 
#> $core.vectors[[1]]$both
#>      [,1] [,2] [,3] [,4]
#> [1,] -Inf  Inf  Inf  Inf
#> [2,] -Inf  Inf  Inf  Inf
#> [3,] -Inf  Inf  Inf  Inf
#> [4,] -Inf  Inf  Inf  Inf
#> 
#> 
#> $core.vectors[[2]]
#> $core.vectors[[2]]$tall
#> [1] NA
#> 
#> $core.vectors[[2]]$hang
#>      [,1]
#> [1,]    0
#> [2,]    0
#> [3,]    0
#> [4,]    0
#> 
#> $core.vectors[[2]]$both
#>      [,1]
#> [1,]    0
#> [2,]    0
#> [3,]    0
#> [4,]    0
#> 
#> 
#> 
#> $param.tall
#> $param.tall[[1]]
#>      [,1]
#> [1,]   NA
#> [2,]   NA
#> [3,]   NA
#> [4,]   NA
#> 
#> $param.tall[[2]]
#> [1] NA
#> 
#> 
#> $param.hang
#> $param.hang[[1]]
#>      [,1] [,2] [,3]
#> [1,]   NA   NA   NA
#> [2,]   NA   NA   NA
#> [3,]   NA   NA   NA
#> 
#> $param.hang[[2]]
#>      [,1]
#> 
#> 
#> $generators
#> $generators[[1]]
#> $generators[[1]]$param
#> [1] "tall"
#> 
#> $generators[[1]]$tall
#>      [,1]
#> [1,] -Inf
#> [2,] -Inf
#> [3,] -Inf
#> [4,] -Inf
#> 
#> $generators[[1]]$hang
#>      [,1] [,2] [,3]
#> [1,]  Inf  Inf  Inf
#> [2,]  Inf  Inf  Inf
#> [3,]  Inf  Inf  Inf
#> [4,]  Inf  Inf  Inf
#> 
#> $generators[[1]]$universe
#>      [,1] [,2] [,3] [,4]
#> [1,]    1    0    0    0
#> [2,]    0    1    0    0
#> [3,]    0    0    1    0
#> [4,]    0    0    0    1
#> 
#> $generators[[1]]$method
#> [1] "complement"
#> 
#> 
#> $generators[[2]]
#> NULL
#> 
#> 
spec_seeds1(c(2,2,2,2), 4)
#>      [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
#> [1,]    1    0    0    0    0    0    0    0
#> [2,]    0    0    1    0    0    0    0    0
#> [3,]    0    0    0    0    1    0    0    0
#> [4,]    0    0    0    0    0    0    1    0
spec_seeds1(c(2,1,1,1), 4)
#>      [,1] [,2] [,3] [,4] [,5]
#> [1,] -Inf    0  Inf  Inf  Inf
#> [2,] -Inf    0  Inf  Inf  Inf
#> [3,] -Inf    0  Inf  Inf  Inf
#> [4,] -Inf    0  Inf  Inf  Inf
spec_core(4, 1, c(2,1,1,1))$co
#>      [,1] [,2] [,3] [,4] [,5]
#> [1,] -Inf    0  Inf  Inf  Inf
#> [2,] -Inf    0  Inf  Inf  Inf
#> [3,] -Inf    0  Inf  Inf  Inf
#> [4,] -Inf    0  Inf  Inf  Inf
spec_core(4, 1, c(2,1,1,1))$generators
#> [[1]]
#> [[1]]$param
#> [1] "tall"
#> 
#> [[1]]$tall
#>      [,1]
#> [1,] -Inf
#> [2,] -Inf
#> [3,] -Inf
#> [4,] -Inf
#> 
#> [[1]]$hang
#>      [,1] [,2] [,3]
#> [1,]  Inf  Inf  Inf
#> [2,]  Inf  Inf  Inf
#> [3,]  Inf  Inf  Inf
#> [4,]  Inf  Inf  Inf
#> 
#> [[1]]$universe
#>      [,1] [,2] [,3] [,4]
#> [1,]    1    0    0    0
#> [2,]    0    1    0    0
#> [3,]    0    0    1    0
#> [4,]    0    0    0    1
#> 
#> [[1]]$method
#> [1] "complement"
#> 
#> 
#> [[2]]
#> NULL
#>