Saltar al contenido

Determinar si una matriz simétrica es definida positiva (algoritmo)

Investigamos en diferentes espacios para regalarte la respuesta para tu dilema, en caso de dificultades puedes dejar tu inquietud y contestaremos con mucho gusto, porque estamos para servirte.

Solución:

Mathcast lo tenía; de hecho, en el trabajo práctico, se usa la descomposición de Cholesky $mathbf Gmathbf G^T$ para probando eficientemente si una matriz simétrica es definida positiva. El único cambio que necesita hacer para convertir su programa de descomposición en una verificación de definición positiva es insertar una verificación antes de tomar las raíces cuadradas requeridas de que la cantidad a enraizar es positiva. Si es cero, tienes una matriz semidefinida positiva; si no es cero ni positivo, entonces su matriz simétrica no es positiva (semi) definida. (En cuanto a la programación, ¡debería ser fácil lanzar una excepción dentro de un ciclo! Sin embargo, si su idioma no tiene forma de romper un ciclo, lo siento).

Alternativamente, aquí se usa la descomposición $mathbf Lmathbf Dmathbf L^T$ (un enfoque equivalente en el sentido de que $mathbf G=mathbf Lsqrtmathbf D$); si aparecen entradas no positivas en $mathbf D$, entonces su matriz no es definida positiva. Tenga en cuenta que uno podría configurar las cosas para que el ciclo para calcular la descomposición se interrumpa una vez que se encuentra un elemento negativo de $mathbf D$, ¡antes de que finalice la descomposición!

En cualquier caso, no entiendo por qué la gente evita usar Cholesky aquí; el enunciado es “una matriz es definida positiva si y solo si posee una descomposición de Cholesky”. Es un bicondicional; ¡explótalo! Es extremadamente más barato que verificar sucesivamente los menores o la descomposición propia, FWIW.

No creo que haya una forma más sencilla que calcular una descomposición o un determinante, a menos que su matriz tenga una forma especial. Por ejemplo, si es una matriz de covarianza de muestra, entonces es semidefinida positiva por construcción.

Otras posibilidades incluyen el uso del algoritmo de gradiente conjugado para verificar la definición positiva. En teoría, este método termina después de un máximo de n iteraciones (siendo n la dimensión de su matriz). En la práctica, puede que tenga que funcionar un poco más. Es trivial de implementar. También puede usar una variante del método de Lanczos para estimar el valor propio más pequeño de su matriz (¡lo cual es mucho más fácil que calcular todos los valores propios!) Elija un libro sobre álgebra lineal numérica (consulte la colección SIAM).

En cualquier caso, recuerde que tales métodos (y la descomposición de Cholesky) comprueban numérico definición positiva. Es posible que el valor propio más pequeño de su matriz sea, digamos, 1.0e-16 y que los errores de cancelación debidos a la aritmética de precisión finita provoquen que su Cholesky (o gradiente conjugado) se rompa.

Comentarios y puntuaciones de la guía

Si te ha resultado de utilidad nuestro artículo, sería de mucha ayuda si lo compartieras con el resto entusiastas de la programación y nos ayudes a dar difusión a esta información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *