簡體   English   中英

需要幫助使用泰勒系列近似python中的正弦函數

[英]Need help approximating sine function in python using Taylor Series

我是Python的新手,我正在嘗試使用這個系列來近似正弦函數。

我的代碼看起來像這樣:

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和編程一般)。

這似乎類似於我不得不前寫了一個給定的近似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

我不知道這是否有用,但我正試圖用它來弄清楚我的正弦方法。 任何幫助解決這個問題或指導我正確的方向將不勝感激!

sin( x )的泰勒級數是:

泰勒系列罪(x)

將您的代碼與該定義進行比較,這兩部分有一些錯誤:

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

缺點應該是加號,因子中的指數應該是乘法。

x**(2.0*i+1)
factorial(2*i+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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM