首页 > 解决方案 > 通过泰勒展开估计 pi ​​的错误

问题描述

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

对编程很陌生,任何帮助都会很棒!

标签: pythonfunctionmathtaylor-series

解决方案


这部分在这里

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

推荐阅读