2014-02-24 52 views
1

所以我在math.se阅读这个问题,并决定运行一个循环来检查自己的答案。我知道证据是严格的,所以我从来没有真正怀疑过它,但是当你看到事情成功的时候它是很好的。显然,stackoverflow不支持LaTex,(考虑到这是一个编程站点,而不是数学),所以我发布了一个屏幕截图,以防万一链接崩溃或其他问题。Bug循环列表

Ramanujan's famous nested radical

现在,我写了这个代码模拟了上述表达,显然计算它,直到无穷是荒谬的,所以我决定做它,直到N = 999,似乎是合理的,我为我没有一个表达式收敛有多快的想法。对于没有数学背景的人,忽略lim我试图计算n = 999的给定表达式。

>>>l=list(range(1,1000)) 
>>>from math import sqrt as s 
>>>p=1 
>>>while l: 
     a=l.pop() 
     a*=p 
     a+=1 
     a=s(a) 
     p=a 
>>>p 
2.0 

我希望答案是3未2.另请注意,我不要求的方法来计算这个功能,我要求我的代码中的bug。你可能提供了我自己的功能,但这个问题的主要目的是找到我写的代码中的错误,这是我无法找到的。

+0

无论你的代码是否有bug(似乎也是如此),1000次迭代可能是不够的。任何一台现代计算机都可以轻松处理100万个,而1亿个计算机将不会是一个延伸。另外,为什么要将范围设置为列表,只要在范围内完成一个列表即可。这会更有效率。 – Linuxios

+0

@Linuxios我不认为问题太小n。它应该比这更快地收敛。它在这里收敛到2,部分得益于它出现在一个不错的2.0而不是一些小数。 – Guy

+0

@Linuxios我会尝试检查更大的n虽然。 – Guy

回答

5

它看起来像你想要使用range(2, 1000)。如果你一路下降到1你最终得到一个额外的sqrt(1 + ...)其中...是你正试图解决的公式。

+0

谢谢,得到了它。 +1 – Guy