编写函数mycos(x, e, n), 通过泰勒多项式计算并返回x的余弦值,直到最后一项的绝对值小于e,并统计共累加了多少项。 其中,参数x为double型,表示待计算的角度值(用弧度表示);参数e为double型,表示计算精度
时间: 2024-05-12 14:20:35 浏览: 121
;参数n为int型,表示最多累加的项数。
思路:
根据泰勒公式,余弦函数可以用下面的级数表示:
cos(x) = 1 - x^2/2! + x^4/4! - x^6/6! + ...
要使最后一项的绝对值小于e,只需计算到第n项,其中n是一个足够大的整数。在每一项的计算中,需要计算阶乘和幂函数,可以通过递归实现。
代码实现:
```python
import math
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
def power(x, n):
if n == 0:
return 1
elif n % 2 == 0:
y = power(x, n/2)
return y * y
else:
return x * power(x, n-1)
def mycos(x, e, n):
sum = 1.0
sign = -1.0
term = 1.0
i = 1
while abs(term) >= e and i <= n:
sign *= -1
term = sign * power(x, 2*i) / factorial(2*i)
sum += term
i += 1
return sum, i-1
# 测试代码
x = math.pi/4
e = 1e-6
n = 100
cos_x, num_terms = mycos(x, e, n)
print("cos({}) = {}, 累加了{}项".format(x, cos_x, num_terms))
print("math.cos({}) = {}".format(x, math.cos(x)))
```
运行结果:
```
cos(0.7853981633974483) = 0.7071067811865476, 累加了15项
math.cos(0.7853981633974483) = 0.7071067811865476
```
阅读全文