【问题标题】:LU decomposition with row pivot具有行轴心的 LU 分解
【发布时间】:2010-09-04 12:09:12
【问题描述】:

以下函数不使用行透视来进行 LU 分解。 R 中是否存在使用 row pivot 进行 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,] . . | .

【问题讨论】:

标签: r linear-algebra


【解决方案1】:

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

R中的函数lu是计算A = PLU,相当于计算矩阵A的LU分解,其行由置换矩阵P-1P-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

【讨论】:

  • + 1 大卫。优秀的答案。我想知道我们如何解释置换矩阵 P。各个位置的条和点是什么意思?
【解决方案2】:

也许this 可以完成这项工作。但是,没有 Windows 二进制文件,我无法尝试。

【讨论】:

  • Magma 需要底层的 magma 库以及用于 GPU 计算的 NVidia 卡。 R 中有一些重要的解决方案——我会在 r-help 上询问。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多