Библиотеки для решения уравнения Ляпунова

11

Следующее матричное уравнение в Σ - для заданных матриц B и C - фигурирует в моей работе как характеристика ковариационной матрицы. Я узнал, что это уравнение известно, в частности, в теории непрерывного управления временем, как уравнение Ляпунова , и что существуют различные хорошо известные алгоритмы для его решения, в которых используется особая природа этого линейного уравнения.

BΣ+ΣBT+C=0
Σ BC

Из поиска в Google я также узнал, что существуют реализации Matlab и Fortran. Я нашел SLICOT и RECSY. Из-за проблем с лицензированием доступ к источнику SLICOT был остановлен.

Большая часть моей работы реализована на R, и, поскольку я не смог найти интерфейс R для решателя, я сам решил написать его. Тогда у меня вопрос, является ли SLICOT наилучшей доступной библиотекой Fortran (или C) с реализацией решателя уравнения Ляпунова? Я также заинтересован в реализации , которые могут обрабатывать большие разреженные матрицы. B

NRH
источник
1
Насколько большой и редкий? Возможно, вам придется отойти от R, чтобы справиться с более крупными проблемами в разумные сроки.
Билл Барт
5
Я, вероятно, не должен говорить этого, но SLICOT доступен здесь .
Виктор Лю
CB

Ответы:

5

SLICOT - это инструмент для решения сложных задач.

Для больших, но разреженных систем есть набор инструментов lyapack для MATLAB.

ZnZnHZnΣΣ

В Институте Макса Планка в Магдебурге, Германия, ведутся активные исследования разреженных уравнений Ляпунова. Однако объявлению о предстоящем выпуске наследника ляпака - MESS - исполнилось несколько лет. Тем не менее, стоит время от времени проверять веб-страницу MESS и публикации авторов.

Отказ от ответственности: мой научный руководитель является крупным спонсором SLICOT и lyapack, и я нахожусь в постоянном контакте с разработчиками MESS.

январь
источник
Можете ли вы присоединиться к chat.stackexchange.com/rooms/9031/lyapunov , у вас есть несколько связанных вопросов.
Milind R
3

Вы можете подключиться к MATLAB, используя это .

Ваши матрицы не слишком велики: ручное кодирование алгоритмов не должно привести к слишком большой потере времени, возможно, оно будет работать в течение 1 часа. Это может быть или не быть слишком длинным в зависимости от различных факторов.

Хотя сам кодировать его может быть непросто. Я не думаю, что смогу, и я имел дело с этим в течение последних нескольких месяцев. Но сам алгоритм SLICOT здесь .

Milind R
источник
3

Алгоритм SLICOT не такой сложный, это редукция к форме Шура + некоторая обратная замена. Вы можете проверить документ Бартельс-Стюарт http://dl.acm.org/citation.cfm?id=361582, который достаточно читабелен и объясняет, как он работает. Статья посвящена несимметричному случаю, но не должно быть сложно адаптировать его к симметричному - вам просто нужна одна форма Шура вместо двух.

Вероятно, вы также можете написать его самостоятельно в R, если в нем уже есть подпрограмма для формы Шура (я бы сам проверил, но из-за их неудачного выбора имен всегда сложно получить значимые результаты о R из Google).

Это может решить плотный случай. Большой и редкий более технический.

Федерико Полони
источник