Existe um algoritmo para criar uma matriz para o º poder em tempo?
Estive pesquisando on-line, mas até agora não obtive êxito.
algorithms
matrices
Jack H
fonte
fonte
Respostas:
Aqui está o pseudocódigo para umO ( lgn ) algoritmo de exponenciação de matriz. Observe que o operador * indica multiplicação de matriz comum.
fonte
Existem outros dois algoritmos que podem ou não ser relevantes. O primeiro algoritmo diagonaliza sua matriz (o que geralmente é possível), escrevendo-a comoM= PDP- 1 , Onde M, D em geral, podem ter valores complexos. Você então calculaM= PDnP- 1 . Observe que é muito fácil elevar uma matriz diagonal para on poder th. E seM não é diagonalizável, você encontra sua forma Jordan e continua como antes (agora você também precisa calcular alguns coeficientes binomiais). Esse algoritmo provavelmente não é numericamente estável.
Outro algoritmo usa o fato de queM satisfaz seu polinômio característico (ou mesmo seu polinômio mínimo). SuponhaP( M) = 0 para alguns P , digamos o polinômio característico. Então podemos calcularMn sobre R [M] / ( P( M) ) e substitua M . Isso significa que calculamosMn como um polinômio, usando o fato de que P( M) = 0 e apenas no final substitua os valores de M . Poderíamos até pré-calcular todos os poderes necessários paraM e todos os valores de Mk( modP( M) ) para k < 2 grausP- 1 , e esse algoritmo pode ser mais rápido que a resposta de Massimo Cafaro. Pode ser mais numericamente estável que o algoritmo anterior.
fonte