当前位置:   article > 正文

数值分析7 - Jacobi迭代法、Gass-Seidel迭代法 (Matlab代码实现)_jacobi迭代法判断收敛代码

jacobi迭代法判断收敛代码

一、 Jacobi迭代法

  1. % Matlab 代码
  2. close all; clear all; clc;
  3. A = [9, -1, -1;
  4. -1, 10, -1;
  5. -1, -1, 15];%方程系数矩阵
  6. b = [7; 8; 13]; %方程右端常数项
  7. D = diag(diag(A)) %对角线
  8. L = -( tril(A) - diag(diag(A)) ); %下三角矩阵
  9. U = -( triu(A) - diag(diag(A)) ); %上三角矩阵
  10. X = [0;0;0];
  11. X_New = [0;0;0];
  12. i=0;
  13. while i<10
  14. X_New = inv(D)*(L+U)*X + inv(D)*b;
  15. X = X_New;
  16. i = i + 1;
  17. end
  18. X %输出线性方程组的解

 

二、Gass-Seidel迭代法

 

  1. % Matlab 代码
  2. close all; clear all; clc;
  3. A = [9, -1, -1;
  4. -1, 10, -1;
  5. -1, -1, 15];%方程系数矩阵
  6. b = [7; 8; 13]; %方程右端常数项
  7. D = diag(diag(A)); %对角线
  8. L = -( tril(A) - diag(diag(A)) ); %下三角矩阵
  9. U = -( triu(A) - diag(diag(A)) ); %上三角矩阵
  10. X = [0;0;0];
  11. X_New = [0;0;0];
  12. i=0;
  13. while i<10
  14. X_New = inv(D-L)*U*X + inv(D-L)*b;
  15. X = X_New;
  16. i = i + 1;
  17. end
  18. X

  1. %加入循环中值准则
  2. close all; clear all; clc;
  3. A = [9, -1, -1;
  4. -1, 10, -1;
  5. -1, -1, 15];%方程系数矩阵
  6. b = [7; 8; 13]; %方程右端常数项
  7. D = diag(diag(A)); %对角线
  8. L = -( tril(A) - diag(diag(A)) ); %下三角矩阵
  9. U = -( triu(A) - diag(diag(A)) ); %上三角矩阵
  10. B = inv(D-L)*U;
  11. f = inv(D-L)*b;
  12. X = [0;0;0];
  13. X_New = [0;0;0];
  14. C = norm(B,2) / (1 - norm(B,2));
  15. Out = 1;
  16. while Out > 0.0000001
  17. X_New = B*X + f;
  18. Out = C*norm(X_New-X,2)
  19. X = X_New;
  20. end
  21. X %输出线性方程组的解
  22. %计算B的谱半径看是否小于1收敛
  23. [V,Dig] = eig(B);
  24. max(max(abs(Dig)))

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

闽ICP备14008679号