使用泰勒展开的正弦函数C 编程

问题描述

请帮助修复程序。老师要求去掉main函数中的pi减法循环。我不知道如何编写程序,以便对任何值都能得出正确的结果。

#include <stdio.h>

#include <math.h>

double sinus(double x);
int main(void) {
  double a,x;
  scanf("%le",& x);
  a = x;
  while (fabs(x) > 2 * (M_PI)) {
    x = fabs(x) - 2 * (M_PI);
  }
  if (a > 0)
    a = sinus(x);
  else a = (-1) * sinus(x);
  printf("%le",(double) a);
  return 0;
}

double sinus(double x) {
  double sum = 0,h,eps = 1.e-16;
  int i = 2;

  h = x;
  do {
    sum += h;
    h *= -((x * x) / (i * (i + 1)));
    i += 2;
  }
  while (fabs(h) > eps);
  return sum;
  return 0;
}

解决方法

#include <stdio.h>
#include <math.h>
double sinus(double x);
int main(void)
{
    double a,x;
    scanf("%le",&x);
    a=x;
    x=fmod(fabs(x),2*(M_PI));
     if(a>0)
     a=sinus(x);
     else a=(-1)*sinus(x);
    printf("%le",(double)a);
    return 0;}
    
double sinus(double x)
{
  double sum=0,h,eps=1.e-16; int i=2;
 
h=x;
do{
    sum+=h;
    h*=-((x*x)/(i*(i+1)));
    i+=2;}
while( fabs(h)>eps );
return sum;
return 0;
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...