Resposta muito rápida ...
O exponencial de uma matriz hamiltoniana é simplético, uma propriedade que você provavelmente deseja preservar; caso contrário, você simplesmente usaria um método que não preserva a estrutura. De fato, não há vantagem real de velocidade no uso de método estruturado, apenas preservação de estrutura.
Uma maneira possível de resolver seu problema é o seguinte. Primeiro encontre uma matriz simplética tal que é hamiltoniano e bloqueia o triangular superior e possui valores próprios no semiplano esquerdo. Você obtém essa matriz, por exemplo, tomando , em que resolve a equação de Riccati associada a , ou (mais estável por ser ortogonal) reordenando a decomposição de Schur de e aplicando o truque de Laub (ou seja, substituindo o fator Schur unitário porH^=M−1HM=[A^0−G^−A^T]A^[IX0I]XHH[U11U21U12U22][U11U12−U12U11] ). Você pode ter problemas para fazê-lo se o Hamiltoniano tiver autovalores no eixo imaginário, mas essa é uma longa história e, por enquanto, vou supor que isso não ocorra no seu problema.
Depois de ter , você tem e pode calcular
onde resolve uma certa equação de Lyapunov, acredito que algo como (os sinais podem estar errados; impor e expanda os blocos para obter a equação correta. Consulte "Método Schur-Parlett" para obter uma referência a esse truque).Mexp(H)=Mexp(H^)M−1
exp(H^)=[exp(A^)0Xexp(−A^T)],
XA^X+XA^T=−exp(A^)G^−G^exp(−A^T)
exp(H^)H^=H^exp(H^)
Então os três fatores são exatamente simpléticos. Apenas use-os separadamente: não calcule o produto ou você perderá essa propriedade numericamente.