gpt4 book ai didi

c++ - 用泰勒级数计算正弦值时出现的问题

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

我正在计算

sin x

使用以下代码。

#define PI 3.14
double ans;
double input1;

void toRad() {
input1 = input1 * PI / 180.0;
}

void sine(void) {
toRad();
ans = input1;
int i = 1;
for (; i < 15; i++) {
if (i % 2 == 0)
ans = ans + (ans * input1 * input1) / 2 * i * (2 * i + 1);
else
ans = ans - (ans * input1 * input1) / 2 * i * (2 * i + 1);
}
printf("%lf", ans);
}

我使用迭代运算而不是 pow 和阶乘函数来获得更精确的值和更多的迭代。

但是,出于某种原因,我得到了不同的输出,例如 -4000000E。这段代码可能有什么问题?

最佳答案

你在写逻辑时犯了一个小错误。检查你自己直到 i=4。

     if (i % 2 == 0)
ans = ans + (ans * input1 * input1) / 2 * i * (2 * i + 1);
else
ans = ans - (ans * input1 * input1) / 2 * i * (2 * i + 1);

取而代之的是,你应该创建一个阶乘函数,这样它就可以被替换为

    if (i % 2 == 0)
ans = ans + (ans * input1 * input1) / factorial(2 * i + 1);
else
ans = ans - (ans * input1 * input1) / factorial(2 * i + 1);

关于c++ - 用泰勒级数计算正弦值时出现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29637939/

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