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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage