當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R Schur-class 舒爾因式分解


R語言 Schur-class 位於 Matrix 包(package)。

說明

Schur 實數矩陣 的 Schur 分解類,具有一般形式

其中 是正交矩陣, 是塊上三角矩陣,其中 對角塊指定 的實數和複數共軛特征值。 的列向量是 的 Schur 向量, 的 Schur 形式。

Schur 分解將普通矩陣 (其 Schur 形式為塊對角線)的譜分解推廣為任意方陣。

細節

矩陣 及其Schur 形式 相似,因此具有相同的頻譜。特征值被簡單地計算為 的對角線塊的特征值。

插槽

Dim , Dimnames

從虛擬類MatrixFactorization繼承。

Q

正交矩陣,繼承自虛擬類 Matrix

T

塊上三角矩陣,繼承自虛擬類 Matrix 。對角塊的尺寸為 1×1 或 2×2。

EValues

包含 T 對角線塊的特征值的數值或複數向量,它們是 T 的特征值,因此也是分解矩陣的特征值。

擴展

直接類 SchurFactorization 。類 MatrixFactorization ,按類 SchurFactorization ,距離 2。

實例化

對象可以通過 new("Schur", ...) 形式的調用直接生成,但它們更通常作為繼承自 Matrix (通常是 dgeMatrix )的 xSchur(x) 值獲得。

方法

determinant

signature(from = "Schur", logarithm = "logical") :計算因式分解矩陣 的行列式或其對數。

expand1

signature(x = "Schur") :參見expand1-methods

expand2

signature(x = "Schur") :參見expand2-methods

solve

signature(a = "Schur", b = .) :參見solve-methods

例子


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))

參考

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

也可以看看

dgeMatrix

通用函數 Schurexpand1expand2

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Schur Factorizations。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。