Você está na página 1de 3

FACTORIZACIÓN 𝑳𝑫𝑳𝒕

Algoritmo en R para calcular las matrices 𝑳 (triangular inferior) y una matriz 𝑫 (Diagonal
con valores positivos) de una matriz definida positiva 𝑨 de tamaño 𝑛 × 𝑛 tal que 𝑨 =
𝑳𝑫𝑳𝒕 .

ALGORITMO
> LDL = function(n , a){
+ A = matrix(a , n)
+ if(n!=sqrt(length(a))){message("ERROR\nla matriz no es Cuadrada")}else{
+ if(sum(sum(abs(t(A)-A)))>0){message("ERROR\nla matriz no es Simétrica")}else{
+ if(det(A)<=0){message("ERROR\nla matriz no es definida positiva")}else{
+ d = vector()
+ L = diag(n)
+ V = vector()
+
+ i = 1
+ d[i] = A[i,i]
+ for (j in (i+1):n) {
+ L[j,i] = (A[j,i])/d[i]
+ }
+
+ for (i in 2:(n-1)) {
+ for (j in 1:(i-1)) {
+ V[j] = L[i,j]*d[j]
+ d[i] = A[i,i] - sum(L[i,j]*V[j])
+ for (j in (i+1):n) {
+ L[j,i] = (A[j,i] - sum(L[j,1:(i-1)]*V[1:(i-1)]))/d[i]
+ }
+ }
+ }
+
+ i = n ; j=1:(i-1)
+ V[j] = L[i,j]*d[j]
+ d[i] = A[i,i] - sum(L[i,j]*V[j])
+
+ D = diag(d)
+ return(list("A"=A , "L"=L , "D"=D))
+ }
+ }
+ }
+ }

EJEMPLO 1
Sea
4 −2 0 2
−2 2 3 −2
𝑨= ( )
0 3 18 0
2 −2 0 4

Cálculo de las matrices 𝑳 y 𝑫


> a = c(4,-2,0,2,-2,2,3,-2,0,3,18,0,2,-2,0,4) ; n=4
> resultado = LDL(n,a)
>
> A = resultado$A ; A
[,1] [,2] [,3] [,4]
[1,] 4 -2 0 2
[2,] -2 2 3 -2
[3,] 0 3 18 0
[4,] 2 -2 0 4
> L = resultado$L ; L
[,1] [,2] [,3] [,4]
[1,] 1.0 0 0.0000000 0
[2,] -0.5 1 0.0000000 0
[3,] 0.0 3 1.0000000 0
[4,] 0.5 -1 0.3333333 1
> D = resultado$D ; D
[,1] [,2] [,3] [,4]
[1,] 4 0 0 0
[2,] 0 1 0 0
[3,] 0 0 9 0
[4,] 0 0 0 1

Prueba de que 𝑨 = 𝑳𝑫𝑳𝒕 .


> L%*%D%*%t(L)
[,1] [,2] [,3] [,4]
[1,] 4 -2 0 2
[2,] -2 2 3 -2
[3,] 0 3 18 0
[4,] 2 -2 0 4

EJEMPLO 2
Sea
4 3 2
𝑨 = (3 3 2)
2 2 2

Cálculo de las matrices 𝑳 y 𝑫


> a = c(4,3,2,3,3,2,2,2,2) ; n=3
> resultado = LDL(n,a)
> A = resultado$A ; A
[,1] [,2] [,3]
[1,] 4 3 2
[2,] 3 3 2
[3,] 2 2 2
> L = resultado$L ; L
[,1] [,2] [,3]
[1,] 1.00 0.0000000 0
[2,] 0.75 1.0000000 0
[3,] 0.50 0.6666667 1
> D = resultado$D ; D
[,1] [,2] [,3]
[1,] 4 0.00 0.0000000
[2,] 0 0.75 0.0000000
[3,] 0 0.00 0.6666667

Prueba de que 𝑨 = 𝑳𝑫𝑳𝒕 .


> L%*%D%*%t(L)
[,1] [,2] [,3]
[1,] 4 3 2
[2,] 3 3 2
[3,] 2 2 2

Você também pode gostar