递增后的Inf值

时间:2012-01-23 17:36:13

标签: matlab increment infinity

这是我的代码:

x=0; 
for i=1:100
    x=x+sqrt(((1/((((2*i)-2)^2)*(((2*i)+2)^2)))*16)+8);
end

出于某种原因,我在这个操作后继续获得x的无穷大值(inf)???

有人可以帮忙解释原因吗?

2 个答案:

答案 0 :(得分:1)

这是因为您在i==1处除以零:看看(2*i)-2 i==1

我只能猜测你实际上是想用i作为-1的虚平方根。在这种情况下,将循环更改为:

x=0;
for k=1:100 x=x+sqrt(((1/((((2*i)-2)^2)*(((2*i)+2)^2)))*16)+8); end

那个的情况下,根本不需要循环。

答案 1 :(得分:0)

当你的第一次迭代i等于1时,SQRT的参数等于Inf(即得到1/0,但你的divide-by-zero warning可能已关闭)。