我正在尝试使用R运行LU分解。下面是可复制的代码。我不明白为什么我的置换矩阵与解不同。L和U矩阵是正确的。但是对于置换矩阵,第1行和第2行以及第3行和第4行互换。因此,我没有得到线性方程组的正确解。会很感激你的帮助。
install.packages("Matrix")
library(Matrix)
(A <- matrix(c(4, 3, -2, 5, 2, -4, 6, 1, -1, 2, -5, 6, 3, 5, -2, -3), nrow = 4))
(B <- matrix(c(16.9, -14, 25, 9.4), nrow = 4))
luA <- lu(A)
elu <- expand(luA)
(L <- elu$L)
(U <- elu$U)
(P <- elu$P)
(Y <- solve(L) %*% P %*% B)
(X <- solve(U) %*% Y)
1条答案
按热度按时间xzv2uavs1#
在R实现中,似乎我们有
A = PLU
(而不是PA = LU
)。因此,以下工作:对于双重检查,我们可以使用高斯消去法计算 LU 分解,对于给定的
A
和B
:这里,置换矩阵P是单位的(不需要行交换)。