通过泰勒展开式估计pi时出错

时间:2019-03-19 23:19:27

标签: python function math taylor-series

我正在尝试计算pi的值,但是我的逻辑中存在一些语义错误,我无法弄清。

def taylor(precision):
    iter = 1
    sum = 0
    fx = 100
    sign = 1

    while (abs(fx) > precision):

        if not iter % 2 == 0:
            print(sign)
            sum += ((1 / (iter)) * sign)

        my_pi = 4 * (sum)
        fx = math.pi - my_pi
        iter += 1
        sign *= -1

    return my_pi

这将导致无限循环。

我应该使用此系列,并以特定的精度找到my_pi

π/ 4 =(1/1)-(1/3)+(1/5)-(1/7)+(1/9)-...

编程的新手,任何帮助都将是惊人的!

1 个答案:

答案 0 :(得分:1)

这部分在这里

if not iter % 2 == 0:

仅在迭代不是偶数(即1、3、5 ...)时才求和。 但是,您需要在每次迭代中交替使用符号,包括偶数迭代的符号。

结果,您得到1/1 + 1/3 + 1/5 + ...

相反,尝试

        if not iter % 2 == 0:
            print(sign)
            sum += ((1 / (iter)) * sign)
            sign *= -1 # move the sign assignment here