习题5-7 使用函数求余弦函数的近似值 (15 分)
本题要求实现一个函数,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e:
cos(x)=x0/0!−x2/2!+x4/4!−x6/6!+⋯
分析:两部分,一部分是求阶乘,第二部分是累加和,注意求阶乘那块数据类型要用double,不然会报错精度不够。
代码:
double funcos( double e, double x )
{
double sum=0;
int i=0;
int flag=1;
do{
double temp=1;
for(int j=1;j<=i;j++){//阶乘
temp = temp * j;
}
sum = sum + flag * pow(x,i)/temp;
if(pow(x,i)/temp < e) break;//循环至不满足条件,跳出
else{
flag = -flag;
i = i+2;
}
}while(1);//一直循环
return sum;
}