Bardzo szybka odpowiedź ...
Wykładnik macierzy hamiltonowskiej jest symplektyczny, właściwość, którą prawdopodobnie chciałbyś zachować, w przeciwnym razie po prostu użyłbyś metody nie zachowującej struktury. Rzeczywiście, nie ma rzeczywistej przewagi prędkości w stosowaniu metody strukturalnej, tylko zachowanie struktury.
Możliwy sposób rozwiązania problemu jest następujący. Pierwszy znaleźć symplektycznych matrycy tak, że H = M - 1 H K = [ - G 0 - t ] jest Hamiltona i bloku górnej trójkątny i ma wartości własnych w lewej połowie płaszczyzny. Otrzymujesz tę macierz, na przykład biorąc [ I 0 X I ] , gdzie X rozwiązuje równanie Riccati związane z HH.^= M.- 1H.M.= [ A^0- G^- A^T.]ZA^[ JaX0ja]XH., lub (bardziej stabilny, ponieważ jest ortogonalny) poprzez zmianę kolejności rozkładu Schura i zastosowanie sztuczki Lauba (tj. zastąpienie jednolitego współczynnika Schur [ U 11 U 12 U 21 U 22 ] przez [ U 11 - U 12 U 12 U 11 ] ). Możesz mieć problem z zrobieniem tego, jeśli Hamiltonian ma wartości własne na osi urojonej, ale to długa historia i na razie przypuszczam, że nie dzieje się tak w twoim problemie.H.[ U11U21U12U22][ U11U12- U12U11]
Gdy trzeba trzeba exp ( H ) = M exp ( H ), M - 1 , można obliczyć
exp ( H ) = [ exp ( ) X 0 exp ( - t ) ] ,
gdzie X rozwiązuje pewne równania Lapunowa, uważam coś takiego X + X a TM.exp( H) = Mexp( H^) M- 1
exp( H^) = [ exp( A^)0Xexp( - A^T.)] ,
X (objawy mogą być uszkodzone, nakłada
exp ( H ) H = H exp ( H ) i rozszerzają bloków w celu uzyskania prawidłowego równanie. Odszukaj „metodę Schur-Parletta”, aby znaleźć odniesienie do tej sztuczki).
ZA^X+ XZA^T.= - exp( A^) G^- G^exp( - A^T.)
exp( H^) H^= H^exp( H^)
Zatem trzy czynniki są dokładnie symplektyczne. Po prostu używaj ich osobno: nie obliczaj produktu, inaczej stracisz tę właściwość liczbowo.