用泰勒级数逼近python中的正弦函数

2024-04-29 07:05:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我对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

我不知道这是否有用,但我正试图用它来计算我的正弦方法。如果能帮我解决这个问题或指引我正确的方向,我将不胜感激!


Tags: 函数代码inforreturndef错误pi
2条回答

可以使用符号库SymPy使用泰勒级数构建近似函数:

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)

sin(x)的泰勒级数为:

Taylor series for sin(x)

将代码与该定义进行比较时,这两部分有一些错误:

x**(2.0*i-1)
factorial(2**i-1)

负数应该是正数,阶乘中的指数应该是乘法。

x**(2.0*i+1)
factorial(2*i+1)

相关问题 更多 >