存储嵌套循环在数组中的迭代次数

时间:2014-10-09 18:03:41

标签: matlab loops for-loop while-loop nested

我对MATLAB比较陌生,而且我遇到了一个特定的问题。

我有一个方程式,我试图用while循环解决。它通过猜测某个参数e_0并将其填充到等式中来工作,直到它收敛为止。下面是一个例子,其中初始猜测值等于100:

clear all
i=1;
e_0=100
e_1= e_0 + log(0.6) - log(exp(e_0)/(exp(e_0)+1))

    while( i < 1e10 & abs((e_1 - e_0)) > 1e-12),
         i = i + 1;
         e_0=e_1;
         e_1= e_0+log(0.6)-log(exp(e_0)/(exp(e_0)+1))
    end 
i

现在我想要完全相同的程序,但是同时对于e_0的多个值,例如101,102,103等等,并计算将需要多少次迭代。我估计因此我需要为它设置一个for循环。我想到这样的事情:

clear all
i=1;

for e_0 = 100:105
e_1= e_0+log(0.6)-log(exp(e_0)/(exp(e_0)+1))
    while( i < 1e10 & abs((e_1 - e_0)) > 1e-12),
         i = i + 1;
         e_0=e_1;
         e_1= e_0+log(0.6)-log(exp(e_0)/(exp(e_0)+1))
    end 
end
  i

然而,现在来自不同猜测值的所有迭代都显示在彼此之下,并且我总共获得了1519次迭代。我怎样才能将每个初始猜测值所需的迭代次数存储到一个变量中?

我希望它足够清楚......谢谢!

1 个答案:

答案 0 :(得分:0)

这个怎么样:

i = 0;
offset = 99;
for n = 1:6
e_0 = n + offset;
e_1 = e_0+log(0.6)-log(exp(e_0)/(exp(e_0)+1))
    while( i < 1e10 & abs((e_1 - e_0)) > 1e-12),
        i = i + 1;

此部分需要更改以防止在循环内重新定义e_0

        e_1= e_1+log(0.6)-log(exp(e_1)/(exp(e_1)+1)) 
    end 
    iterations(n)=i;
end

注意:建议不要将i用作循环增量,因为它会重新定义复数中使用的i