sor.m

来自「基于Matlab的计算方法中常用的算法程序」· M 代码 · 共 22 行

M
22
字号
function s=SOR(a,b,x0,w,eps)
  % SOR(超松弛)迭代法解线性方程组
  % a为系数矩阵,b为方程组ax=b的右端项
  % x0为初值,w为松弛因子
  if nargin==4
      eps=1.0e-6;
  elseif nargin<4
      error
      return
  end
  D=diag(diag(a)); %求对角矩阵
  L=-tril(a,-1); %求严格下三角矩阵
  U=-triu(a,1); %求严格上三角矩阵
  C=inv(D-w*L);
  B=C*[(1-w)*D+w*U];
  f=w*C*b;
  s=B*x0+f;
  while norm(s-x0)>=eps
      x0=s;
      s=B*x0+f;
  end
  return

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?