1.
#include <stdio.h>
#include <math.h>
/* 利用泰勒级数sin(x)=x-x^3/3!+x^5/5!-x^7/7!+x^9/9!-...
计算sin(x)的值。要求最后一项的绝对值小于10^(-5)*/
void main(){
double sum,item;
int i=0,count=0;
float x;
printf("Input x: ");
scanf("%f",&x);
sum=x;
item=x;//初始化赋值 item存放每一项的值
do{
i++;
item = -item*x*x/((2*i)*(2*i+1));//第一項为-x^3/3! item=-x*x*x/(2*3)
//第二项为x^5/5! 直接对第一項取负,-item*x*x/(4*5),后面以此类推
sum+=item;
count++;
}while(fabs(item)>=1e-5);
printf("sin(%f)=%6.6lf,count=%d\n",x,sum,count);
}
输出结果为:
总结:
观察 相邻两项的 多项式 的规律 ,相差 一个 符号,两个x相乘,除数多了两项,除数分别为前一项的两个除数各加1。
item = -item*x*x/((2*i)*(2*i+1)),除数要用一个括号括起来;
2.
#include <stdio.h>
void main()
{
double x,sum=0.0,t;
int n=0;
scanf("%lf",&x);
t=x;
while(t>=1e-6 || t<=-1e-6)
{
sum=sum+t;
n=n+1;
t=-t*x*x/(2*n)/(2*n+1);
}
printf("%lf",sum);
}