这是我的代码:
x=0;
for i=1:100
x=x+sqrt(((1/((((2*i)-2)^2)*(((2*i)+2)^2)))*16)+8);
end
出于某种原因,我在这个操作后继续获得x的无穷大值(inf)???
有人可以帮忙解释原因吗?
答案 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可能已关闭)。