Librerie per risolvere l'equazione di Lyapunov


11

La seguente equazione di matrice in Σ - per determinate matrici B e C - appare nel mio lavoro come una caratterizzazione di una matrice di covarianza. Ho imparato che questa equazione è nota, in particolare nella teoria del controllo del tempo continuo, come equazione di Lyapunov , e che esistono vari algoritmi ben noti per risolverlo che sfruttano la natura speciale di questa equazione lineare.

BΣ+ΣBT+C=0
Σ BC

Da google ho anche imparato che esistono implementazioni di Matlab e Fortran. Ho trovato SLICOT e RECSY. Tuttavia, a causa di problemi di licenza, l'accesso alla fonte SLICOT è stato interrotto.

Gran parte del mio lavoro è implementato in R, e poiché non sono stato in grado di trovare un'interfaccia R per un risolutore, prendo in considerazione la possibilità di scriverne uno da solo. La mia domanda è quindi se SLICOT è la migliore libreria Fortran (o C) disponibile con un'implementazione di un risolutore dell'equazione di Lyapunov? Sono anche interessato a implementazioni in grado di gestire matrici sparse di grandi dimensioni. B


1
Quanto grande e quanto scarso? Potrebbe essere necessario allontanarsi da R per affrontare i problemi più grandi in tempi ragionevoli.
Bill Barth,

5
Probabilmente non dovrei dirlo, ma SLICOT è disponibile qui .
Victor Liu,

CB

Risposte:


5

SLICOT è lo strumento da utilizzare per problemi densi.

Per sistemi grandi ma sparsi, c'è la cassetta degli attrezzi lyapack per MATLAB.

ZnZnHZnΣΣ

È in corso una vivida ricerca presso l'Istituto Max-Planck di Magdeburgo, in Germania, sulle equazioni di Lyapunov sparse. Tuttavia, l'annuncio dell'imminente rilascio del successore di lyapack - MESS - ha alcuni anni. Tuttavia, vale la pena controllare di tanto in tanto la pagina web del MESS e le pubblicazioni degli autori contribuenti.

Disclaimer: il mio supervisore della tesi è uno dei principali collaboratori sia di SLICOT che di lyapack e sono in contatto regolare con gli sviluppatori di MESS.


Puoi iscriverti a chat.stackexchange.com/rooms/9031/lyapunov , avere alcune domande correlate.
Milind R

3

Puoi connetterti a MATLAB usando questo .

Le tue matrici non sono troppo grandi: la codifica manuale degli algoritmi non dovrebbe comportare troppe perdite di tempo, forse durerà 1 ora. Potrebbe essere o non essere troppo lungo a seconda di vari fattori.

Tuttavia, codificarlo da soli potrebbe non essere affatto facile. Non credo di poterlo fare, e ho avuto a che fare con questo negli ultimi mesi. Ma l'algoritmo SLICOT stesso è qui .


3

L'algoritmo di SLICOT non è poi così complicato, è una riduzione alla forma di Schur + un po 'di sostituzione. Puoi consultare il documento Bartels-Stewart http://dl.acm.org/citation.cfm?id=361582 che è ragionevolmente leggibile e spiega come funziona. Il documento riguarda il caso non simmetrico, ma non dovrebbe essere difficile adattarlo a quello simmetrico --- hai solo bisogno di una forma di Schur invece di due.

Probabilmente puoi anche codificarlo tu stesso in R se ha già una routine per il modulo Schur (controllerei me stesso, ma è sempre un casino ottenere risultati significativi su R da Google a causa della loro sfortunata scelta di denominazione).

Questo potrebbe risolvere il caso denso. Quello grande e scarno è più tecnico.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.