在数学上对一些复杂的函数,常用多项式来近似表示函数。例如正弦函数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 22:50:08 浏览: 279
泰勒和麦克劳林级数和多项式:通过泰勒和/或麦克劳林展开式计算函数的近似值,并获得多项式和图形。-matlab开发
以下是求解余弦值的代码实现:
```c
#include <stdio.h>
#include <math.h>
double fact(int n) {
double res = 1;
for (int i = 2; i <= n; i++) {
res *= i;
}
return res;
}
double MyCos(double x, double epsilon) {
double res = 1.0;
double item = 1.0;
int n = 1;
while (fabs(item) >= epsilon) {
item *= (-1) * x * x / ((2 * n - 1) * (2 * n));
res += item;
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。
阅读全文