Schnelle Berechnung von Fibonacci Zahlen:
Fast Fibonacci Numbers
Die Fibonacci Folge ist folgendermassen definiert:
Es handelt sich also um eine rekursiv definierte Folge. Das bringt denn Nachteil mit, dass wen man berechnen möchte man zwingend auf die vorherigen beiden Glieder der Folge und angewiesen ist. damit man aber wiederum diese beiden Glieder der Folge berechnen kann muss man wieder die beiden vorherigen kennen.
Dies führt dazu, dass wenn man berechnen möchte alle Zahlen der Fibonacci Folge zwischen und berechnen muss. Somit erhält man also Unmengen von Daten, welche am Schluss gar nicht interessant sind, da man nur an interessiert ist.Hier kommt jetzt die Lineare Algebra ins Spiel. Es stellt sich heraus, dass die folgende Matrix:
Dazu genutzt werden kann Fibonacci Zahlen zu erzeugen:
Es liegt also auch hier wieder eine rekursive Definition vor:
Was wenn man die Werte und einsetzt folgendes ergibt:
Was aufgrund von Lemma 2.40 zusammengefasst und wie folgt geschrieben werden kann:
Um jetzt also die gesuchte Fibonacci Zahl berechnet zu können muss die Matrix bekannt sein. Die Matrixmultiplikation muss also Mal ausgeführt werden, bevor bei der Rechnung
die gesuchte Fibonacci Zahl in der unteren rechten Ecke zu finden ist.
Aber auch hier stellt sich noch die Frage, ob das besser ist. Wenn mit dieser Methode berechnet werden soll muss bekannt sein und es müssen wieder viele Matrixmultiplikationen durchgeführt werden. Hier kann man sich aber die Methode des iterativen quadrierens zur Hilfe nehmen:Indem man die Matrix immer wieder quadriert und notfalls noch mit multipliziert, damit man auf einen ungeraden Exponenten kommt ist man in 6 Schritten am Ziel.
Mit der obigen Methode kann man den Rechenaufwand zwar schon stark reduzieren, es stellt sich nun aber die Frage: wieso das ganze überhaupt? Es gibt doch eine Formel für die explizite Berechnung von :
Zwar kann man mit dieser Formel sofort das -te Glied der Folge berechnen, jedoch kann es auf dem Computer, welcher mit Fliesskommazahlen arbeitet bei grossen Zahlen zu starken Rundungsfehlern kommen. Dann hat man zwar schnell die Fibonacci Zahl berechnet, sie ist aufgrund eines solchen Rundungsfehlers aber falsch. Das iterative quadrieren ist also er praktischere Weg, um die -te Fibonacci Zahl zu berechnen, auch wenn der Rechenaufwand höher ist.
Link to original