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

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

cos(x)=x0/0!−x2/2!+x4/4!−x6/6!+⋯

本题:需注意x的0次方为1,0的阶乘为1

#include
#include
 
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 sum = 0;
    double a = 1.0;
    int i = 0;
    int k = 0;
    int z = 0;
    int q = 1;
    while( 1 )
    {
        if( i == 0 )
        {
            a = 1.0;
            i++;
        }
        else
        {
            a = a*k*(k-1)*1.0;  阶乘的另外形式
        }
        if( pow(x,k)/a < e )
        {
            sum = sum + (pow(x,k)/a) * q;
            break;
        }

        sum = sum + (pow(x,k)/a) * q;
        k = k + 2;
        q = q*(-1);
    }
    return sum;
}

你可能感兴趣的:(算法)