Numpy的matrix_power函数对大指数给出错误的结果[重复]

2024-02-04

我正在使用 Numpy 来实现斐波那契数列Q 矩阵法 http://mathworld.wolfram.com/FibonacciQ-Matrix.html。直到 n = 47 为止结果都很好。此时,matrix_power函数正在返回结果不正确 http://php.bubble.ro/fibonacci/。关于为什么会发生这种情况有任何解释吗?

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

如果您打算研究斐波那契数列,那么可能需要牺牲一些速度并使用 Python 的任意大整数。您可以通过将矩阵的 dtype 设置为object.

您也并不真正需要使用np.matrix对象,坚持使用普通数组几乎总是更好。您可以提取相关项目,而无需将数组转换为列表:

def fibonacci(n):
    qmatrix = numpy.array([[1, 1], [1, 0]], dtype=object)
    return numpy.linalg.matrix_power(qmatrix, n)[0, 1]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Numpy的matrix_power函数对大指数给出错误的结果[重复] 的相关文章

随机推荐