Gibt es einen Algorithmus, um eine Matrix in Zeit auf die te Potenz zu bringen ?
Ich habe online gesucht, war aber bisher erfolglos.
algorithms
matrices
Jack H.
quelle
quelle
Antworten:
Hier ist der Pseudocode für einen -Matrix-Exponentiationsalgorithmus. Beachten Sie, dass der Operator * die gewöhnliche Matrixmultiplikation bezeichnet.O(lgn)
quelle
Es gibt zwei andere Algorithmen, die relevant sein können oder nicht. Der erste Algorithmus diagonalisiert Ihre Matrix (was normalerweise möglich ist) und schreibt sie als , wobei im Allgemeinen einen komplexen Wert haben kann. Sie berechnen dann . Beachten Sie, dass es sehr einfach ist, eine Diagonalmatrix auf die te Potenz anzuheben . Wenn nicht diagonalisierbar ist, finden Sie seine Jordan-Form und fahren wie zuvor fort (jetzt müssen Sie auch einige Binomialkoeffizienten berechnen). Dieser Algorithmus ist wahrscheinlich nicht numerisch stabil.M=PDP−1 M,D M=PDnP−1 n M
Ein anderer Algorithmus nutzt die Tatsache, dass sein charakteristisches Polynom (oder sogar sein minimales Polynom) erfüllt. Angenommen, für einige , sagen wir das charakteristische Polynom. Dann können wir über berechnen und dann ersetzen . Das heißt, wir berechnen als Polynom, unter Verwendung der Tatsache , daß , und nur am Ende Ersatz werden die Werte von . Wir könnten sogar alle notwendigen Potenzen von und alle Werte von fürM P(M)=0 P Mn R[M]/(P(M)) M Mn P(M)=0 M M Mk(modP(M)) k<2degP−1 , und dann könnte dieser Algorithmus schneller sein als der Algorithmus, lautet die Antwort von Massimo Cafaro. Es ist möglicherweise numerisch stabiler als der vorherige Algorithmus.
quelle