/*
利用泰勒级数sin(x)=x-x^3/3!+x^5/5!-x^7/7!+x^9/9!-...
计算sin(x)的值。要求最后一项的绝对值小于10^(-5),
并统计出此时累计了多少项?
*/
#include<stdio.h>
#include<math.h>
#define M 0.000001
void main()
{
int x,i,k,m=-1;;
double j=1, result=0;
printf("x= ");
scanf("%d",&x);
for(i=1;fabs(j)>=M;i+=2)
{
//此处必须归为1,要不然就会带着上一个阶乘的值计算
j = 1;
//控制多项式符号的
m=-m;
//这是算阶乘的
for(k=1;k<=i;k++)
{
j*= k;
}
//这是测试阶乘是否正确的
printf("j=%lf\n",j);
//这是计算单个多项式的结果的
j = m*pow(x,i)/j;
// printf("-1==%ld\t\tx^=%ld",pow(-1,i+1),pow(x,i));
//累加多个多项式
result += j;
// printf("result=%lf\n",result);
}
printf("sin(x)= %lf\n",result);
//测试结果的,调用的 sin(x)函数
printf("%lf",sin(x));
}