c中的几何级数,错误的解决方案
geometric series in c, wrong solution
我得到了这个系列的错误解决方案:(-1/4)^(n+1)*(z-1)^n
对于|z-1|<4
,序列应该收敛到-1/3+z
对于 z=0.5
应该是解决方案 -2/7
,但是如果我尝试用 c 绘图,结果是 0...
这是我的代码:
#include <stdio.h>
#include <math.h>
int main(){
double sum=0;
int n;
for(n=0;n<=100000;n++){
sum+=pow((-1/4),(n+1)) * pow((0.5-1),n);
}
printf("sum= %f\n",sum);
}
问题就在这里:
sum+=pow((-1/4),(n+1)) * pow((0.5-1),n);
-1
是整型字面量,4
也是;因此,(-1/4)
是 -0
,而不是 -0.25
(这可能是您想要使用的)。如果你想在 C 中使用浮点文字,如 -1.0
!
-1/4
将导致 0
作为整数除法,请改用浮点数:
(float)-1/4
1/4
指的是欧几里德除法因此得到0。
使用 sum+=pow((-1.0/4.0),(n+1)) * pow((0.5-1),n);
得到好的结果 sum= -0.285714
我得到了这个系列的错误解决方案:(-1/4)^(n+1)*(z-1)^n
对于|z-1|<4
,序列应该收敛到-1/3+z
对于 z=0.5
应该是解决方案 -2/7
,但是如果我尝试用 c 绘图,结果是 0...
这是我的代码:
#include <stdio.h>
#include <math.h>
int main(){
double sum=0;
int n;
for(n=0;n<=100000;n++){
sum+=pow((-1/4),(n+1)) * pow((0.5-1),n);
}
printf("sum= %f\n",sum);
}
问题就在这里:
sum+=pow((-1/4),(n+1)) * pow((0.5-1),n);
-1
是整型字面量,4
也是;因此,(-1/4)
是 -0
,而不是 -0.25
(这可能是您想要使用的)。如果你想在 C 中使用浮点文字,如 -1.0
!
-1/4
将导致 0
作为整数除法,请改用浮点数:
(float)-1/4
1/4
指的是欧几里德除法因此得到0。
使用 sum+=pow((-1.0/4.0),(n+1)) * pow((0.5-1),n);
得到好的结果 sum= -0.285714