sor.m

来自「求解线性方程组的超松弛(SOR)迭代法」· M 代码 · 共 37 行

M
37
字号
function [x, k, index]=sor(A, b, ep, w, it_max)
% 求解线性方程组的超松弛(SOR)迭代法,其中
%   A --- 方程组的系数矩阵
%   b --- 方程组的右端项
%   ep --- 精度要求,省缺为1e-5
%   w --- 超松弛因子,省缺为1
%   it_max --- 最大迭代次数,省缺为100
%   x --- 方程组的解
%   k --- 迭代次数
%   index --- index=1表示迭代收敛到指定要求;
%             index=0表示迭代失败

if nargin <5  it_max=100;  end
if nargin <4  w=1;  end
if nargin <3  ep=1e-5;  end
n=length(A); k=0; 
x=zeros(n,1); y=zeros(n,1); index=1;
while 1
    y=x;
    for i=1:n
        z=b(i);
        for j=1:n
            if j~=i
                z=z-A(i,j)*x(j);
            end
        end
        if abs(A(i,i))<1e-10 | k==it_max
            index=0; return;
        end
        z=z/A(i,i); x(i)=(1-w)*x(i)+w*z;
    end
    if norm(y-x,inf)<ep
        break;
    end
    k=k+1;
end

⌨️ 快捷键说明

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