gpt4 book ai didi

r - 带有行枢轴的 LU 分解

转载 作者:行者123 更新时间:2023-12-04 18:52:46 26 4
gpt4 key购买 nike

以下函数不使用行透视进行 LU 分解。 R 中是否有一个现有的函数可以使用行数据进行 LU 分解?

> require(Matrix)
> expand(lu(matrix(rnorm(16),4,4)))
$L
4 x 4 Matrix of class "dtrMatrix"
[,1] [,2] [,3] [,4]
[1,] 1.00000000 . . .
[2,] 0.13812836 1.00000000 . .
[3,] 0.27704442 0.39877260 1.00000000 .
[4,] -0.08512341 -0.24699820 0.04347201 1.00000000

$U
4 x 4 Matrix of class "dtrMatrix"
[,1] [,2] [,3] [,4]
[1,] 1.5759031 -0.2074224 -1.5334082 -0.5959756
[2,] . -1.3096874 -0.6301727 1.1953838
[3,] . . 1.6316292 0.6256619
[4,] . . . 0.8078140

$P
4 x 4 sparse Matrix of class "pMatrix"

[1,] | . . .
[2,] . | . .
[3,] . . . |
[4,] . . | .

最佳答案

lu R 中的函数使用部分(行)旋转。您没有在示例中提供原始矩阵,因此我将创建一个新示例进行演示。

功能 lu在 R 中计算 A = PLU,相当于计算矩阵 A 的 LU 分解,其行由置换矩阵 P-1 置换:P-1A = LU。见 Matrix package documentation想要查询更多的信息。

例子

> A <- matrix(c(1, 1, 1, 1, 1, 1, -1, -1, 1, -1, -1, 1, 1, -1, 1, -1), 4)
> A
[,1] [,2] [,3] [,4]
[1,] 1 1 1 1
[2,] 1 1 -1 -1
[3,] 1 -1 -1 1
[4,] 1 -1 1 -1

这是 L因素:
> luDec <- lu(A)
> L <- expand(luDec)$L
> L
4 x 4 Matrix of class "dtrMatrix" (unitriangular)
[,1] [,2] [,3] [,4]
[1,] 1 . . .
[2,] 1 1 . .
[3,] 1 0 1 .
[4,] 1 1 -1 1

这是 U因素:
> U <- expand(luDec)$U
> U
4 x 4 Matrix of class "dtrMatrix"
[,1] [,2] [,3] [,4]
[1,] 1 1 1 1
[2,] . -2 -2 0
[3,] . . -2 -2
[4,] . . . -4

这是置换矩阵:
> P <- expand(luDec)$P
> P
4 x 4 sparse Matrix of class "pMatrix"

[1,] | . . .
[2,] . . | .
[3,] . | . .
[4,] . . . |

我们可以看到 LUA 的行置换版本:
> L %*% U
4 x 4 Matrix of class "dgeMatrix"
[,1] [,2] [,3] [,4]
[1,] 1 1 1 1
[2,] 1 -1 -1 1
[3,] 1 1 -1 -1
[4,] 1 -1 1 -1

回到原来的身份 A = PLU 我们可以恢复 A (与上面的 A 比较):
> P %*% L %*% U
4 x 4 Matrix of class "dgeMatrix"
[,1] [,2] [,3] [,4]
[1,] 1 1 1 1
[2,] 1 1 -1 -1
[3,] 1 -1 -1 1
[4,] 1 -1 1 -1

关于r - 带有行枢轴的 LU 分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3642188/

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