% -----------------------------------------------------------------------------------------------
% Written by 顿鹏翔, 2018-11-05
% -----------------------------------------------------------------------------------------------
% 习题3 A是一个五对角矩阵,R nxn,n=10,20,40时,使用J迭代法和SOR
% 迭代法(w=1,1.2,1.4,1.6,1.8)解方程组Ax=0,分析收敛速度。
% ------------------------------------------------------------------------------------------------
clearfor mat_n=[10,20,40]                                           %循环3次,n=10,20,40% --------------------------------------------------------------------------------------------% 打印当前矩阵大小% --------------------------------------------------------------------------------------------disp("---------------------------------------------------------");fprintf(" 当前矩阵大小为 %d*%d\r\n",mat_n,mat_n);% --------------------------------------------------------------------------------------------% 构建矩阵A% --------------------------------------------------------------------------------------------a1(1,1:mat_n)=20;A1=diag(a1,0);a2(1,1:mat_n-1)=-8;A2_1=diag(a2,1);A2_2=diag(a2,-1);a3(1,1:mat_n-2)=1;A3_1=diag(a3,2);A3_2=diag(a3,-2);A=A1+A2_1+A2_2+A3_1+A3_2;% --------------------------------------------------------------------------------------------% 构建初始迭代值% --------------------------------------------------------------------------------------------x0(1:mat_n,1)=1;% --------------------------------------------------------------------------------------------% jacobi迭代法       %Ax=0精确解是x=0% --------------------------------------------------------------------------------------------D = diag(diag(A));                                            %求A的对角矩阵L = -tril(A,-1);                                                   %求A的下三角矩阵U = -triu(A,1);                                                  %求A的上三角矩阵B = D\(L+U);                                                    %由jacobi迭代法公式得来RB1=-log(vrho(B));                                          %计算渐近收敛速度fprintf(" jacobi 渐近收敛速度是 %.4f\r\n",RB1);x = B*x0;                                                         %迭代计算n = 1;                                                              %迭代次数赋值while norm(x,inf)>10^(-6)x0=x;                                                           %迭代赋值x = B*x0;                                                     %迭代计算n = n+1;                                                      %累加次数if n>1000                                                     %迭代次数大于1000跳出break;endendfprintf(" jacobi迭代完毕 满足要求所需最少迭代次数为 n=%d\r\n",n);% --------------------------------------------------------------------------------------------% SOR迭代 w是omega       %Ax=0精确解是x=0% --------------------------------------------------------------------------------------------for w=[1,1.2,1.4,1.6,1.8]x0(1:mat_n,1)=1;                                         %构建初始迭代值B_sor=(D-L*w)\((1-w)*D+w*U);                     %与jacobi一样的DLU矩阵x_sor = B_sor*x0;                                        %迭代计算RB1=-log(vrho(B_sor));                                %计算渐近收敛速度fprintf("SOR渐近收敛速度是 %.4f\r\n",RB1);n_sor = 1;                                                    %迭代次数while norm(x_sor,inf)>10^(-6)x0=x_sor;                                                 %迭代赋值x_sor = B_sor*x0;                                     %迭代计算n_sor = n_sor+1;                                      %累加次数if n_sor>1000                                           %迭代次数大于1000跳出break;endendfprintf("SOR迭代 w=%.2f",w);fprintf(" 满足要求所需最少迭代次数为 n_sor=%d\r\n",n_sor);endclear
end

结果

>> Untitled
---------------------------------------------------------当前矩阵大小为 10*10jacobi 渐近收敛速度是 0.1587jacobi迭代完毕 满足要求所需最少迭代次数为 n=38SOR渐近收敛速度是 0.8050SOR迭代 w=1.00 满足要求所需最少迭代次数为 n_sor=21SOR渐近收敛速度是 1.3127SOR迭代 w=1.20 满足要求所需最少迭代次数为 n_sor=15SOR渐近收敛速度是 0.8036SOR迭代 w=1.40 满足要求所需最少迭代次数为 n_sor=20SOR渐近收敛速度是 0.4555SOR迭代 w=1.60 满足要求所需最少迭代次数为 n_sor=30SOR渐近收敛速度是 0.2001SOR迭代 w=1.80 满足要求所需最少迭代次数为 n_sor=61---------------------------------------------------------当前矩阵大小为 20*20jacobi 渐近收敛速度是 0.1201jacobi迭代完毕 满足要求所需最少迭代次数为 n=60SOR渐近收敛速度是 0.7713SOR迭代 w=1.00 满足要求所需最少迭代次数为 n_sor=23SOR渐近收敛速度是 1.2660SOR迭代 w=1.20 满足要求所需最少迭代次数为 n_sor=18SOR渐近收敛速度是 0.7874SOR迭代 w=1.40 满足要求所需最少迭代次数为 n_sor=24SOR渐近收敛速度是 0.4478SOR迭代 w=1.60 满足要求所需最少迭代次数为 n_sor=35SOR渐近收敛速度是 0.1969SOR迭代 w=1.80 满足要求所需最少迭代次数为 n_sor=67---------------------------------------------------------当前矩阵大小为 40*40jacobi 渐近收敛速度是 0.1092jacobi迭代完毕 满足要求所需最少迭代次数为 n=70SOR渐近收敛速度是 0.7629SOR迭代 w=1.00 满足要求所需最少迭代次数为 n_sor=23SOR渐近收敛速度是 1.2517SOR迭代 w=1.20 满足要求所需最少迭代次数为 n_sor=18SOR渐近收敛速度是 0.7825SOR迭代 w=1.40 满足要求所需最少迭代次数为 n_sor=27SOR渐近收敛速度是 0.4454SOR迭代 w=1.60 满足要求所需最少迭代次数为 n_sor=45SOR渐近收敛速度是 0.1959SOR迭代 w=1.80 满足要求所需最少迭代次数为 n_sor=76

MATLAB 五对角矩阵 Jacobi迭代法 SOR迭代法 解方程组相关推荐

  1. sor迭代法matlab实例,Jacobi G-S SOR迭代法在matlab中例子.pdf

    [数值分析报告] [数学基地班 赵晨晓 2011301000007] 关于Jacobi G -S SOR 方法的收敛速度比较 摘要:本论文主要通过判断比较Jacobi G -S SOR 三种 计算方法 ...

  2. MATLAB用SOR方法解方程组,SOR迭代法 求MATLAB程序

    满意答案 vwbog 2014.11.02 采纳率:41%    等级:6 已帮助:1507人 function [n,x]=sor22(A,b,X,nm,w,ww) %用超松弛迭代法求解方程组Ax= ...

  3. 三种迭代法解方程组(雅可比Jacobi、高斯-赛德尔Gaisi_saideer、逐次超松弛SOR)

    分析用下列迭代法解线性方程组 4 -1 0 -1 0 0       0 -1 4 -1 0 -1 0        5 0 -1 4 -1 0 -1        -2 -1 0 -1 4 -1 0 ...

  4. 【数值分析】Jacobi、Seidel和Sor迭代法求解线性方程组(附matlab代码)

    线性方程组迭代解法公式类似非线性方程求根的简单迭代法公式, 有Jacobi迭代法. Seidel迭代法及Sor法等. 题目1-Jacobi迭代法和Seidel迭代法 来源:<数值分析>第5 ...

  5. Jacobi迭代法分量形式matlab,mtalab中jacobi迭代法

    一.实验目的及题目 1.1 实验目的: (1)学会用高斯列主元消去法,LU 分解法,Jacobi 迭代法和 Gauss-Seidel 迭代法解线性 方程组. (2)学会用 Matlab 编写..... ...

  6. MATLAB数学实验——Jacobi迭代法Gauss-Seidel迭代法

    MATLAB数学实验--Jacobi迭代法&Gauss-Seidel迭代法 一.迭代算法的数学知识 线性方程组的数值求解方法,有经典的Jacobi和Gauss-Seidel迭代方法. 二者通过 ...

  7. sor迭代法求解线性方程组(Matlab)

    sor迭代法求解线性方程组(Matlab) 函数文件(sor.m) 该函数不含停止的误差判断条件 function [x,n] = sor(A,b,x,w,it_max) % 求线性方程组的sor(s ...

  8. 数值分析线性方程组迭代法之SOR迭代法详解及其C语言算法实现

    SOR迭代法,又名逐次超松弛迭代法,与Jacobi迭代法和Guass-Seidel迭代法相比,收敛速度更快其原理如下(想详细了解,可以点击这里数值分析(东北大学)): 1.构造迭代式时,要加上一个大于 ...

  9. C#--解方程组之Jacobi迭代法

    解方程组之Jacobi法 迭代过程 首先将 方程组中的 系数矩阵 A分解成三部分,即: A = L+D+U,如图1所示,其中 D为对角阵, L为下 三角矩阵, U为上三角矩阵. 之后确定迭代格式,X^ ...

最新文章

  1. matlab分类器函数
  2. 【网址收藏】Fedora 34安装Wine、微信
  3. VTK:绕线旋转用法实战
  4. Javascript基础之-强制类型转换(一)
  5. leetcode 278. 第一个错误的版本(Java版)
  6. MySQL存储过程权限检查主要点
  7. 八种状态增加测试用例状态的精确度
  8. Almost Union-Find UVA - 11987(并查集的删除操作)
  9. 【转】Java抽象类与接口的区别
  10. 文化的作用与本质是什么
  11. 详解如何实现斗鱼、B站等全局悬浮窗直播小窗口
  12. Oracle索引详解
  13. 计算机操作系统(第四版)学习笔记
  14. P1359 租用游艇(dijkstra不优化)
  15. [转]微信小程序之购物车 —— 微信小程序实战商城系列(5)
  16. Linux多网卡多路由设置
  17. 如何在 Unity 中制作一个道具系统
  18. HDU 5594(ZYB's Prime-网络流)
  19. linux怎么查看当前系统版本号,如何查看当前系统版本的版本号
  20. 哪位神犇可以帮忙啊。

热门文章

  1. win7如何使程序开机自启(开机自动启动应用程序)
  2. win7下开机启动自动运行程序,脚本
  3. 国产汽车半导体极限突围
  4. SQLSERVER游标及循环语句
  5. 概率论自学day4-布尔不等式和Bonferroni不等式
  6. python制作冰花_自制冰花小学作文
  7. 2022年末2计算机保研经验贴(中山,川大,湖大,南航,南京理工...)
  8. long long int 和 int
  9. leetcode5505
  10. Using the five elements of fashion colors to create the best feng shui in auspicious Home