泰勒展开式估计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
我正在尝试计算 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