首页 > 解决方案 > 如何在不使用内循环或 if-else 的情况下计算 sin(x) 的泰勒级数的总和?

问题描述

  1. 我不能使用内部循环
  2. 我不能使用 if-else

我需要计算以下系列:

x - x^3/3! + x^5/5! - x^7/7! + x^9/9! ...

我在想类似以下的事情:

n =1
x =0.3
one=1
fact1=1
fact2=1
term =0
sum =0
for i in range(1, n+1, 2):
    one = one * (-1)
    fact1 = fact1*i
    fact2 = fact2*i+1
    fact = fact1*fact2
    x = x * x
    term = x/fact
    sum = sum + term

但是,我发现很难同时保持事实和 x 的乘法。

标签: python

解决方案


您想要计算项的总和。每一项都是前一项乘以-1 * x * x除以n * (n+1)。就写吧:

def func(x):
    eps = 1e-6                   # the expected precision order
    term = x
    sum = term
    n = 1
    while True:
        term *= -x * x
        term /= (n+1) * (n+2)
        if abs(term) < eps: break
        sum += term
        n += 2
    return sum

演示:

>>> func(math.pi / 6)
0.4999999918690232

按预期给出 0.5,精度为 10e-6


注:该系列是众所周知的sin功能开发...


推荐阅读