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 + -
显示快捷键?