Bibliotecas para resolver la ecuación de Lyapunov

11

La siguiente ecuación matricial en Σ - para matrices B y C dadas - aparece en mi trabajo como una caracterización de una matriz de covarianza. He aprendido que esta ecuación es conocida, en particular en la teoría del control de tiempo continuo, como la ecuación de Lyapunov , y que existen varios algoritmos bien conocidos para resolverla que explotan la naturaleza especial de esta ecuación lineal.

BΣ+ΣBT+C=0
Σ BC

Al buscar en Google también aprendí que existen implementaciones de Matlab y Fortran. He encontrado SLICOT y RECSY. Sin embargo, debido a problemas de licencia, se detuvo el acceso a la fuente SLICOT.

La mayor parte de mi trabajo se implementa en R, y como no he podido encontrar una interfaz R para un solucionador, considero escribir una. Mi pregunta es si SLICOT es la mejor biblioteca Fortran (o C) disponible con una implementación de un solucionador de la ecuación de Lyapunov. También estoy interesado en implementaciones que puedan manejar grandes matrices dispersas . B

NRH
fuente
1
¿Qué tan grande y escaso? Puede que tenga que alejarse de R para lidiar con los problemas más grandes en un tiempo razonable.
Bill Barth
55
Probablemente no debería decir esto, pero SLICOT está disponible aquí .
Victor Liu
CB

Respuestas:

5

SLICOT es la herramienta a utilizar para problemas densos.

Para un sistema grande pero escaso, existe la caja de herramientas lyapack para MATLAB.

ZnZnHZnΣΣ

Hay una vívida investigación en curso en el Instituto Max-Planck en Magdeburg, Alemania, sobre ecuaciones dispersas de Lyapunov. Sin embargo, el anuncio del próximo lanzamiento del sucesor de lyapack, MESS, tiene bastantes años. Sin embargo, vale la pena consultar la página web del MESS y las publicaciones de los autores contribuyentes de vez en cuando.

Descargo de responsabilidad: Mi supervisor de tesis es uno de los principales contribuyentes de SLICOT y lyapack y estoy en contacto regular con los desarrolladores de MESS.

ene
fuente
¿Puedes unirte a chat.stackexchange.com/rooms/9031/lyapunov? Tienes algunas preguntas relacionadas.
Milind R
3

Puede conectarse a MATLAB con esto .

Sus matrices no son demasiado grandes: la codificación manual de los algoritmos no debería resultar en una pérdida de tiempo excesiva, tal vez se ejecute durante 1 hora. Puede o no ser demasiado largo dependiendo de varios factores.

Sin embargo, codificarlo usted mismo puede no ser nada fácil. No creo que pueda, y he estado lidiando con esto durante los últimos meses. Pero el algoritmo SLICOT en sí está aquí .

Milind R
fuente
3

El algoritmo de SLICOT no es tan complicado, es una reducción de la forma de Schur + alguna sustitución posterior. Puede consultar el documento de Bartels-Stewart http://dl.acm.org/citation.cfm?id=361582 que es razonablemente legible y explica cómo funciona. El documento trata sobre el caso no simétrico, pero no debería ser difícil adaptarlo al simétrico, solo necesita una forma de Schur en lugar de dos.

Probablemente también pueda codificarlo usted mismo en R si ya tiene una rutina para el formulario Schur.

Esto podría resolver el denso caso. El grande y escaso es más técnico.

Federico Poloni
fuente