当使用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

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐