【问题标题】:Inf value after incrementation递增后的 Inf 值
【发布时间】:2012-01-23 17:36:12
【问题描述】:

这是我的代码:

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

由于某种原因,在此操作之后我不断得到 x 的无穷大值(inf)???

谁能帮忙解释一下原因?

【问题讨论】:

  • 这里不要使用i作为循环变量,因为不清楚你是指变量i还是复数sqrt(-1)。如果你指的是复数,那么你应该改用1i

标签: matlab increment infinity


【解决方案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

那种的情况下,循环是完全没有必要的。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-02
      • 1970-01-01
      • 2019-04-28
      相关资源
      最近更新 更多