当前位置:   article > 正文

基于matlab的jacobi(雅可比)迭代法求解线性方程组_matlab雅可比不收敛矩阵

matlab雅可比不收敛矩阵

说明推导见此博客:https://blog.csdn.net/zengxyuyu/article/details/53054880

源码见下面:

main.m

  1. clear
  2. clc
  3. A = [8 -3 2;4 11 -1;6 3 12];
  4. b = [20;33;36];
  5. [x, n] = jacobi(A,b,[0,0,0]',1.0e-7,30)

jacobi.m 

  1. function [x,n] = jacobi(A,b,x0,eps,it_max)
  2. % 求线性方程组的Jacobi迭代法,调用格式为
  3. % [x, k] = jacobi(A,b,x0,eps,it_max)
  4. % 其中, A 为线性方程组的系数矩阵,b 为常数项,eps 为精度要求,默认为1e-6,
  5. % it_max 为最大迭代次数,默认为200
  6. % x 为线性方程组的解,k迭代次数
  7. if nargin ==3
  8. eps = 1.0e-6;
  9. M = 200;
  10. elseif nargin<3
  11. disp('输入参数数目不足3个');
  12. return
  13. elseif nargin ==5
  14. M = it_max;
  15. end
  16. D = diag(diag(A));%求A的对角矩阵
  17. L = -tril(A,-1);%求A的下三角矩阵
  18. U = -triu(A,1);%求A的上三角矩阵
  19. B = D\(L+U);
  20. f = D\b;
  21. x = B*x0+f;
  22. n = 1;%迭代次数
  23. while norm(x-x0)>=eps
  24. x0 = x;
  25. x = B*x0+f
  26. n = n+1;
  27. if(n>=M)
  28. disp('Warning:迭代次数太多,可能不收敛!')
  29. return;
  30. end
  31. end

 

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

闽ICP备14008679号