Очень быстрый ответ ...
Экспонента гамильтоновой матрицы является симплектической, свойство, которое вы, вероятно, хотели бы сохранить, в противном случае вы просто использовали бы метод, не сохраняющий структуру. Действительно, в использовании структурированного метода нет реального преимущества в скорости, только сохранение структуры.
Возможный способ решения вашей проблемы заключается в следующем. Сначала найдите симплектическую матрицу, такую что является гамильтоновым и блочным верхним треугольником, а имеет собственные значения в левой полуплоскости. Вы можете получить эту матрицу, например, взяв , где решает уравнение Риккати, связанное с , или (более устойчиво, поскольку оно ортогонально), переупорядочив разложение Шура из и применяя трик Лауб (то есть, заменяя унитарный фактор Шура с[ Я 0 Х Я ]ХНН[ U 11 U 12 U 21 U 22 ][ U 11 - U 12H^=M−1HM=[A^0−G^−A^T]A^[IX0I]XHH[U11U21U12U22][U11U12−U12U11] ). У вас могут возникнуть проблемы, если у гамильтониана есть собственные значения на мнимой оси, но это длинная история, и пока я полагаю, что это не произойдет в вашей проблеме.
Если у вас есть , у вас есть , и вы можете вычислить
где решает определенное уравнение Ляпунова, я полагаю, что-то вроде (знаки могут быть неправильными; накладывать и разверните блоки, чтобы получить правильное уравнение. Найдите «метод Шура-Парлетта» для ссылки на этот трюк).ехр ( Н ) = М ехр ( Н ) М - 1 ехр ( Н ) = [ ехр ( ) Х 0 ехр ( - Т ) ] , Х Х + Х Т = - ехр ( ) G - G ехрMexp(H)=Mexp(H^)M−1
exp(H^)=[exp(A^)0Xexp(−A^T)],
XехрA^X+XA^T=−exp(A^)G^−G^exp(−A^T)
exp(H^)H^=H^exp(H^)
Тогда три фактора являются точно симплектическими. Просто используйте их отдельно: не рассчитывайте продукт, иначе вы потеряете это свойство в числовом выражении.