Schur-class {Matrix} | R Documentation |
Schur Factorizations
Description
Schur
is the class of Schur factorizations of
n \times n
real matrices A
,
having the general form
A = Q T Q'
where
Q
is an orthogonal matrix and
T
is a block upper triangular matrix with
1 \times 1
or 2 \times 2
diagonal blocks
specifying the real and complex conjugate eigenvalues of A
.
The column vectors of Q
are the Schur vectors of A
,
and T
is the Schur form of A
.
The Schur factorization generalizes the spectral decomposition
of normal matrices A
, whose Schur form is block diagonal,
to arbitrary square matrices.
Details
The matrix A
and its Schur form T
are similar
and thus have the same spectrum. The eigenvalues are computed
trivially as the eigenvalues of the diagonal blocks of T
.
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 matrixA
or 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))