用python實現冪級數求三角函數sin的近似值
題目要求
- 從鍵盤輸入x,利用冪級數展開計算sin x的近似值(保留6位小數),要求誤差小於10-6。(提示:當累加項的絕對值小於10-6時,就可以停止累加)
- 測試用例 輸入:1.5 輸出:0.997495

解題思路
- 通過圖示可以將每次累加的數值分為上下兩部分(up和low),這樣兩部分獨立循環,互不影響。之后將兩部分結合,並加上符號的改變,累加到答案上,就可以得到答案
- 代碼塊中的ys是累加數的約束,即十的六次方
- flag是循環體的判斷條件,初始條件下,flag的值是True,當累加數小於ys后,將flag改變為False。一次控制循環體的開始和停止
- n是up部分和low部分的公用變量。在up部分代表x的指數,在low部分代表級數大小
- JJ是符號位的循環變量,用來控制符號位是負還是正
- 在循環塊中,先用for循環計算出級數的大小,即low部分,之后算出up部分的大小(前半部分是符號位,后半部分是數值大小),相除就得到了kk,也就是累加數。然后開始判斷,這里調用了python庫中的abs方法(求絕對值)
- 最后的最后就是打印答案
代碼塊
x = float(input())
ys = 10 ** -6
flag = True
sin_x = 0
n = int(1)
jj = 2
while flag:
low = 1
for i in range(1, n+1):
low = low * i
up = pow(-1,jj) * pow(x,n)
n = n + 2
jj = jj + 1
kk = up / low
if abs(kk) < 10 ** -6:
flag = False
break
sin_x = sin_x+kk
print(str(round(sin_x, 6)))