如何在matlab中计算jacobi迭代的运算次数

时间:2016-04-07 13:51:26

标签: matlab

我想在matlab中计算jacobi迭代的操作次数 我不知道怎么做 !!! 你能帮助我吗 ? 感谢

这是我的牛顿法代码:

b=zeros(30,1);
b(6)=2;
alpha=1;
A=zeros(30,30);
A(1,1)=-(2+alpha);
A(1,2)=1;

for ii=2:29
    A(ii,ii-1)=1
    A(ii,ii)=-(2+alpha)
    A(ii,ii+1)=1
end

A(30,29)=1;
A(30,30)=-(2+alpha);

D=diag(diag(A));
R=A-D;
x=zeros(30,1);

for ii=1:100
    xk= inv(D)*(b-R*x);
    if(norm(xk-x,1)<=10^-5) 
        break;
    end
    x=xk;
end

ii

1 个答案:

答案 0 :(得分:0)

你实际上是在计算它。

如果是代码

for ii=1:N
  %% Code
end

ii变量就像计数器一样。

逐步阅读代码:

  1. 定义匿名临时数组,例如forII,其元素为1到N,默认步长为1.
  2. 对于每次迭代,原始forII的相应元素将分配给ii
  3. 执行
  4. %% Code
  5. 分配了ii标量的新值。
  6. 此行为允许:

    1. 使用counter=1:N作为真实的计数器。
    2. 轻松遍历任何数组的元素,例如for foo='Hello World!'
    3. 使用预定义索引,数组元素等for ii=A
    4. for循环被breakreturn提示终止时, queue 中的元素未分配,ii保留最后指定的值。
    5. 你可以尝试

      kk=0;
      for ii=1:N
        kk=kk+1;
        if ii==5
          break
        end
      end
      disp(['kk = ' num2str(kk) '; ii = ' num2str(ii)]);
      
      kk=0;
      for ii='Hello World!'
        kk=kk+1;
        if ii=='r'
          break
        end
      end
      disp(['kk = ' num2str(kk) '; ii = ' num2str(ii)]);