求修改!泰勒级数 报错

利用泰勒级数计算sinx的值,要求最后一项的绝对值小于十的负五次方。

img

img

#include<stdio.h>
#include<math.h>
int main()
{
    int i=1, t=1;
    float x;
    float y=pow(0.1, 5); 
    scanf("%f", &x); 
    double sum1=1, sum=0;
    while(fabs(sum1)>=y)
    {
        double a=pow(x, i);
        int b=1;
        for(int j=1;j<=i;j++)
        {
            b=b*j;    
        }
        sum1=a/b;
        if(t%2!=0)
            sum1=sum1; 
        else 
            sum1=-sum1; 
        sum+=sum1; 
        i+=2;
        t+=1;        
    }
    printf("sin%f=%.4f\n", x, sum); 
    return 0;    
}

供参考:

//用泰勒公式编写程序求sin(x)要求最后一项的绝对值小于10-5
//sin(x)=x-x^3/3!+x^5/5!-...+(-1)^(m-1)*x^(2m-1)/(2m-1)!
//sin(3.1415926) = 0.000000
//sin(1.570795)  = 1.000000
//sin(0.785398)  = 0.707107

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
double fac(int n)//求阶乘函数
{
    int i;
    double y=1;
    if(n==0||n==1){
        y=1;
    }
    else{
        for(i=1;i<=n;i++){
            y*=i;
        }
    }
    return y;
}
int main()
{
    double k,r=0,x,y;
    int n=1,i=1;
    printf("请输入x的值:");
    scanf("%lf",&x);
    do{
        y = fac(n);
        k = pow(x,n)*i/y;
        r += k;
        n += 2;
        i *= -1;
    }while(fabs(k) >= 1e-5);
    printf("sinx的值为:%lf",r);
    return 0;
}