Escolar Documentos
Profissional Documentos
Cultura Documentos
Factorización de LDL Con R - Rstudio
Factorización de LDL Con R - Rstudio
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
EJEMPLO 2
Sea
4 3 2
𝑨 = (3 3 2)
2 2 2