Sehr schnelle Antwort ...
Das Exponential einer Hamilton-Matrix ist symplektisch, eine Eigenschaft, die Sie wahrscheinlich beibehalten möchten, andernfalls würden Sie einfach eine nicht strukturerhaltende Methode verwenden. In der Tat gibt es keinen wirklichen Geschwindigkeitsvorteil bei der Verwendung einer strukturierten Methode, sondern nur die Erhaltung der Struktur.
Eine Möglichkeit, Ihr Problem zu lösen, ist die folgende. Zuerst findet eine symplektischer Matrix , so daß H = M - 1 H M = [ A - G 0 - A T ] Hamilton - Operator ist und oberes Dreieck Block und A hat Eigenwert in der linken Halbebene. Sie erhalten diese Matrix zum Beispiel, indem Sie [ I 0 X I ] nehmen , wobei X die mit H verbundene Riccati-Gleichung löstH.^= M.- 1H.M.= [A.^0- -G.^- -A.^T.]]EIN^[ IchX.0ich]]X.H.oder (stabiler, da es orthogonal ist) durch Neuordnung der Schur-Zerlegung von und Anwenden des Laub-Tricks (dh Ersetzen des einheitlichen Schur-Faktors [ U 11 U 12 U 21 U 22 ] durch [ U 11 - U 12 U 12 U 11 ] ). Möglicherweise haben Sie Probleme damit, wenn der Hamilton-Operator Eigenwerte auf der imaginären Achse hat, aber das ist eine lange Geschichte, und ich gehe davon aus, dass dies bei Ihrem Problem nicht der Fall ist.H.[ U.11U.21U.12U.22]][ U.11U.12- - U.12U.11]]
Sobald Sie haben , haben Sie exp ( H ) = M exp ( H ) M - 1 , und kann man berechnen
exp ( H ) = [ exp ( A ) X 0 exp ( - A T ) ] ,
wobei X löst eine bestimmte Lyapunov - Gleichung, ich so etwas wie glauben A X + X A TM.exp(H.) = M.exp( H.^) M.- 1
exp( H.^) = [ exp( A.^)0X.exp( - A.^T.)] ,
X. (Zeichen können falsch sein; verhängen
exp ( H ) H = H exp ( H ) und erweiternblockieren die richtige Gleichung zu erhalten. Suchen Sie nach "Schur-Parlett-Methode", um einen Hinweis auf diesen Trick zu erhalten.
EIN^X.+ X.EIN^T.= - exp( A.^) G.^- G.^exp( - A.^T.)
exp( H.^) H.^= H.^exp( H.^)
Dann sind die drei Faktoren genau symplektisch. Verwenden Sie sie einfach separat: Berechnen Sie das Produkt nicht, sonst verlieren Sie diese Eigenschaft numerisch.