Bibliotecas para resolver a equação de Lyapunov

11

A seguinte equação da matriz em Σ - para determinadas matrizes B e C - aparece no meu trabalho como uma caracterização de uma matriz de covariância. Aprendi que essa equação é conhecida, particularmente na teoria de controle de tempo contínuo, como a equação de Lyapunov , e que existem vários algoritmos conhecidos para resolvê-la que exploram a natureza especial dessa equação linear.

BΣ+ΣBT+C=0
Σ BC

Ao pesquisar no Google, também aprendi que existem implementações Matlab e Fortran. Encontrei SLICOT e RECSY. Devido a problemas de licenciamento, o acesso à fonte SLICOT foi interrompido.

A maior parte do meu trabalho é implementada em R e, como não consegui encontrar uma interface R para um solucionador, considero escrever uma. Minha pergunta é se o SLICOT é a melhor biblioteca de Fortran (ou C) disponível com a implementação de um solucionador da equação de Lyapunov? Também estou interessado em implementações que podem lidar com grandes matrizes esparsas . B

NRH
fonte
1
Quão grande e quão escasso? Talvez você precise se afastar do R para lidar com os problemas maiores em tempo razoável.
Bill Barth
5
Eu provavelmente não deveria dizer isso, mas o SLICOT está disponível aqui .
Victor Liu
CB

Respostas:

5

SLICOT é a ferramenta a ser usada para problemas densos.

Para sistemas grandes, porém esparsos, existe a caixa de ferramentas lyapack para o MATLAB.

ZnZnHZnΣΣ

Há pesquisas vívidas em andamento no Instituto Max-Planck, em Magdeburgo, na Alemanha, sobre equações esparsas de Lyapunov. No entanto, o anúncio do próximo lançamento do sucessor do lyapack - MESS - tem alguns anos. No entanto, vale a pena conferir a página do MESS e as publicações dos autores contribuintes de tempos em tempos.

Exoneração de responsabilidade: Meu supervisor de tese é um dos principais colaboradores do SLICOT e do lyapack e estou em contato regular com os desenvolvedores do MESS.

Jan
fonte
Você pode participar do chat.stackexchange.com/rooms/9031/lyapunov , com algumas perguntas relacionadas.
Milind R
3

Você pode se conectar ao MATLAB usando isso .

Suas matrizes não são muito grandes: a codificação manual dos algoritmos não deve resultar em muita perda de tempo, talvez ela seja executada por 1 hora. Pode ou não ser muito longo, dependendo de vários fatores.

Porém, codificar você mesmo pode não ser nada fácil. Acho que não posso, e tenho lidado com isso nos últimos meses. Mas o próprio algoritmo SLICOT está aqui .

Milind R
fonte
3

O algoritmo do SLICOT não é tão complicado, é uma redução da forma de Schur + alguma substituição traseira. Você pode conferir o artigo de Bartels-Stewart http://dl.acm.org/citation.cfm?id=361582, que é razoavelmente legível e explica como funciona. O artigo trata do caso não simétrico, mas não deve ser difícil adaptá-lo ao simétrico - você só precisa de um formulário de Schur em vez de dois.

Você provavelmente também pode codificá-lo em R se ele já tiver uma rotina para o formulário Schur (eu verificaria a mim mesmo, mas é sempre uma bagunça obter resultados significativos sobre o R no Google, devido à sua infeliz escolha de nomes).

Isso poderia resolver o caso denso. O grande e escasso é mais técnico.

Federico Poloni
fonte