Функция lu
в R использует частичное (рядное) вращение. Вы не дали исходную матрицу с вашим примером, поэтому я создам новый пример для демонстрации.
Функция lu
в R вычисляет A = PLU , что эквивалентно вычислению разложения LU матрицы A с ее строками, переставленными матрицей перестановок P -1 : P -1 A = LU . См. Matrix
документацию к пакету для получения дополнительной информации.
* * Пример тысяча двадцать-одина * * тысяча двадцать-дв
> 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,] . . . |
Мы можем видеть, что LU
является перестановочной строкой версии A
:
> 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