给定一个精度值e,用下列公式计算cos(x)的近似值,要求前后两次迭代之差的绝对值小于e,给出相应的最小迭代次数n和最后一次计算的cos(x)值。 cos(x)=x0/0!-x2/2!+x4/4!-x6/6!+......+(-1)nx2n/((2n)!) (来自C题库) 【输入形式】 从控制台输入x( -6.28<=x<=6.28 )和e( e>=0.00001 )的值,以一个空格分隔。 【输出形式】 输出迭代次数n和最后一次计算的cos(x)的值(以一个空格分隔,并且输出cos(x)时要求小数点后保留7位有效数字)。 【样例输入】 5.1 0.00001 【样例输出】 11 0.3779776 【样例说明】 输入的x为5.1,精度值e为0.00001。当n为9时,利用上述公式计算cos(x)的值为0.3779226,n为10时计算的结果为0.3779809,两结果之差的绝对值约为0.000058,大于要求的精度值0.00001,故需要继续迭代计算。当n为11时计算的结果为0.3779776,与n为10的计算结果之差的绝对值约为0.000003,小于要求的精度值,所以最小迭代次数应为11,最后一次计算的cos(x)的值为0.3779776(小数点后保留7位有效数字)。 注意: (1) 为保证计算精度,请使用浮点数据类型(实型)保存计算数据。 (2) 应至少迭代两次,即:n>=1。
时间: 2024-03-14 17:43:29 浏览: 67
C语言程序设计-功能:编写程序求无理数e的值并输出;计算公式为:e=1+11!+12!+13!+......+1n!当1n!
5星 · 资源好评率100%
以下是Python的代码实现:
```python
import math
x, e = map(float, input().split())
n = 1
cur_cos = 1
last_cos = 0
while abs(cur_cos - last_cos) >= e:
last_cos = cur_cos
cur_cos += (-1) ** n * (x ** (2 * n)) / math.factorial(2 * n)
n += 1
print(n-1, format(last_cos, ".7f"))
```
思路解析:
根据题目所给公式,我们可以使用while循环来进行迭代计算cos(x)的近似值。在每次迭代中,计算当前的cos(x)值和上一次的cos(x)值之差的绝对值,如果小于精度值e,则跳出循环;否则,继续迭代。每次迭代后,更新迭代次数n和上一次计算的cos(x)值。最后,输出迭代次数n-1和上一次计算的cos(x)值(注意要保留小数点后7位有效数字)。
另外,需要注意的是,Python中的math库提供了计算阶乘的函数math.factorial(),可以方便地用来计算分母的阶乘。
阅读全文