【发布时间】:2021-02-08 03:38:09
【问题描述】:
您好,我有一个assignemt,我必须创建一个函数,该函数使用泰勒级数计算给定x 值的sin 值。我写了以下代码,似乎问题出现在阶乘部分,但我不确定?
#include<math.h>
#include<stdio.h>
double x;
int n;
double fact = 3;
double sum = 0;
double factsum = 1;
int factf(double fact)
{
for (int i = 1; i < fact; i++)
{
factsum = factsum * i;
}
}
double taylor_sine(double x, int n)
{
x = (x*3.14)/180;
for (int i = 0; i < n; i++)
{
sum = sum + (pow(x, fact)/factf(fact));
fact = fact + 2;
factsum = 1;
}
sum = x - sum;
}
int main(void)
{
printf("Enter the value for x\n");
scanf("%lf", &x);
printf("Enter the number of precision\n");
scanf("%d", &n);
taylor_sine(x, n);
printf("Sum = %lf\n", sum);
}
【问题讨论】:
-
没有
void以外的函数返回任何值! -
至少为 pi 使用一个不错的值。
-
factf返回一个int(或者至少它被声明返回一个int)。它应该返回一个double。 -
好收获。函数
factf()正在维护一个全局产品,但调用者忽略了它。这是一种可怕的做法,就像为下次使用设置一个变量一样,而不是在使用前设置它。无论如何,factf()函数应该明确地以1开头,而不是依赖于在其他地方完成。 “意大利面条”代码。 -
PI Day Million Digits 很有帮助。您甚至可以收集足够的数据来支持 128 位
double计算。 Taylor Series sine/cosine 的有用示例
标签: c trigonometry taylor-series