泰勒展开式估计pi的错误

Error in estimating pi by Taylor expansion

我正在尝试计算 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) - ...

刚接触编程,如有任何帮助将非常棒!

这部分在这里

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