[英]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.