Schur-class {Matrix} | R Documentation |
Schur Factorizations
Description
Schur
is the class of Schur factorizations of
real matrices
,
having the general form
where
is an orthogonal matrix and
is a block upper triangular matrix with
or
diagonal blocks
specifying the real and complex conjugate eigenvalues of
.
The column vectors of
are the Schur vectors of
,
and
is the Schur form of
.
The Schur factorization generalizes the spectral decomposition
of normal matrices , whose Schur form is block diagonal,
to arbitrary square matrices.
Details
The matrix and its Schur form
are similar
and thus have the same spectrum. The eigenvalues are computed
trivially as the eigenvalues of the diagonal blocks of
.
Slots
Dim
,Dimnames
inherited from virtual class
MatrixFactorization
.Q
an orthogonal matrix, inheriting from virtual class
Matrix
.T
a block upper triangular matrix, inheriting from virtual class
Matrix
. The diagonal blocks have dimensions 1-by-1 or 2-by-2.EValues
a numeric or complex vector containing the eigenvalues of the diagonal blocks of
T
, which are the eigenvalues ofT
and consequently of the factorized matrix.
Extends
Class SchurFactorization
, directly.
Class MatrixFactorization
, by class
SchurFactorization
, distance 2.
Instantiation
Objects can be generated directly by calls of the form
new("Schur", ...)
, but they are more typically obtained
as the value of Schur(x)
for x
inheriting from
Matrix
(often dgeMatrix
).
Methods
determinant
signature(from = "Schur", logarithm = "logical")
: computes the determinant of the factorized matrixor its logarithm.
expand1
signature(x = "Schur")
: seeexpand1-methods
.expand2
signature(x = "Schur")
: seeexpand2-methods
.solve
signature(a = "Schur", b = .)
: seesolve-methods
.
References
The LAPACK source code, including documentation; see https://netlib.org/lapack/double/dgees.f.
Golub, G. H., & Van Loan, C. F. (2013). Matrix computations (4th ed.). Johns Hopkins University Press. doi:10.56021/9781421407944
See Also
Class dgeMatrix
.
Generic functions Schur
,
expand1
and expand2
.
Examples
showClass("Schur")
set.seed(0)
n <- 4L
(A <- Matrix(rnorm(n * n), n, n))
## With dimnames, to see that they are propagated :
dimnames(A) <- list(paste0("r", seq_len(n)),
paste0("c", seq_len(n)))
(sch.A <- Schur(A))
str(e.sch.A <- expand2(sch.A), max.level = 2L)
## A ~ Q T Q' in floating point
stopifnot(exprs = {
identical(names(e.sch.A), c("Q", "T", "Q."))
all.equal(A, with(e.sch.A, Q %*% T %*% Q.))
})
## Factorization handled as factorized matrix
b <- rnorm(n)
stopifnot(all.equal(det(A), det(sch.A)),
all.equal(solve(A, b), solve(sch.A, b)))
## One of the non-general cases:
Schur(Diagonal(6L))