7-4 余弦函数

#include <stdio.h>
#include <math.h>

#define pi 3.1415926535897932

int main()
{
    double x, t, p, y, epsilon;
    int d = 0;
    scanf("%lg%lg", &x, &epsilon);
    t = fmod(x, 2.0 * pi);
    p = 1.0;
    y = p;
    do
    {
        d += 2;
        p = p * (-t * t) / ((d - 1.0) * d);
        y += p;
    }
    while (fabs(p) >= epsilon);
    printf("%f\n", y);
    return 0;
}

分数 18

全屏浏览

切换布局

作者 李祥

单位 湖北经济学院

根据麦克劳林公式计算任意角的余弦。

题图.jpg

输入格式

x  ε

注:x 为角(单位:弧度),ε 为计算精度。

输出格式

y

注:y 为 x 的余弦值。用 %f 格式限定符输出 6 位小数。

输入样例1
1.047197551196598 0.00000001

输出样例1
0.500000

输入样例2
315.2064629101759 0.000001

输出样例2
0.500000

要求:所计算的最后一项的绝对值恰好小于 ε。

注:pi=3.1415926535897932384626...。

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

栈限制

8192 KB

### 7-3 余弦函数计算方法或实现代码 在C语言中,可以通过泰勒级数展开来近似计算余弦函数的值。泰勒级数是一种将函数表示为无穷多项式的方法,对于余弦函数 \( \cos(x) \),其泰勒级数展开形式如下: \[ \cos(x) = 1 - \frac{x^2}{2!} + \frac{x^4}{4!} - \frac{x^6}{6!} + \cdots \] 为了实现这一计算,可以编写一个函数,利用循环和条件判断逐步累加每一项的值,直到满足指定的误差要求。以下是一个完整的实现代码示例[^5]: ```c #include <stdio.h> #include <math.h> double funcos(double e, double x) { double term = 1.0; // 当前项 double sum = 1.0; // 累加结果 int sign = -1; // 符号交替 int i = 2; // 指数从2开始 while (fabs(term) >= e) { // 当前项绝对值大于误差时继续计算 term *= (x * x) / (i * (i - 1)); // 计算当前项 sum += sign * term; // 累加到总和 sign *= -1; // 更新符号 i += 2; // 更新指数 } return sum; } int main() { double e, x; scanf("%lf %lf", &e, &x); printf("cos(%.2f) = %.6f\n", x, funcos(e, x)); return 0; } ``` 上述代码中,`funcos` 函数通过循环逐步计算每一项,并累加到最终结果中,直到当前项的绝对值小于给定的误差 `e` 为止[^5]。 此外,需要注意的是,C语言标准库中已经提供了内置的余弦函数 `cos`,可以直接调用以获得更精确的结果。自定义实现主要用于学习目的,帮助理解泰勒级数展开及数值逼近的基本原理[^1]。 ### 注意事项 1. 输入的角度通常以弧度为单位,而非角度。如果输入是以角度为单位,则需要先将其转换为弧度: \[ \text{弧度} = \text{角度} \times \frac{\pi}{180} \] 2. 泰勒级数展开的收敛速度与输入值的大小有关。当输入值较大时,可能需要更多的项才能达到相同的精度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值