利用泰勒级数计算sinx的值,要求最后一项的绝对值小于十的负五次方。
#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;
}