C -1.IND00傅里叶级数和的结果

C -1.IND00傅里叶级数和的结果,c,C,我得到-1.IND00作为这个傅里叶级数的解 #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int n, x=50, L=100, q1=2; float pi = 3.141592; float flux1=0; double flux2=0; for(n=0;n<=50;n++) {

我得到-1.IND00作为这个傅里叶级数的解

    #include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main()
{
    int n, x=50, L=100, q1=2;
    float pi = 3.141592;
    float flux1=0;
    double flux2=0;

        for(n=0;n<=50;n++)
        {
            flux1=q1*(2/(pi*n))*(cos(n*pi)-1)*(sin((n*pi*(x+L))/(2*L)));
            flux2+=flux1;
        }
        flux2+=q1;
        printf("%f\n", flux2);

    return 0;
}
flux2的结果是-1.IND00,我不明白为什么,因为总和中的每个项,flux1,都是一个有理数,总和似乎是收敛的


你们能帮忙吗?

当n==0时,这个计算在第一次迭代时出错

这是一个被零除的错误

在随后的迭代中,计算结果良好,但第一个flux1的错误值已经损坏了sum flux2,并且永远无法恢复。

为什么要使用float mixed double?除非您想要满足一个接口,否则在现代机器上几乎没有理由使用浮点。也许可以提供一些线索。因为总和中的每一项,flux1,都是一个有理数,根本不是真的。flux1在第一次迭代中就坏了,即使在用除n以外的double替换所有int和float、将.0添加到所有文字整数、改进pi的值以及交换sinn*pi*…的序列之后也是如此。。。到sinpi*n*。。。。
2.0/(pi*n)