Numpyのフィボナッチシーケンスの実装について、Q-Matrix methodを使って作業しています。結果はn = 47まで上がります。この時点で、matrix_power
関数はincorrect resultsを返しています。なぜこれが起こっているのかについての説明はありますか?Numpyのmatrix_power関数が大きい指数に間違った結果を与える
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
本当ですか?私は '2971215073'を得る。プラットフォーム上の問題の場合は、 'numpy.linalg.matrix_power(qmatrix、n).astype(numpy.uint64).flatten()。tolist()[0]' – alexpeits
のような別の型に行列をキャストしてみてください。それはプラットフォームの問題のようです。 'n = 47'の場合、' numpy.uint32'へのキャストは結果を修正しますが、大きな値の場合には再び間違ってしまいます。私は前に鋳造する必要はありませんでしたが、これを稼働させるための最良のアプローチは何ですか? –
[this](https://docs.scipy.org/doc/numpy/user/basics.types.html)で読むことができます。基本的に小さな整数は、4ビットと言うと、非常に大きな値を保持することはできません。表示するように頼むと変なことが起こるので、この問題を克服するために配列をキャストします。私が見ているところから、「uint64」は最大のものですが、私は専門家ではありません。 – alexpeits