当使用python脚本使用Gauss-Legendre算法计算pi时,我得到了这个错误。在获得以下结果之前,最多只能使用1024次迭代:C:\Users\myUsernameHere>python Desktop/piWriter.py

End iteration: 1025

Traceback (most recent call last):

File "Desktop/piWriter.py", line 15, in

vars()['t' + str(sub)] = vars()['t' + str(i)] - vars()['p' + str(i)] * math.

pow((vars()['a' + str(i)] - vars()['a' + str(sub)]), 2)

OverflowError: long int too large to convert to float

这是我的代码:import math

a0 = 1

b0 = 1/math.sqrt(2)

t0 = .25

p0 = 1

finalIter = input('End iteration: ')

finalIter = int(finalIter)

for i in range(0, finalIter):

sub = i + 1

vars()['a' + str(sub)] = (vars()['a' + str(i)] + vars()['b' + str(i)])/ 2

vars()['b' + str(sub)] = math.sqrt((vars()['a' + str(i)] * vars()['b' + str(i)]))

vars()['t' + str(sub)] = vars()['t' + str(i)] - vars()['p' + str(i)] * math.pow((vars()['a' + str(i)] - vars()['a' + str(sub)]), 2)

vars()['p' + str(sub)] = 2 * vars()['p' + str(i)]

n = i

pi = math.pow((vars()['a' + str(n)] + vars()['b' + str(n)]), 2) / (4 * vars()['t' + str(n)])

print(pi)

理想情况下,我希望能够插入一个非常大的数字作为迭代值,稍后再回来查看结果。

感谢任何帮助!

谢谢!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐