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


R sparseLU-class 稀疏 LU 分解


R语言 sparseLU-class 位于 Matrix 包(package)。

说明

sparseLU 实数矩阵 的稀疏、行和 column-pivoted LU 分解类,具有一般形式

或(等效地)

其中 是置换矩阵, 是单位下三角矩阵, 是上三角矩阵。

插槽

Dim , Dimnames

从虚拟类MatrixFactorization继承。

L

dtCMatrix 的对象,单位下三角 因子。

U

dtCMatrix 的对象,即上三角 因子。

p , q

长度从 0 开始的整数向量Dim[1],指定应用于分解矩阵的行和列的排列。q长度为 0 的值是有效的并且等价于恒等排列,意味着没有列旋转。使用R语法,矩阵 正是A[p+1, q+1](A[p+1, ]q长度为 0)。

扩展

直接类 LU 。类 MatrixFactorization ,按类 LU ,距离 2。

实例化

对象可以通过 new("sparseLU", ...) 形式的调用直接生成,但它们更通常作为继承自 sparseMatrix (通常是 dgCMatrix )的 xlu(x) 值获得。

方法

determinant

signature(from = "sparseLU", logarithm = "logical") :计算因式分解矩阵 的行列式或其对数。

expand

signature(x = "sparseLU") :参见expand-methods

expand1

signature(x = "sparseLU") :参见expand1-methods

expand2

signature(x = "sparseLU") :参见expand2-methods

solve

signature(a = "sparseLU", b = .) :参见solve-methods

例子


showClass("sparseLU")
set.seed(2)

A <- as(readMM(system.file("external", "pores_1.mtx", package = "Matrix")),
        "CsparseMatrix")
(n <- A@Dim[1L])

## With dimnames, to see that they are propagated :
dimnames(A) <- dn <- list(paste0("r", seq_len(n)),
                          paste0("c", seq_len(n)))

(lu.A <- lu(A))
str(e.lu.A <- expand2(lu.A), max.level = 2L)

ae1 <- function(a, b, ...) all.equal(as(a, "matrix"), as(b, "matrix"), ...)
ae2 <- function(a, b, ...) ae1(unname(a), unname(b), ...)

## A ~ P1' L U P2' in floating point
stopifnot(exprs = {
    identical(names(e.lu.A), c("P1.", "L", "U", "P2."))
    identical(e.lu.A[["P1."]],
              new("pMatrix", Dim = c(n, n), Dimnames = c(dn[1L], list(NULL)),
                  margin = 1L, perm = invertPerm(lu.A@p, 0L, 1L)))
    identical(e.lu.A[["P2."]],
              new("pMatrix", Dim = c(n, n), Dimnames = c(list(NULL), dn[2L]),
                  margin = 2L, perm = invertPerm(lu.A@q, 0L, 1L)))
    identical(e.lu.A[["L"]], lu.A@L)
    identical(e.lu.A[["U"]], lu.A@U)
    ae1(A, with(e.lu.A, P1. %*% L %*% U %*% P2.))
    ae2(A[lu.A@p + 1L, lu.A@q + 1L], with(e.lu.A, L %*% U))
})

## Factorization handled as factorized matrix
b <- rnorm(n)
stopifnot(identical(det(A), det(lu.A)),
          identical(solve(A, b), solve(lu.A, b)))

参考

Davis, T. A. (2006). Direct methods for sparse linear systems. Society for Industrial and Applied Mathematics. doi:10.1137/1.9780898718881

Golub, G. H., & Van Loan, C. F. (2013). Matrix computations (4th ed.). Johns Hopkins University Press. doi:10.56021/9781421407944

也可以看看

用于密集 LU 分解的类 denseLU

dgCMatrix

通用函数 luexpand1expand2

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Sparse LU Factorizations。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。