簡體   English   中英

需要幫助檢查 sin 結果不匹配,在 python 中使用泰勒系列

[英]need help to check sin result doesnt match, using taylor series in python

這是我的代碼:

def faktorial(z):
    a=1
    for x in range (1,z+1):
        a=a*x
    return a
def sin(x):
    p=0
    for k in range(0,1000):
        a=((-1)**k)
        b=((x**(2*k+1)))
        c=(faktorial((2*k)+1))
        p+=(a*b)/c #sin x
    return p
x=45
print(sin(x))

但是當它運行時結果不匹配,sin(45) 應該是 0,850904 但我的程序得到 37.93452 作為結果。thx在此處輸入圖像描述

你得到一個錯誤的答案,因為你使用 degree 而不是 radian 。 當您的 x 太接近 0 時,此近似值也是正確的。

泰勒級數是根據弧度計算角度的,要使用它,您必須將度數轉換為弧度。

因此,您可以更改輸入中的單位或從度數轉換為度數。

從數學導入 pi

def sin(x):
    # Either do this
    x = x*pi/180
    p=0
    for k in range(0,1000):
        a=((-1)**k)
        b=((x**(2*k+1)))
        c=(faktorial((2*k)+1))
        p+=(a*b)/c #sin x
    return p
# or this x=pi/4
x = 45
print(sin(x))

通過使用更少的項和更低的弧度數來避免舍入錯誤:

def faktorial(z):
   a=1
   for x in range (1,z+1):
       a=a*x
   return a
def sin(x):
    p=0
    for k in range(0,10):
        a=((-1)**k)
        b=((x**(2*k+1)))
        c=(faktorial((2*k)+1))
        p+=(a*b)/c #sin x
    return p
x=3.1415/4
print(sin(x))

暫無
暫無

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

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