lunes, 22 de abril de 2013

Aprendiendo SCILAB - Factorizacion LDLT

Recordar que la entrada debe ser una matriz cuadrada y simetrica. Luego le ire agregando los comentarios.

Este código es una implementación del algoritmo que aparece en el libro:

Técnicas de Cálculo para Sistemas de Ecuaciones, Programación Lineal y ...

Se puede probar un ejemplo con la matriz:

2   4   6   8
4   9  17  22
6  17  44  61
8  22  61 118

function d = ldlt(A)
    n = size(A)     // Dimensiones de la matriz
    n = n(1)
    d = zeros(1,n)
    for k = 1:n
        suma = 0;
        for p = 1:k-1
            suma = suma + A(k,p)*A(k,p)*d(p)
        end
        d(k) = A(k,k) - suma
        if (d(k)==0) then
            return d
        end
        for i = k+1:n do
            suma = 0
            for p = 1:k-1 do
                suma = suma + A(i,p)*A(k,p)*d(p)
            end
            A(i,k) = (A(i,k) - suma) / d(k)
        end
    end
    return d
endfunction

1 comentario:

  1. hola oye y para la factorizacion LLT como es , te lo agradeceria si subieras el código! gracias

    ResponderEliminar