Schur-class function

Schur Factorizations

Schur Factorizations

Schur is the class of Schur factorizations of nbynn-by-n real matrices AA, having the general form [REMOVE_ME]A=QTQA=QTQ[REMOVEME2] A = Q T Q'A = Q * T * Q' [REMOVE_ME_2]

where QQ is an orthogonal matrix and TT is a block upper triangular matrix with 1by11-by-1 or 2by22-by-2 diagonal blocks specifying the real and complex conjugate eigenvalues of AA. The column vectors of QQ are the Schur vectors of AA, and TT is the Schur form of AA.

The Schur factorization generalizes the spectral decomposition of normal matrices AA, whose Schur form is block diagonal, to arbitrary square matrices.

class

Description

Schur is the class of Schur factorizations of nbynn-by-n real matrices AA, having the general form

A=QTQA=QTQ A = Q T Q'A = Q * T * Q'

where QQ is an orthogonal matrix and TT is a block upper triangular matrix with 1by11-by-1 or 2by22-by-2 diagonal blocks specifying the real and complex conjugate eigenvalues of AA. The column vectors of QQ are the Schur vectors of AA, and TT is the Schur form of AA.

The Schur factorization generalizes the spectral decomposition of normal matrices AA, 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 AA

     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 AA and its Schur form TT are similar

and thus have the same spectrum. The eigenvalues are computed trivially as the eigenvalues of the diagonal blocks of TT.

See Also

Class dgeMatrix.

Generic functions Schur, expand1 and expand2.

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. 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 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))
  • Maintainer: Martin Maechler
  • License: GPL (>= 2) | file LICENCE
  • Last published: 2025-03-11