用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)))