怎么在python中定义无限趋近(limit)函数?

或者系统已定义?

def limit():
    s=0.0
    x=1.0
    while True: 
        y=1.0/x
        s=s+y
        yield(s)
        x*=2

计算 s=1+1/2+1/4+.......+1/2^n

追问

我复制粘贴了一下,程序说第一行就出错了。是不是版本有问题?(我用2.7)

追答from fractions import Fraction
def limit():
    s=Fraction(0)
    x=Fraction(1,1)
    while True:
        y=1/x
        s=s+y
        yield s
        x*=2
result=limit()
for i in range(20):
    elem=next(result)
    print("%d/%d"%(elem.numerator,elem.denominator))

是不是缩进不对,前面多了空格,2.6中运行正常,2.7应该也正常

我又改写了一下,用分数表示结果,并打印前20项

用浮点数有精度限制,在若干项之后结果都 是2.0了

追问

亲,还是第一行有问题。不知道为什么,有时一个程序输入完全正确,结果在最不该有回题的地方出了问题。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-03-09
你先要说明,无限趋近用在哪些场景上,然后把这个场景处理好就可以了。

不存在数学的上,可以到处使用的无限趋近概念。

比如在某些条件些,你可以用 1e-5表示足够小的一个数字。换个场景就不合适了。

不过,可以明确的说,你所有遇到的数学问题,几乎在python上都已有答案。 只是要想办法去找到。本回答被提问者和网友采纳