习题5-7 使用函数求余弦函数的近似值 (15分)
本题要求实现一个函数,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e:
cos(x)=x0/0!−x2/2!+x4/4!−x6/6!+⋯
#include <stdio.h>
#include <math.h>
double funcos( double e, double x );
int main()
{
double e, x;
scanf("%lf %lf", &e, &x);
printf("cos(%.2f) = %.6f\n", x, funcos(e, x));
return 0;
}
double jie(double a)
{
double i,sum=1.0;
for(i=1;i<=a;i++)
{
sum=sum*i;
}
return sum;
}
double funcos( double e, double x )
{
double cos=1.0;
double flag=-1;
double i=2.0;
while(i)
{
cos=cos+(pow(-1,(i/2.0))*pow(x,i))/jie(i);
i+=2.0;
printf("%lf ",cos);
if((pow(x,i)/jie(i))<e) break;
}
return cos;
}
精度较高时,不能用阶乘,答案还错了。。。。
#include <stdio.h>
#include <math.h>
double funcos( double e, double x );
int main()
{
double e, x;
scanf("%lf %lf", &e, &x);
printf("cos(%.2f) = %.6f\n", x, funcos(e, x));
return 0;
}
double funcos( double e, double x )
{
double cos=1.0,flag=-1,jie=2.0;
int i=2;
while(i)
{
cos=cos+(pow(-1,(i/2))*pow(x,i))/jie;
i+=2;
jie=jie*i*(i-1);
if((pow(x,i)/jie)<e) break;
}
return cos;
}