当前位置:   article > 正文

Matlab学习:雅克比迭代法和高斯-赛德尔迭代法_matlab雅克比迭代法程序

matlab雅克比迭代法程序

雅克比迭代法:

  1. function x = agui_jacobi(a,b,e)
  2. % 雅可比迭代法
  3. % a为系数矩阵,b为右端向量,x0为初始向量(默认为零向量)
  4. % e为精度,N为最大迭代次数,x为返回解向量
  5. n=length(b);
  6. N=100;
  7. x0=zeros(n,1);
  8. x=x0;
  9. x0=x+2*e;
  10. k=0;
  11. d=diag(diag(a));
  12. l=-tril(a,-1);
  13. u=-triu(a,1);
  14. while norm(x0-x,inf)>e&&k<N
  15. k=k+1;
  16. x0=x;
  17. x=inv(d)*(l+u)*x+inv(d)*b;
  18. end
  19. if k==N
  20. warning('已达最大迭代次数');
  21. end
  22. disp(k)

测试结果:

高斯-赛德尔迭代法:

  1. function x = agui_GS(a,b,e)
  2. %高斯-赛德尔迭代法
  3. % a为系数矩阵,b为右端向量,x0为初始向量(默认为零向量)
  4. % e为精度,N为最大迭代次数,x为返回解向量
  5. n=length(b);
  6. N=100;
  7. x0=zeros(n,1);
  8. x=x0;
  9. x0=x+2*e;
  10. k=0;
  11. a1=tril(a);
  12. a2=inv(a1);
  13. while norm(x0-x,inf)>e&&k<N
  14. k=k+1;
  15. x0=x;
  16. x=-a2*(a-a1)*x0+a2*b;
  17. % format long
  18. end
  19. if k==N
  20. warning('已达最大迭代次数');
  21. end
  22. k

测试结果:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/78128
推荐阅读
相关标签
  

闽ICP备14008679号