我是Python的新手,我正在尝试使用this系列近似正弦函数。
我的代码如下所示:
import math
def sin(x,n):
sine = 0
for i in range(n):
sign = (-1)**i
sine = sine + ((x**(2.0*i-1))/factorial(2**i-1))*sign
return sine
这并没有回复我希望的答案,但我很困惑,无法找到我的错误......或者我可能只是完全错误的方式(正如我所说,我'对于python和一般的编程来说都是非常新的。)
这似乎与我前一段时间用来编写this系列的近似pi的程序类似:
def piApprox(n):
pi = 0
for i in range(n):
sign = (-1)**i
pi = pi + 1.0/(2*i+1)*sign
return 4*pi
我不知道这是否有用,但我正试图用它来弄清楚我的正弦方法。任何帮助解决这个问题或指导我正确的方向将是非常感谢!
答案 0 :(得分:4)
罪的泰勒系列( x )是:
将您的代码与该定义进行比较,这两部分有一些错误:
x**(2.0*i-1)
factorial(2**i-1)
缺点应该是加号,因子中的指数应该是乘法。
x**(2.0*i+1)
factorial(2*i+1)
答案 1 :(得分:1)
您可以使用符号库SymPy使用Taylor系列构建近似函数:
from sympy import sin
from sympy.abc import x
# creates a generator
taylor_series = sin(x).series(n=None)
# takes the number of terms desired for your generator
taylor_series = sum([next(taylor_series) for i in range(num_of_terms)])
# creates a function that calculates the approximated sine function
mysin = sympy.lambdify((x,), taylor_series)