我的作業是編寫一個代碼,其中包含一個函數,計算sinx泰勒系列,並給出數額。 函數必須得到(n,k),其中n是正弦所需的數字,k是函數在點之後必須計算的數字。 首先我忽略ķ,因爲它容易點後,以限制人數,並寫道,只是計算sinx的泰勒的功能,所以我放棄了爲r的特定範圍(r爲泰勒級數的每一句話):尋找我的代碼錯誤寫入計算泰勒系列
def taylor(n,k):
s= ((math.pi)/180)*n
ex = s
sign = 1
factorial = 1
sum=0
i=1
r=1
while r>0.00000000000000000001 or r<0.0000000000000000000001 :
r= ex*sign/factorial
ex = ex*s*s
sign = sign*(-1)
factorial=factorial*(i+1)*(i+2)
i= i+2
sum = sum + r
return sum
import math
print(taylor(45,1))
我只是不知道爲什麼,如果我集合R比這個(即0.1)更大的量,我得到這個錯誤:
Traceback (most recent call last):
File "/Users/modern/Desktop/taylor.py", line 22, in <module>
print(taylor(45))
File "/Users/modern/Desktop/taylor.py", line 12, in taylor
r= ex*sign/factorial
OverflowError: int too large to convert to float
你'factorial'變量可能只是變得過於龐大,因爲階乘往往要做到這一點,你看看[此鏈接](http://stackoverflow.com/questions/16174399/overflowerror-long-int-太大的轉換爲浮點在python)的方式來繞過該 –
你的while循環看起來像缺少一個負號。爲什麼不只是abs(r)> 10 **( - 12)'? –
你使用的是什麼版本的Python?我的2.7.5版本處理這個乾淨,吐出一個非常好的根(2)的近似值。 – Prune