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
おすすめ