Biblioteki do rozwiązywania równania Lapunowa

11

Poniższe równanie macierzowe w dla danych macierzy i pojawia się w mojej pracy jako charakterystyka macierzy kowariancji. Dowiedziałem się, że to równanie jest znane, zwłaszcza w teorii ciągłego sterowania czasem, jako równanie Lapunowa i że istnieją różne dobrze znane algorytmy jego rozwiązywania, które wykorzystują szczególną naturę tego równania liniowego. Σ - B C -

BΣ+ΣBT+C=0
Σ BC

Od Google'a dowiedziałem się również, że istnieją implementacje Matlab i Fortran. Znalazłem SLICOT i RECSY. Jednak z powodu problemów licencyjnych dostęp do źródła SLICOT został zatrzymany.

Większość mojej pracy jest zaimplementowana w języku R, a ponieważ nie byłem w stanie znaleźć interfejsu R do solvera, rozważam napisanie go samodzielnie. Moje pytanie brzmi zatem, czy SLICOT jest najlepszą dostępną biblioteką Fortrana (lub C) z implementacją rozwiązania równania Lapunowa? Interesują mnie również implementacje, które mogą obsługiwać duże rzadkie macierze B

NRH
źródło
1
Jak duży i jak rzadki? Być może będziesz musiał odejść od R, aby rozwiązać większe problemy w rozsądnym czasie.
Bill Barth
5
Prawdopodobnie nie powinienem tego mówić, ale SLICOT jest dostępny tutaj .
Victor Liu
CB

Odpowiedzi:

5

SLICOT to narzędzie do obsługi gęstych problemów.

W przypadku dużego, ale rzadkiego systemu istnieje zestaw narzędzi lyapack dla MATLAB.

ZnZnHZnΣΣ

W Instytucie Maxa-Plancka w Magdeburgu w Niemczech trwają intensywne badania nad rzadkimi równaniami Lapunowa. Jednak zapowiedź zbliżającej się premiery następcy lyapacka - MESS - ma już kilka lat. Niemniej jednak warto od czasu do czasu sprawdzać stronę internetową MESS i publikacje autorów.

Nota prawna: Mój promotor ma duży wkład zarówno w SLICOT, jak i lyapack i jestem w stałym kontakcie z twórcami MESS.

Jan
źródło
Czy możesz dołączyć do chat.stackexchange.com/rooms/9031/lyapunov , masz kilka powiązanych pytań.
Milind R
3

Możesz połączyć się z MATLAB za pomocą tego .

Twoje matryce nie są zbyt duże: ręczne kodowanie algorytmów nie powinno powodować zbyt dużej straty czasu, może potrwa 1 godzinę. Może, ale nie musi być zbyt długi, w zależności od różnych czynników.

Jednak samodzielne kodowanie może nie być łatwe. Nie sądzę, żebym mógł, i zajmowałem się tym przez ostatnie kilka miesięcy. Ale sam algorytm SLICOT jest tutaj .

Milind R.
źródło
3

Algorytm SLICOT nie jest tak skomplikowany, to redukcja do formy Schur + trochę podstawienia wstecznego. Możesz sprawdzić artykuł Bartelsa-Stewarta http://dl.acm.org/citation.cfm?id=361582, który jest dość czytelny i wyjaśnia, jak to działa. Artykuł dotyczy przypadku niesymetrycznego, ale dostosowanie go do symetrycznego nie powinno być trudne - wystarczy jedna forma Schur zamiast dwóch.

Prawdopodobnie możesz go również napisać samodzielnie w R, jeśli ma już procedurę dla formularza Schur (sprawdziłbym siebie, ale zawsze jest bałagan, aby uzyskać znaczące wyniki dotyczące R poza Google, ponieważ z powodu ich niefortunnego wyboru nazewnictwa).

To mogłoby załatwić gęsty przypadek. Duży i rzadki jest bardziej techniczny.

Federico Poloni
źródło