用python实现幂级数求三角函数sin的近似值

用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)))
posted @ 2021-11-11 21:34  Thales_ZeeWay  阅读(2520)  评论(2编辑  收藏  举报