cosx泰勒级数展开式用户c语言表述

img

double x;
int n;
double fun(double x,int n);
printf("("%lf,%d",&x,&n);
printf("cos(%lf)=%lf\

可以使用循环来实现,从第2项开始循环计算, 直到 第2n项结束,每次递增2,然后再循环内部,再使用分别求每一项的值,再把每一项累计到和中,计算完成再返回和即可。

参考链接:


#include <stdio.h>
#include <math.h>

double fun(double x,int n){
    
    
    int i;
    double     numerator = 1 ;// 分子 
    double denominator = 1;//分母 
    int flag=1;  //符号位 
    double single = flag*numerator/denominator;  // 第一项的值 
    double sum=0;  // 和 
    sum+=single; // 把第一项累加到和中 
//    printf("i=%d,flag=%d,分子=%lf,分母=%lf,单项=%lf,sum=%lf\n",i,flag,numerator,denominator,single,sum); 
    
    for(i=2;i<=2*n;i+=2){  // 第二项从分子从2的阶乘开始, 每次递增2,到2n结束 
        
        numerator*=x*x;// 分子每次累乘x的平方 
        denominator=1;      //每一项的分母 计算前初始化为1 
        for(int j=1;j<=i;j++){  // 计算当前项的阶乘 
            denominator*=j;
        }
        flag=-flag;  // 符号为变化 
        
        
        single = flag*numerator/denominator; // 每一项的值为 符号位乘以分子再除以分母 
        sum+=single;  // 把当前项累加的和中 
    //    printf("i=%d,flag=%d,分子=%lf,分母=%lf,单项=%lf,sum=%lf\n",i,flag,numerator,denominator,single,sum); 
    }
    
    return  sum;  // 返回和 
} 

int main(void){
    
    double x;
    int n;
//    double fun(double x, int n);

    printf("Please enter x,n:");
    scanf("%lf,%d",&x,&n);    
    // printf("i=%d,flag=%d,分子=%lf,分母=%lf,单项=%lf,sum=%lf\n",i,flag,numerator,denominator,single,sum); 
    printf("cos(%lf)=%lf\n",x,fun(x,n));
    
    return 0;
}

img