¿Hay disponible una implementación de Python del algoritmo de descomposición LDL (‘ldl’ en Matlab)?

Parece que no hay una función de descomposición de LDL en numpy, pero hay una implementación de la descomposición de Cholesky estrechamente relacionada. [1] [2]

Te dejaré leer sobre eso tú mismo, pero aquí hay una función que implementa la descomposición de LDL:

En [1]: def ldl_decomp (A):
…: importar numpy como np
…: A = matriz de np (A)
…: Si no (AH == A) .todos ():
…: print (“¡A debe ser Hermitiano!”)
…: Devuelve Ninguno, Ninguno
…: si no:
…: S = np.diag (np.diag (A))
…: Sinv = np.diag (1 / np.diag (A))
…: D = matriz np (S.dot (S))
…: Lch = np.linalg.cholesky (A)
…: L = np.matrix (Lch.dot (Sinv))
…: Devuelve L, D

En [2]: importar numpy como np

En [3]: A = matriz np. ([[4,12, -16], [12,37, -43], [- 16, -43,98]])

En [4]: ​​L, D = ldl_decomp (A)

En [5]: L
Fuera [5]:
matriz ([[0.5, 0., 0.],
[1.5, 0.02702703, 0.],
[-2. , 0.13513514, 0.03061224]])

En [6]: D
Fuera [6]:
matriz ([[16, 0, 0],
[0, 1369, 0],
[0, 0, 9604]])

En [7]: L.dot (D) .dot (LH)
Fuera [7]:
matriz ([[4., 12., -16.],
[12., 37., -43.],
[-16., -43., 98.]])

Notas:

  • La línea 4 verifica que la matriz A sea hermitiana. Si solo está trabajando con números reales, esto verifica si A es simétrico.
  • La línea 8 crea una matriz diagonal S cuyas entradas son la diagonal de A.
  • La línea 9 calcula el inverso de S (que es trivial ya que S es diagonal).
  • La línea 10 calcula la “D” en la composición de LDL.
  • La línea 11 calcula Lch, la matriz triangular inferior en la descomposición de Cholesky. Tenga en cuenta que A = (Lch) (Lch) *, donde * es el conjugado hermitiano (transposición del conjugado).
  • La línea 12 calcula la “L” en la descomposición de LDL.
  • La función devuelve las matrices L y D de modo que A = LDL *.

Notas al pie

[1] Descomposición de Cholesky – Wikipedia

[2] numpy.linalg.cholesky – NumPy v1.12 Manual

More Interesting

¿Cuáles son las ventajas de los algoritmos SVM?

¿Por qué el hashing geométrico es más eficiente que usar una matriz indexada de las coordenadas de los puntos característicos?

¿Por qué el aprendizaje profundo requiere la construcción de modelos de datos generativos?

¿Cuáles son algunos algoritmos de aprendizaje automático que pueden ayudarme a encontrar las similitudes o diferencias entre las ideas textuales?

¿Cuál es la ecuación general para calcular la probabilidad de encontrar una cadena de longitud N en una cadena M más larga de caracteres aleatorios, cada uno elegido de {AZ}?

¿Qué tan valioso sería ser ubicado para aprender la estructura de datos usando C?

Si estudié modelado matemático financiero avanzado en la universidad con un coeficiente intelectual de 145, ¿con qué probabilidad podría construir un algoritmo HFT rentable?

¿Cómo funciona la función Rolling Hash utilizada en el algoritmo Rabin Karp?

Cómo escribir un código para un árbol en estructuras de datos

¿Qué es mejor entre la búsqueda binaria y el árbol de búsqueda binaria para buscar?

¿Cuál es la técnica / algoritmo utilizado por mensajeros como WhatsApp y BBM para comprimir imágenes?

¿Existen algoritmos en R que permitan clasificar una variable binaria basada en un conjunto de cadenas (texto)?

¿Cuál es el significado o las aplicaciones del algoritmo KNN?

¿Qué tan importante es para el hombre en el medio saber la técnica de cifrado?

¿Cuál es la mejor manera de fusionar datos mal estructurados de grandes bases de datos?