当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。