1. 首页 > 科技

正弦函数sinx的这个近似式怎么得到的? 正弦函数y sinx的性质

正弦函数sinx的这个近似式怎么得到的?正弦函数y sinx的性质

用C语言求多项式求sinx的近似值。

#include <stdio.h>

double factorial(double n)

{//求n!

double result=1;

for(int i=1;i<=n;i++)

{

result*=i;

}

return result;

}

double sinx(double x,int n)

{//求sin(x),精度为n

double result=0;

bool bAdd=true;//是加还是减

for(int i=1;i<=n;i++)

{

if(bAdd)

{

result+=((double)x*(2*i-1)/factorial(2*i-1));

}

else

{

result-=((double)x*(2*i-1)/factorial(2*i-1));

}

bAdd=!bAdd;

}

return result;

}

void main()

{

printf("%f\r\n",sinx(0.4,10));

}

C语言编程求正弦 sin(x) 的近似值

你这程序存在很多语法错误例如单精度浮点格式符是%f,不是f%,求阶乘不能用!,下面是我的程序,你可以参考一下:

#include <stdio.h>

#include <math.h>

int jiecheng(int x);//递归求阶乘

main()

{

 double x,e,s,d;

  int n;

 n=0;

 s=0;

 printf("依次输入x和误差e\n");

 scanf("%lf%lf",&x,&e);

 d=s-sin(x);

 if(d<0)d=-d;

 printf("%lf\n",d);

 while(d-e>0){

   if(n==0)s+=x;

   else{

   s+=(pow(-1,n))*x*(2*n+1)/jiecheng(2*n+1);

   d=s-sin(x);

   if(d<0)d=-d;

   }

   n++;

 }

 printf("%lg\n%lg",s,sin(x));

}

long jiecheng(int x)

{

 int y;

 if(x>1)return x*jiecheng(x-1);

 return 1;

}

我用了双精度浮点,64位,但因为过程出现很多位小数,只要你设置的误差太小,依然会出现数据溢出,你可以尝试一下无符号双精度,或者设置其他条件限制