给定一个精度值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
【输出形式】
输出迭代次数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真是妙啊