CAex.Rd
An example of a sparse matrix for which eigen()
seemed
to be difficult, an unscaled version of this has been posted to the
web, accompanying an E-mail to R-help
(https://stat.ethz.ch/mailman/listinfo/r-help), by
Casper J Albers, Open University, UK.
data(CAex)
This is a \(72 \times 72\) symmetric matrix with 216
non-zero entries in five bands, stored as sparse matrix of class
dgCMatrix
.
Historical note (2006-03-30):
In earlier versions of R, eigen(CAex)
fell into an
infinite loop whereas eigen(CAex, EISPACK=TRUE)
had been okay.
data(CAex, package = "Matrix")
str(CAex) # of class "dgCMatrix"
#> Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
#> ..@ i : int [1:216] 0 24 48 1 25 49 2 26 50 3 ...
#> ..@ p : int [1:73] 0 3 6 9 12 15 18 21 24 27 ...
#> ..@ Dim : int [1:2] 72 72
#> ..@ Dimnames:List of 2
#> .. ..$ : NULL
#> .. ..$ : NULL
#> ..@ x : num [1:216] 0.999998 -0.001312 -0.000527 0.999999 -0.000903 ...
#> ..@ factors : list()
image(CAex)# -> it's a simple band matrix with 5 bands
## and the eigen values are basically 1 (42 times) and 0 (30 x):
zapsmall(ev <- eigen(CAex, only.values=TRUE)$values)
#> [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
#> [39] 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
## i.e., the matrix is symmetric, hence
sCA <- as(CAex, "symmetricMatrix")
## and
stopifnot(class(sCA) == "dsCMatrix",
as(sCA, "matrix") == as(CAex, "matrix"))