Упражнение 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;
}