Schur is the class of Schur factorizations of n−by−n real matrices A, having the general form [REMOVE_ME]A=QTQ′A=Q∗T∗Q′[REMOVEME2]
where Q is an orthogonal matrix and T is a block upper triangular matrix with 1−by−1 or 2−by−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.
class
Description
Schur is the class of Schur factorizations of n−by−n real matrices A, having the general form
A=QTQ′A=Q∗T∗Q′
where Q is an orthogonal matrix and T is a block upper triangular matrix with 1−by−1 or 2−by−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.
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 of T 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 matrix A
or its logarithm.
expand1: signature(x = "Schur"): see expand1-methods.
expand2: signature(x = "Schur"): see expand2-methods.
solve: signature(a = "Schur", b = .): see solve-methods.
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.
Golub, G. H., & Van Loan, C. F. (2013). Matrix computations (4th ed.). Johns Hopkins University Press. tools:::Rd_expr_doi("10.56021/9781421407944")
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 pointstopifnot(exprs ={ identical(names(e.sch.A), c("Q","T","Q.")) all.equal(A, with(e.sch.A, Q %*% T %*% Q.))})## Factorization handled as factorized matrixb <- 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))