我有一个上三角矩阵,我想快速计算它的逆矩阵。我试过 qr.solve()
但我觉得它等同于 solve()
,并且它没有利用输入矩阵的三角形性质。最好的方法是什么?
最佳答案
尝试 backsolve()
并使用具有适当维度的单位矩阵作为右侧值。
library(microbenchmark)
n <- 2000
n.cov <- 1000
X <- matrix(sample(c(0L, 1L), size = n * n.cov, replace = TRUE),
nrow = n, ncol = n.cov)
R <- chol(crossprod(X))
rm(X)
microbenchmark(
backsolve = backsolve(r = R, x = diag(ncol(R))),
solve = solve(R),
times = 10)
Unit: milliseconds
expr min lq mean median uq max neval
backsolve 467.2802 467.5142 469.4457 468.1578 468.6501 482.2431 10
solve 748.2351 748.8318 750.0764 750.3319 750.9583 751.5005 10
关于r - 在 R 中反转三角矩阵的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25662643/