Project Euler #101項目歐拉#101 - 如何解決numpy多項式溢出?
我剛開始學習Numpy,到目前爲止,它看起來非常簡單。
我碰到的一件事是,當我評估多項式時,結果是一個int32,所以會發生溢出。
u = numpy.poly1d([1, -1, 1, -1, 1, -1, 1, -1, 1, -1, 1])
for i in xrange(1, 11):
print(i, u(i))
的結果是:
(1, 1)
(2, 683)
(3, 44287)
(4, 838861)
(5, 8138021)
(6, 51828151)
(7, 247165843)
(8, 954437177)
(9, -1156861335)
(10, 500974499)
最後兩個項目顯然是不正確。
圍繞我能想到的是由100
u = numpy.poly1d([0.01, -0.01, 0.01, -0.01, 0.01, -0.01, 0.01, -0.01, 0.01, -0.01, 0.01])
for i in xrange(1, 11):
print(i, int(u(i) * 100))
融通係數這一次的結果是正確的
(1, 1)
(2, 682)
(3, 44286)
(4, 838860)
(5, 8138020)
(6, 51828151)
(7, 247165843)
(8, 954437177)
(9, 3138105961L)
(10, 9090909091L)
有沒有更好的辦法的工作? Numpy是否允許我更改數據類型?謝謝。
我張貼的項目3-後發現5即使我的工作也不正確。 – grokus 2010-01-08 20:29:45