编写一个程序计算sinx和cosx的近似值,使用台劳级数公式 舍去的绝对值应小于ε,输入文件包括2个实数x,ε,两个数间有一空格。输出文件共两行 第一行输出sinx的近似值 第二行输出cosx的近似值
时间: 2024-10-14 09:08:31 浏览: 44
编写这样的程序需要对泰勒级数有一定的了解,特别是涉及到正弦(sin)和余弦(cos)函数的泰勒展开式。泰勒级数可以用来逼近这些函数的值,通过有限项的求和来得到高精度的结果。对于正弦和余弦,它们的泰勒级数分别为:
\[
\sin(x) = x - \frac{x^3}{3!} + \frac{x^5}{5!} - \frac{x^7}{7!} + ...
\]
\[
\cos(x) = 1 - \frac{x^2}{2!} + \frac{x^4}{4!} - \frac{x^6}{6!} + ...
\]
为了舍去绝对误差小于给定的精度 ε,你需要迭代计算这些级数,并检查每一项的绝对值是否超过 ε。一旦达到这个精度,就停止添加更多的项。
以下是一个简单的伪代码示例:
```python
def compute_taylor_series(x, epsilon):
sin_approx = x
cos_approx = 1
for n in range(3, int(np.log(epsilon**-1) / np.log(2)) + 1): # 使用对数判断项数,保证精度
sin_term = (-1)**n * (x ** (2*n+1)) / ((2*n+1) * factorial(n))
if abs(sin_term) < epsilon:
break
sin_approx += sin_term
cos_term = (-1)**n * (x ** (2*n)) / (factorial(n) * 2**n)
if abs(cos_term) < epsilon:
break
cos_approx -= cos_term
return sin_approx, cos_approx
# 输入处理
x, epsilon = map(float, input("请输入x和epsilon的值 (例如: 0.5 1e-6): ").split())
# 计算并输出结果
sin_result, cos_result = compute_taylor_series(x, epsilon)
with open('output.txt', 'w') as f:
f.write(f"sin(x) ≈ {sin_result}\n")
f.write(f"cos(x) ≈ {cos_result}")
阅读全文