/ / La funzione matrix_power di Numpy che fornisce risultati errati per i grandi esponenti [duplicato] - python, numpy, fibonacci

La funzione matrix_power di Numpy che fornisce risultati errati per i grandi esponenti [duplicato] - python, numpy, fibonacci

Sto lavorando a un'implementazione della sequenza di Fibonacci in Numpy usando il Metodo Q-Matrix. I risultati vanno bene fino a n = 47. A questo punto, il matrix_power la funzione sta tornando risultati errati. Qualche spiegazione sul perché questo sta accadendo?

import numpy
def fibonacci(n):
qmatrix = numpy.matrix([[1, 1], [1, 0]])
(a,b,c,d) = numpy.linalg.matrix_power(qmatrix,n).flatten().tolist()[0]
return b
print fibonacci(47) # Outputs -1323752223

risposte:

4 per risposta № 1

Se hai intenzione di giocare con ilNumeri di Fibonacci, è probabilmente giustificato sacrificare un po 'di velocità e usare gli interi arbitrari di Python. Puoi farlo impostando il dtype della matrice su object.

Inoltre non hai davvero bisogno di usare il np.matrix oggetto, è quasi sempre meglio attenersi a normali matrici. Ed è possibile estrarre l'elemento pertinente senza convertire la matrice in un elenco:

def fibonacci(n):
qmatrix = numpy.array([[1, 1], [1, 0]], dtype=object)
return numpy.linalg.matrix_power(qmatrix, n)[0, 1]