Python解題-計算sinx

3339 ワード

タイトル
精度値eを与え、sin(x)の近似値を以下の式で計算し、前後の2回の反復の差の絶対値がeより小さいことを要求し、対応する最小反復回数nと最後の計算のsin(x)値を与える.
sin x = x - x3/3! + x5/5! - x7/7! + … + (-1)n-1x2n-1/(2n-1)!
ここで、xは弧度であり、nは正の整数である.
【入力形式】
コンソールからx((0 e>0)の値を入力し、スペースで区切ります.
【出力形式】
反復数nと最後に計算されたsin(x)の値(スペースで区切られ、sin(x)が出力されると小数点以下9桁の有効数字が保持される)が出力されます.
構想
式から見ると、x^2と(2 n-1)*(2 n-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は素晴らしいですね