gpt4 book ai didi

c - C sine(x) 近似误差

转载 作者:行者123 更新时间:2023-11-30 14:54:35 28 4
gpt4 key购买 nike

我正在尝试使用泰勒级数计算 Sin(x) 的值,即:x-x^3/3!+x^5/5!我尝试的是这段代码,但它给了我错误!

int n;
int factorial;
float sum=0;
float angle;
int sign=1;
int i,j;

printf("Please Enter angle in degrees:\n");
scanf("%f",&angle);
angle=angle*3.14/180;

printf("Please Enter Number of terms:\n");
scanf("%d",&n);
for (i=1;i<=n;i++){
factorial=1;
for (j=1;j<=(2*i-1);j++)
factorial=factorial*j;
sum=sum+sign*(pow(angle,j)/factorial);
sign*=-1;
}
printf("Sum up to %d terms is %f",n,sum);

最佳答案

减少 1

j 1 太大了

// sum=sum+sign*(pow(angle,j)/factorial);
sum=sum+sign*(pow(angle,j-1)/factorial);
<小时/>

建议一个更好的 pi 近似值

#define MY_PI 3.1415926535897932384626433832795
// angle=angle*3.14/180;
angle *= MY_PI/180;

这里使用float没有真正的值(value),请考虑double。如果代码想要保留 float,则使用 float 函数,例如 powf(angle,j) - 请注意 f >.

<小时/>

提示:不要每次都从 1 开始重新计算项的阶乘,而是从上一项继续计算。

//psuedo code
term = -x*x/(2i)/(2i+1)*previous_term
<小时/>
  double sum = 0.0;
double x2 = x_radians * x_radians;
double term = x_radians;
for (unsigned i = 1; i <= terms; i++) {
sum += term;
term *= -x2 / ((2 * i) * (2 * i + 1));
}

关于c - C sine(x) 近似误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46615561/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com