c - e^-x 麦克劳林系列扩展

标签 c series

我正在尝试计算 e-x = 1 - x + (x2/2!) - (x3 的 MacLaurin 级数sup>/3!) +...

我的值(value)观似乎在达到一定程度后就完全偏离了。舍入有问题吗?或者我对于这样的问题使用了错误类型的变量?

int i;
double sum=0;
double x = 8.3;

for(i=0; i<26; i++)
{
    sum = sum+ (((pow(-1,i)) * (pow(x,i)))/factorial(i));
    printf("Sum = %.12f\n\n\n",sum);
}

return 0;

我不明白为什么,但直到第 12 项,这些值都是正确的,但之后,它开始完全不同。

最佳答案

大概您没有显示的 factorial 函数正在执行整数算术。 12点以后!你将会溢出 32 位整数。也切换到在 factorial 函数中使用 double

关于c - e^-x 麦克劳林系列扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28018401/

相关文章:

c++ - 二维字符数组的全局和局部声明

c - 树遍历 - Segmentation fault error

pandas 合并两个多级系列

python - 访问 Pandas 中索引对象的类别代码

python - 当指定 `return 1` 时,为什么 Python 函数返回 1.0( float )?

c - 未定义的系统调用如何返回-1?

c++ - 了解将结构转换为 void 指针

c - 如何在可能的递归过程中设置缓冲区?

matlab - 使用matlab求和系列

python - 从数据帧中提取子集