Sejam matrizes reais, quadradas e densas. e são simétricos. Deixei
ser uma matriz hamiltoniana. Eu quero calcular o exponencial matriz de . Preciso da exponencial da matriz completa, , não apenas do produto vetor de matriz. Existem algoritmos ou bibliotecas especializadas disponíveis para calcular o exponencial de uma matriz hamiltoniana?e t H
linear-algebra
matrix
dense-matrix
Max Behr
fonte
fonte
Respostas:
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] X H H [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).M exp(H)=Mexp(H^)M−1
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.
fonte
Você pode ter uma opção para usar matrizes hierárquicas ( -matrices) e a funcionalidade correspondente das bibliotecas que as suportam.H
Efetivamente, se todas as matrizes , e são bem e eficientemente representadas no formato -matrix, a matriz Hamiltoniana do bloco é efetivamente uma matriz . A questão sobre a representação de , e na forma hierárquica se resume à sua origem: se alguém puder encontrar estruturas de baixo escalão dentro delas (possíveis permutações de índices de linha / coluna aplicadas), essa abordagem será viável. Um exemplo plausível seria se , eA G Q H H H A G Q A G Q provêm de uma equação integral que também explica sua estrutura densa e seu potencial de compressão (dependendo do kernel).
O requisito formal para que esse método funcione será se for representável no formato -matrix; no entanto, eu começaria diretamente da construção da representação matriz de , e e esperaria o melhor. H H A G Q(H−λI)−1 H H A G Q
A aplicação de matrices na exponenciação da matriz é bem discutida em:H
Existem várias bibliotecas que suportam matrices. Eu sei que o antigo Lib suportava alguma exponenciação de matriz de formulário e tinha as peças necessárias para criar uma.HH H
Desvantagens dessa abordagem:
Positivos:
fonte