Python解題-計算sinx

題目

給定一個精度值e,用下列公式計算sin(x)的近似值,要求前後兩次迭代之差的絕對值小於e,給出相應的最小迭代次數n和最後一次計算的sin(x)值。

sin x = x - x3/3! + x5/5! - x7/7! + … + (-1)n-1x2n-1/(2n-1)!

其中x爲弧度,n爲正整數。

【輸入形式】

從控制檯輸入x( (0<x<=10) )和e( x>e>0 )的值,以一個空格分隔。

【輸出形式】

輸出迭代次數n和最後一次計算的sin(x)的值(以一個空格分隔,並且輸出sin(x)時要求小數點後保留9位有效數字)。

思路

從公式看,每次疊加x^2和(2n-1)*(2n-2),用while來保證精度達標,最後轉換9位小數

代碼

x, e = input().split()
x = float(x)
e = float(e)
b = x
a = b
sign = 1
x2 = x
jc = 1
sin_x = b
n = 2
while abs(a+b)>e:  #一定是絕對值,a,b一正一負所以直接加就是差值
    a = b
    sign *= -1
    x2 *= x * x
    jc *=  (2 * n - 1) * (2 * n - 2)
    b = sign * x2 / jc
    sin_x += b
    n += 1
print(n-2)
print("%.9f" % sin_x)

Python真是妙啊

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章