gpt4 book ai didi

R 高斯消除和 qr 分解

转载 作者:行者123 更新时间:2023-12-04 03:06:22 26 4
gpt4 key购买 nike

我发现以下 R 代码使用 qr 因式分解无法恢复原始矩阵。我不明白为什么。

a <- matrix(runif(180),ncol=6)
a[,c(2,4)] <- 0
b <- qr(a)
d <- qr.Q(b) %*% qr.R(b)

then da 的不同之处在于所有零列都移到了右侧。 qr 分解似乎没有保留行空间。

最佳答案

当您阅读 qr 的帮助时,您会看到 R 使用旋转 QR 分解。所以

str(b) 

给予

List of 4
$ qr : num [1:30, 1:6] -3.2292 0.218 0.0623 0.0371 0.302 ...
$ rank : int 4
$ qraux: num [1:6] 1.05 1.11 1.04 1.22 0 ...
$ pivot: int [1:6] 1 3 5 6 2 4
- attr(*, "class")= chr "qr"

因此您需要将 pivot 应用到 a 或将 pivot 的逆应用到 d 来排列矩阵正确。所以

pivots <- b$pivot
d.ok <- d[,order(pivots)]
all.equal(a,d.ok)

给予

[1] TRUE

你也可以这样做

a.p <- a[,pivots]
all.equal(a.p,d)

这也会导致 TRUE

关于R 高斯消除和 qr 分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11864601/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com