PTA 使用函数求余弦函数的近似值

习题5-7 使用函数求余弦函数的近似值 (15分)
本题要求实现一个函数,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e:

cos(x)=x​0​​/0!−x​2​​/2!+x​4​​/4!−x​6​​/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;
}

猜你喜欢

转载自blog.csdn.net/weixin_50925658/article/details/112296092
今日推荐