Numpy Matrix Exponentiation ergibt einen negativen Wert
Ich wollte @ verwendNumPy
in einer Fibonacci-Frage wegen seiner Effizienz bei der Matrixmultiplikation. Sie wissen, dass es eine Methode gibt, um Fibonacci-Zahlen mit der Matrix @ zu finde[[1, 1], [1, 0]]
.
Ich habe einen sehr einfachen Code geschrieben, aber nachdem ich @ erhöht han
, die Matrix beginnt negative Zahlen zu ergeben.
import numpy
def fib(n):
return (numpy.matrix("1 1; 1 0")**n).item(1)
print fib(90)
# Gives -1581614984
Was könnte der Grund dafür sein?
Hinweis linalg.matrix_power
gibt auch negative Werte aus.
Anmerkung 2 Ich habe es mit Zahlen von 0 bis 100 versucht. Ab 47 werden negative Werte ausgegeben. Handelt es sich um ein Problem mit großen Ganzzahlen, da NumPy in C codiert ist? Wenn ja, wie könnte ich das lösen?
Bearbeiten Verwenden von regulärem Pythonlist
Matrix mitlinalg.matrix_power
gab auch negative Ergebnisse. Lassen Sie mich auch hinzufügen, dass nach 47 nicht alle Ergebnisse negativ sind, sondern zufällig.
Edit2: Ich habe es mit der von @ AlbertoGarcia-Raboso vorgeschlagenen Methode versucht. Das Problem mit den negativen Zahlen wurde behoben, es traten jedoch weitere Probleme auf. Es gibt die Antwort als-5.168070885485832e+19
wo ich brauche-51680708854858323072L
. Also habe ich versucht mitint()
, es konvertierte es zuL
, aber jetzt scheint die Antwort wegen eines Präzisionsverlustes falsch zu sein.