gpt4 book ai didi

c - C 中的泰勒级数

转载 作者:太空宇宙 更新时间:2023-11-04 02:16:21 25 4
gpt4 key购买 nike

到目前为止,我正在尝试编写一个程序来使用泰勒级数计算 cos(x) 函数,我得到了这个:

int factorial(int a){

if(a < 0)
return 0;
else if(a==0 || a==1)
return 1;
else
return a*(factorial(a-1));
}

double Tserie(float angle, int repetitions){
double series = 0.0;
float i;

for(i = 0.0; i < repeticiones; i++){
series += (pow(-1, i) * pow(angle, 2*i))/factorial(2*i);
printf("%f\n", (pow(-1, i) * pow(angle, 2*i))/factorial(2*i));
}
return series;

在我的示例中,我使用 angle = 90 和 repetitions = 20 来计算 cos(90),但它没有用,我只是不断获得接近无穷大的值,我们将不胜感激任何帮助。

最佳答案

一方面,角度以弧度为单位,因此对于 90 度角,您需要通过 M_PI/2

此外,对于像阶乘这样微不足道的东西,您应该避免使用递归函数,迭代编写它需要 1/4 的工作量,而且性能会好得多。您实际上什至不需要它,您可以将阶乘保存在一个临时变量中,并在每一步将它乘以 2*i*(2*i-1)。请记住,在此步骤中,您将很快遇到可表示性/精度墙。

您也不需要实际调用 pow 来获得 i 的 -1 次幂,一个简单的 i%2?1:-1 就足够了。这样它会更快,并且不会随着 i 的增加而失去精度。

哦,不要让 i float,它是一个整数,让它成为一个整数。你的精度泄漏了很多,为什么让它变得更糟..

最重要的是,您将 cos 近似为 0,但将其称为 pi/2。这样做你会得到非常高的错误。

关于c - C 中的泰勒级数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7212158/

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