Gibt es einen Algorithmus, um eine Matrix in Zeit auf die te Potenz zu bringen ?
Ich habe online gesucht, war aber bisher erfolglos.
Gibt es einen Algorithmus, um eine Matrix in Zeit auf die te Potenz zu bringen ?
Ich habe online gesucht, war aber bisher erfolglos.
Antworten:
Hier ist der Pseudocode für einen -Matrix-Exponentiationsalgorithmus. Beachten Sie, dass der Operator * die gewöhnliche Matrixmultiplikation bezeichnet.
MATHPOWER (M, n)
if n == 1
then return M
else
P = MATHPOWER (M, floor(n/2))
if n mod 2 == 0
then return P * P
else
return P * P * M
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.
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ür, 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.