sinX的泰勒公式展开式用C语言怎么编写?非常急

2025-03-11 00:13:45
推荐回答(3个)
回答1:

泰勒展开是这个:sinx=x-x^3/3!+x^5/5!-..
下面给出算20项的程序。

#include"math.h"
#include"stdio.h"
void main()
{
double x=0,y=0,z=1,s=1,mynum=0;
int i=1 ,j=0, k=1;
scanf("x=%f",&x);

for(i=1;i<20;i++)

z=1;k=1;
for(j=1;j<=2*i-1;j++)
{
z=x*z;//算j次方
k=k*j;//算阶乘}
s=-j*pow(-1,i);//pow(a,b)是a的b次方
z=z*s/k;

mymun=mynum+z;
}
printf("sinx=x-x^3/3!+x^5/5!-..");
printf("sinx=%f",mynum);
getch();
}

楼上的算法不对,不是按泰勒展开算的。

回答2:

你这个要求最后一项的近似值的精度...
我给你的是10的-5次方的精度。
#include
#include
main()
{
int n=1,count=1;
float x;
double sum ,term;
printf("input x:");
scanf("%f",&x);
sum=x;
term=x;
do
{
term=-term*x*x/((n+1)*(n+2));
sum=sum+term;
n=n+2;
count++;
}
while (fabs(term)>=1e-5);
printf("sin(x)=%f,count=%d\n",sum,count):
}

回答3:

#include
#include
void main()
{
int i=1,b=1;
float x,a,s=0;

printf("输入x的值");
scanf("%f",&x);
a=x;

while(fabs(a/b)>=1e-6)
{
s+=(a/b);
a=-1*a*x*x;
b=b*2*i*(2*i+1);
i++;
}
printf("%f",s);

}

这个程序只有当x属于(-1.7,1.7)时才能成立,也就是位于(-PI/2,PI/2).
不知道合不合要求!