C语言:用函数精确求余弦函数近似值,附代码详解与复杂度分析
代码解释 整体思路 本题要求使用给定的级数公式来计算 $\cos(x)$ 的近似值,直到某一项的绝对值小于误差上限 $e$。级数公式为:$\cos(x)=\frac{x^0}{0!}-\frac{x^2}{2!}+\frac{x^4}{4!}-\frac{x^6}{6!}+\cdots$。 代码实现 ```c #include <stdio.h> #include <math.h> // 函数定义,用于计算余弦函数的近似值 double funcos( double e, double x ); int main() { double e, x; // 从标准输入读取误差上限 e 和自变量 x scanf("%lf %lf", &e, &x); // 调用 funcos 函数计算近似值并输出结果 printf("cos(%.2f) = %.6f\n", x, funcos(e, x)); return 0; } // 实现 funcos 函数 double funcos( double e, double x ) { // 初始化第一项的值,即 x^0 / 0! = 1 double term = 1.0; // 初始化总和为第一项的值 double sum = term; // 从第二项开始,指数为 2 int n = 2; // 符号,第二项为负 int sign = -1; // 进入循环,不断计算级数的每一项 while (1) { // 初始化阶乘为 1 double factorial = 1.0; // 计算当前项的阶乘 for (int i = 1; i <= n; i++) { factorial *= i; } // 计算当前项的值 term = sign * pow(x, n) / factorial; // 判断当前项的绝对值是否小于误差上限 e if (fabs(term) < e) { // 若满足条件,则跳出循环 break; } // 累加当前项到总和 sum += term; // 更新符号,正负交替 sign = -sign; // 指数增加 2,准备计算下一项 n += 2; } // 返回计算得到的总和,即余弦函数的近似值 return sum; } ``` 代码详细解释 1. 变量初始化: - `term`:用于存储级数的每一项的值,初始化为第一项 $\frac{x^0}{0!}=1$。 - `sum`:用于存储级数的总和,初始化为第一项的值。 - `n`:表示当前项的指数,从 2 开始,因为第一项已经初始化。 - `sign`:表示当前项的符号,第二项为负,初始化为 -1。 2. 循环计算级数的每一项: - 在 `while (1)` 循环中,不断计算级数的每一项。 - 对于每一项,先计算其阶乘 `factorial`,通过 `for` 循环实现。 - 然后根据公式计算当前项的值 `term`。 - 判断当前项的绝对值是否小于误差上限 `e`,如果是,则跳出循环。 - 否则,将当前项累加到总和 `sum` 中,并更新符号 `sign` 和指数 `n`。 3. 返回结果: - 循环结束后,返回总和 `sum`,即为余弦函数的近似值。 复杂度分析 - 时间复杂度:$O(k)$,其中 $k$ 是满足误差要求所需的项数。 - 空间复杂度:$O(1)$,只使用了常数级的额外空间。 ######[AI问答 | 851点数解答 | 2025-12-10 22:35:42]
- C 语言实现链表操作:创建、输出、删除及插入功能详解(字节豆包 | 534点数解答 | 2024-12-09 21:33:48)347
- C语言实现链表创建、输出、删除与插入操作的完整代码及注意要点(字节豆包 | 609点数解答 | 2024-12-18 12:18:21)366
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)352
- 深度揭秘 Oracle Workarea Size Policy:参数调优助力数据库性能飞升(阿里通义 | 372点数解答 | 2024-05-13 10:54:45)236
- C语言实现:根据精度求π近似值的代码解析(字节豆包 | 206点数解答 | 2024-11-18 21:29:19)120
- C++求解序列或与运算和差值:避O(nq)复杂度及数据处理要点(字节豆包 | 534点数解答 | 2025-10-17 20:05:07)65
- Java 实现:轻松生成 5 位数字、大小写字母混合验证码( | 266点数解答 | 2024-03-06 17:39:10)336
- 深度剖析:游戏中两个 Buff 效果的触发条件、逻辑及注意要点 (阿里通义 | 566点数解答 | 2024-11-26 14:24:12)262
- 深度剖析 Vue 2 插槽:从基础使用到高级玩法(字节豆包 | 165点数解答 | 2024-11-29 11:25:06)218
- C++实现支持四则运算的简单计算器,处理除数为0和无效操作(字节豆包 | 241点数解答 | 2025-10-29 20:21:29)69
- C语言破解甲乙丙真假话谜题:开发中需留意的三大要点(字节豆包 | 444点数解答 | 2025-11-24 00:10:58)57
- C++实现读取数字并输出最小值的代码及解释(字节豆包 | 113点数解答 | 2026-03-20 19:32:56)17