题目要求
本题要求实现一个函数,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e:
cos(x)=x0 /0!−x2 /2!+x4 /4!−x6 /6!+⋯
函数接口定义:
double funcos( double e, double x );
其中用户传入的参数为误差上限e和自变量x;
函数funcos应返回用给定公式计算出来、并且满足误差要求的cos(x)的近似值。
输入输出均在双精度范围内。
实现代码
#include <stdio.h>
#include <math.h>double funcos( double e, double x );
double funcos( double e, double x ){double m=0,n,k=1;//k是每一项的绝对值,m是所有项的和,n是某一项的阶乘 int l=1;//l是判断正负号的 m+=k;if(m<e) return m;//第一项绝对值就小于e for(int i=2;;i=i+2){n=1;//求阶乘 for(int j=i;j>=1;--j){n=n*j;}k=pow(x,i)/n;if(l%2==1) m-=k;//判断每一项的符号加到总项里 else m+=k;if(k<e) return m;//如果这一项的绝对值<e,那么返回m l++; }
}
int main()
{ double e, x;scanf("%lf %lf", &e, &x);printf("cos(%.2f) = %.6f\n", x, funcos(e, x));return 0;
}/* 你的代码将被嵌在这里 */