松弛迭代法是在雅可比迭代法和高斯——赛德尔迭代法的基础上,以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)迭代法相关推荐

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

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

  2. sor迭代法代码matlab,SOR迭代法求线性方程组

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 %SOR迭代法 function [y,k,err,w]=sor(eps,a,n) h=1/n; A=zeros(n-1,n-1); %定义系数矩阵A f ...

  3. sor迭代法matlab实例,SOR迭代法求线性方程组

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 %SOR迭代法 function [y,k,err,w]=sor(eps,a,n) h=1/n; A=zeros(n-1,n-1); %定义系数矩阵A f ...

  4. MATLAB 五对角矩阵 Jacobi迭代法 SOR迭代法 解方程组

    % ----------------------------------------------------------------------------------------------- % ...

  5. 【数值计算】python实现SOR迭代法

    松弛法介绍   在之前我们所介绍的Jacobi迭代法和G-S迭代法中,我们发现,其在参数选取上都是固定的,没有选择余地,因此无法对于收敛速度进行改进,由此,引出了松弛法的提出.松弛法的关键在于加上松弛 ...

  6. 线性方程组的SOR迭代法

    写在前面 1 SOR简介 2 SOR算法推导 3 SOR算法收敛性 4 实例分析 5 代码实现 6 参考文献与链接 迭代法收敛定理 定理1(充要条件): 矩阵 M \mathbf{M} M的谱半径 ρ ...

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

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

  8. 严格对角占优矩阵特征值_严格对角占优矩阵与SOR迭代法的收敛性定理.pdf

    严格对角占优矩阵与SOR迭代法的收敛性定理 第34卷第1期 长春理工大学学报(自然科学版) Vol.34 No. 1 20 11年3月 Journal of Changchun University ...

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

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

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

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

最新文章

  1. Docker核心技术之仓库
  2. 如何关闭360自定义错误页面
  3. stm32中如何进行printf重定向用于串口调试输出
  4. 【五校联考3day2】A
  5. android之视频直播与播放Vitamio
  6. Java Executors(线程池)
  7. Python识别验证码,基于Tesseract实现图片文字识别
  8. thinkphp中I方法
  9. android tabspec英文自动大写问题,为什么不能在drawable下访问xml文件?所有的
  10. 【黑金动力社区】【bf531 体验板教程】第六章 可编程标志口(八)
  11. 七牛播放器SDK的crash坑
  12. windows系统常见端口和木马默认使用端口
  13. matlab地震p波,如何确定地震深度?试试远震P波
  14. 如何搭建Hyperledger fabric网络
  15. 解决:word文档中插入照片有一部分不显示
  16. 未来人工智能发展面临的问题
  17. 淘晶驰串口屏入门(三)按钮、双态按钮、状态开关、图片、切图、触摸热区
  18. HIT-CSAPP大作业:程序人生-Hello’s P2P
  19. 使用JDK自带工具keytool生成ssl证书
  20. 网络学习day04_子网划分

热门文章

  1. m3u8 视频的解密,合并处理 通过java代码
  2. Oracle Database 12c Security - 12. Audit for Accountability
  3. python 三维坐标图
  4. python输出假分数_解析ArcGis的标注(一)——先看看分数式、假分数式标注是怎样实现的...
  5. 线上服务器崩溃,线下门店破万,社交新宠「剧本杀」是如何迅速爆火的?
  6. 三、使用Arduino控制WS2812B灯
  7. windows黑客编程技术之隐藏技术(进程伪装,傀儡进程,进程隐藏)
  8. 中国大学985/211表、九校联盟C9
  9. 1.5v电池是几号?
  10. 老年人自学计算机,老人学电脑入门教程 老人怎么学习电脑