松弛(SOR)迭代法
松弛迭代法是在雅可比迭代法和高斯——赛德尔迭代法的基础上,以w>0为松弛因子,建立迭代格式如下:
即
我们将线性方程组AX=b的系数矩阵A分解成一个对角矩阵D、一个下三角矩阵L和一个上三角矩阵D,即A=D-L-U,则有:
当w=1时,松弛迭代法即为高斯——赛德尔迭代法;当w>1时为超松弛迭代法,当w<1时为低松弛迭代法。
SOR方法收敛的必要条件是:0<w<2。
1. 松弛(SOR)迭代法的matlab代码
function [X0,err]=sor(A,b,X0,w,max1)
%输入 -A代表线性方程组AX=b的系数矩阵
% -b代表线性方程组AX=b右侧的数值
% -X0代表线性方程组AX=b进行松弛迭代法求解的迭代初值
% -w代表松弛因子
% -max1代表迭代的次数
%输出 -X0代表通过松弛迭代法求解线性方程组AX=b的解
[N,N]=size(A);
L=-tril(A,-1);
U=-triu(A,1);
D=A+L+U;
B=inv(D-w*L)*((1-w)*D+w*U);
f=inv(D-w*L)*w*b;
for k=1:max1X0=B*X0+f;
end
err=abs(norm(A(:,:)*X0(:)-b(:),2))
在命令行窗口中输入:
>> A=[4 -1 1;4 -8 1;-2 1 5];
>> b=[7 -21 15]';
>> X0=[0 0 0]';
>> w=1.2;
>> max1=20;
>> sor(A,b,X0,w,max1)
最后得到的结果如下:
err =
2.3375e-09
ans =
2.0000
4.0000
3.0000
2. 松弛(SOR)迭代法的python代码
import numpy as npdef sor(A,b,X0,w,max1):'''A代表线性方程组AX=b的系数矩阵b代表线性方程组AX=b右边的部分X0代表高斯—赛德尔迭代的初始值w代表松弛因子max1代表迭代的次数'''n=np.shape(A)[0]L=-np.tril(A,-1)U=-np.triu(A,1)D=A+L+UB=np.dot(np.linalg.inv(D-w*L),((1-w)*D+w*U))f=np.dot(np.linalg.inv(D-w*L),w*b)for i in range(max1):X0=np.dot(B,X0)+ferr=np.linalg.norm(np.dot(A,X0)-b,ord=2)return X0,errn=3
#线性方程组AX=b右边的部分
b=np.array([[7],[-21],[15]])
#线性方程组的系数矩阵
A=np.array([[4,-1,1],[4,-8,1],[-2,1,5]])
#迭代的初值
X0=np.array([[0],[0],[0]])
#松弛因子
w=1.2
#迭代的次数
max1=20
#进行松弛迭代法求解线性方程组AX=b的解
X,err=sor(A,b,X0,w,max1)
#输出由松弛迭代法求得的线性方程组AX=b的解
print("X={}\nerr={}".format(X,err))
最后的输出结果如下:
X=[[2.]
[4.]
[3.]]
err=2.3374567113095046e-09
松弛(SOR)迭代法相关推荐
- 【数值分析】Jacobi、Seidel和Sor迭代法求解线性方程组(附matlab代码)
线性方程组迭代解法公式类似非线性方程求根的简单迭代法公式, 有Jacobi迭代法. Seidel迭代法及Sor法等. 题目1-Jacobi迭代法和Seidel迭代法 来源:<数值分析>第5 ...
- sor迭代法代码matlab,SOR迭代法求线性方程组
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 %SOR迭代法 function [y,k,err,w]=sor(eps,a,n) h=1/n; A=zeros(n-1,n-1); %定义系数矩阵A f ...
- sor迭代法matlab实例,SOR迭代法求线性方程组
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 %SOR迭代法 function [y,k,err,w]=sor(eps,a,n) h=1/n; A=zeros(n-1,n-1); %定义系数矩阵A f ...
- MATLAB 五对角矩阵 Jacobi迭代法 SOR迭代法 解方程组
% ----------------------------------------------------------------------------------------------- % ...
- 【数值计算】python实现SOR迭代法
松弛法介绍 在之前我们所介绍的Jacobi迭代法和G-S迭代法中,我们发现,其在参数选取上都是固定的,没有选择余地,因此无法对于收敛速度进行改进,由此,引出了松弛法的提出.松弛法的关键在于加上松弛 ...
- 线性方程组的SOR迭代法
写在前面 1 SOR简介 2 SOR算法推导 3 SOR算法收敛性 4 实例分析 5 代码实现 6 参考文献与链接 迭代法收敛定理 定理1(充要条件): 矩阵 M \mathbf{M} M的谱半径 ρ ...
- sor迭代法求解线性方程组(Matlab)
sor迭代法求解线性方程组(Matlab) 函数文件(sor.m) 该函数不含停止的误差判断条件 function [x,n] = sor(A,b,x,w,it_max) % 求线性方程组的sor(s ...
- 严格对角占优矩阵特征值_严格对角占优矩阵与SOR迭代法的收敛性定理.pdf
严格对角占优矩阵与SOR迭代法的收敛性定理 第34卷第1期 长春理工大学学报(自然科学版) Vol.34 No. 1 20 11年3月 Journal of Changchun University ...
- 数值分析线性方程组迭代法之SOR迭代法详解及其C语言算法实现
SOR迭代法,又名逐次超松弛迭代法,与Jacobi迭代法和Guass-Seidel迭代法相比,收敛速度更快其原理如下(想详细了解,可以点击这里数值分析(东北大学)): 1.构造迭代式时,要加上一个大于 ...
- sor迭代法matlab实例,Jacobi G-S SOR迭代法在matlab中例子.pdf
[数值分析报告] [数学基地班 赵晨晓 2011301000007] 关于Jacobi G -S SOR 方法的收敛速度比较 摘要:本论文主要通过判断比较Jacobi G -S SOR 三种 计算方法 ...
最新文章
- Docker核心技术之仓库
- 如何关闭360自定义错误页面
- stm32中如何进行printf重定向用于串口调试输出
- 【五校联考3day2】A
- android之视频直播与播放Vitamio
- Java Executors(线程池)
- Python识别验证码,基于Tesseract实现图片文字识别
- thinkphp中I方法
- android tabspec英文自动大写问题,为什么不能在drawable下访问xml文件?所有的
- 【黑金动力社区】【bf531 体验板教程】第六章 可编程标志口(八)
- 七牛播放器SDK的crash坑
- windows系统常见端口和木马默认使用端口
- matlab地震p波,如何确定地震深度?试试远震P波
- 如何搭建Hyperledger fabric网络
- 解决:word文档中插入照片有一部分不显示
- 未来人工智能发展面临的问题
- 淘晶驰串口屏入门(三)按钮、双态按钮、状态开关、图片、切图、触摸热区
- HIT-CSAPP大作业:程序人生-Hello’s P2P
- 使用JDK自带工具keytool生成ssl证书
- 网络学习day04_子网划分
热门文章
- m3u8 视频的解密,合并处理 通过java代码
- Oracle Database 12c Security - 12. Audit for Accountability
- python 三维坐标图
- python输出假分数_解析ArcGis的标注(一)——先看看分数式、假分数式标注是怎样实现的...
- 线上服务器崩溃,线下门店破万,社交新宠「剧本杀」是如何迅速爆火的?
- 三、使用Arduino控制WS2812B灯
- windows黑客编程技术之隐藏技术(进程伪装,傀儡进程,进程隐藏)
- 中国大学985/211表、九校联盟C9
- 1.5v电池是几号?
- 老年人自学计算机,老人学电脑入门教程 老人怎么学习电脑