gpt4 book ai didi

c - 泰勒级数求余弦的精度问题

转载 作者:行者123 更新时间:2023-11-30 14:58:29 24 4
gpt4 key购买 nike

我创建了一个函数来计算基于泰勒系列的余弦,只是在与标准库余弦比较时遇到精度问题。例如,计算 23 my cos 给出:-0.532834标准库给出:-0.532833

我一直在网上搜索,并试图自己解决,但就是不知道问题出在哪里!当treath增加到1.0e-7时,问题就解决了。但它也应该适用于 1.0e-6(因为它适用于我的 friend )

希望有任何见解,谢谢。

#define PI 3.14159265358979323846264338327950288419716

double my_cos(double rad){

int i = 0;
double numer = 1, denom = 1;
double x2, cos = 0;

rad = fmod(fabs(rad),2*PI);
x2 = pow(rad,2);

do{
cos += pow(-1,i)*(numer/denom);
i++;
numer *= x2;
denom *= (2*i)*(2*i-1);
} while (numer/denom>1.0e-6);

return cos ;
}

最佳答案

当您调用printf时会发生舍入

这个

printf("%f\n", my_cos(23));
printf("%f\n", cos(23));

将打印

-0.532834
-0.532833

这似乎“错误”。

但是如果你增加位数打印像

printf("%0.12f\n", my_cos(23));
printf("%0.12f\n", cos(23));

它将打印

-0.532833931872
-0.532833020333

这样你就有了你想要的精度。只是打印让它看起来好像有问题。

关于c - 泰勒级数求余弦的精度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43304073/

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