C -1.IND00傅里叶级数和的结果
我得到-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++) {
#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)