用多项式来近似表示余弦函数cosx 分数 20 作者 李军 单位 陕西理工大学 在数学上对一些复杂的函数,常用多项式来近似表示函数。例如正弦函数cosx是用如下多项式来近似表达的: cosx≈1− 2! x 2 + 4! x 4 − 6! x 6 +⋯+(−1) n−1 (2n−2)! x 2n−2 +⋯ 在实际计算时当多项式尾项(−1) n−1 (2n−2)! x 2n−2 的绝对值小于一个预定值ε(例如10 −5 或10 −6 )时可认为达到了计算精度要求,结束计算。请根据题目描述编写函数计算在x∈[0,π]处点的余弦值。 编程要求: 编写两个函数,一个是求cosx的函数MyCos(x),另一个是求n!的函数fact(n)。在函数MyCos(x)中调用fact(n)函数。其中公式中的x n 可用库函数pow(x,n)来实现。 函数接口定义: 求n!的函数接口: double fact(int n); 参数n是要求阶乘的数,是一个整数类型的参数,函数的返回值为double型. 求sinx值的函数: double MyCos(double x,double epsilon); 其中x是cosx的自变量参数,epsilon是计算精度要求参数。 裁判测试程序样例: #include <stdio.h> /* 请在这里填写答案 */ int main() { double x,epsilon; scanf("%lf%lf",&x,&epsilon); printf("%.15f\n",MyCos(x,epsilon)); return 0; } 输入说明: 在一行内输入两个数,两数之间用空格间隔,其中第一个数是自变量的值,第二者数是计算精度要求值。 输出说明: 输出一个值,输出保留17位小数。 输入样例: 1.1 0.000000000001 输出样例: 0.453596121425359
时间: 2024-03-09 19:49:32 浏览: 346
根据题目描述,可以使用如下的代码实现:
```c
#include <stdio.h>
double fact(int n) {
double res = 1.0;
int i;
for (i = 1; i <= n; i++) {
res *= i;
}
return res;
}
double MyCos(double x, double epsilon) {
double res = 1.0;
double term = 1.0;
int n = 1;
while (term >= epsilon) {
term = pow(-1, n - 1) * pow(x, 2 * n - 2) / fact(2 * n - 2);
res += term;
n++;
}
return res;
}
int main() {
double x, epsilon;
scanf("%lf%lf", &x, &epsilon);
printf("%.17f\n", MyCos(x, epsilon));
return 0;
}
```
其中,`fact(n)` 函数用于计算阶乘,`MyCos(x, epsilon)` 函数用于计算余弦函数的近似值。在 `MyCos(x, epsilon)` 函数中,使用了一个 `while` 循环来迭代计算余弦函数的近似值,直到满足绝对误差小于等于精度要求 `epsilon` 为止。
注意在输出结果时,要使用 `printf` 函数,并指定小数点后的位数为 17 位。
阅读全文