MATLAB 五对角矩阵 Jacobi迭代法 SOR迭代法 解方程组
% -----------------------------------------------------------------------------------------------
% 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迭代法 解方程组相关推荐
- sor迭代法matlab实例,Jacobi G-S SOR迭代法在matlab中例子.pdf
[数值分析报告] [数学基地班 赵晨晓 2011301000007] 关于Jacobi G -S SOR 方法的收敛速度比较 摘要:本论文主要通过判断比较Jacobi G -S SOR 三种 计算方法 ...
- MATLAB用SOR方法解方程组,SOR迭代法 求MATLAB程序
满意答案 vwbog 2014.11.02 采纳率:41% 等级:6 已帮助:1507人 function [n,x]=sor22(A,b,X,nm,w,ww) %用超松弛迭代法求解方程组Ax= ...
- 三种迭代法解方程组(雅可比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 ...
- 【数值分析】Jacobi、Seidel和Sor迭代法求解线性方程组(附matlab代码)
线性方程组迭代解法公式类似非线性方程求根的简单迭代法公式, 有Jacobi迭代法. Seidel迭代法及Sor法等. 题目1-Jacobi迭代法和Seidel迭代法 来源:<数值分析>第5 ...
- Jacobi迭代法分量形式matlab,mtalab中jacobi迭代法
一.实验目的及题目 1.1 实验目的: (1)学会用高斯列主元消去法,LU 分解法,Jacobi 迭代法和 Gauss-Seidel 迭代法解线性 方程组. (2)学会用 Matlab 编写..... ...
- MATLAB数学实验——Jacobi迭代法Gauss-Seidel迭代法
MATLAB数学实验--Jacobi迭代法&Gauss-Seidel迭代法 一.迭代算法的数学知识 线性方程组的数值求解方法,有经典的Jacobi和Gauss-Seidel迭代方法. 二者通过 ...
- sor迭代法求解线性方程组(Matlab)
sor迭代法求解线性方程组(Matlab) 函数文件(sor.m) 该函数不含停止的误差判断条件 function [x,n] = sor(A,b,x,w,it_max) % 求线性方程组的sor(s ...
- 数值分析线性方程组迭代法之SOR迭代法详解及其C语言算法实现
SOR迭代法,又名逐次超松弛迭代法,与Jacobi迭代法和Guass-Seidel迭代法相比,收敛速度更快其原理如下(想详细了解,可以点击这里数值分析(东北大学)): 1.构造迭代式时,要加上一个大于 ...
- C#--解方程组之Jacobi迭代法
解方程组之Jacobi法 迭代过程 首先将 方程组中的 系数矩阵 A分解成三部分,即: A = L+D+U,如图1所示,其中 D为对角阵, L为下 三角矩阵, U为上三角矩阵. 之后确定迭代格式,X^ ...
最新文章
- matlab分类器函数
- 【网址收藏】Fedora 34安装Wine、微信
- VTK:绕线旋转用法实战
- Javascript基础之-强制类型转换(一)
- leetcode 278. 第一个错误的版本(Java版)
- MySQL存储过程权限检查主要点
- 八种状态增加测试用例状态的精确度
- Almost Union-Find UVA - 11987(并查集的删除操作)
- 【转】Java抽象类与接口的区别
- 文化的作用与本质是什么
- 详解如何实现斗鱼、B站等全局悬浮窗直播小窗口
- Oracle索引详解
- 计算机操作系统(第四版)学习笔记
- P1359 租用游艇(dijkstra不优化)
- [转]微信小程序之购物车 —— 微信小程序实战商城系列(5)
- Linux多网卡多路由设置
- 如何在 Unity 中制作一个道具系统
- HDU 5594(ZYB's Prime-网络流)
- linux怎么查看当前系统版本号,如何查看当前系统版本的版本号
- 哪位神犇可以帮忙啊。
热门文章
- win7如何使程序开机自启(开机自动启动应用程序)
- win7下开机启动自动运行程序,脚本
- 国产汽车半导体极限突围
- SQLSERVER游标及循环语句
- 概率论自学day4-布尔不等式和Bonferroni不等式
- python制作冰花_自制冰花小学作文
- 2022年末2计算机保研经验贴(中山,川大,湖大,南航,南京理工...)
- long long int 和 int
- leetcode5505
- Using the five elements of fashion colors to create the best feng shui in auspicious Home