SOR迭代matlab代码
时间: 2023-07-09 21:36:14 浏览: 33
以下是使用SOR迭代求解线性方程组的 MATLAB 代码:
```matlab
function [x, iter] = sor(A, b, omega, tol, maxiter)
% SOR迭代求解Ax=b
% 输入参数:
% A:系数矩阵
% b:右侧向量
% omega:松弛因子
% tol:收敛精度
% maxiter:最大迭代次数
% 输出参数:
% x:解向量
% iter:实际迭代次数
n = length(b);
x = zeros(n,1); % 初始化解向量
iter = 0; % 初始化迭代次数
normb = norm(b);
while iter < maxiter
xold = x;
for i = 1:n
sigma = 0;
for j = 1:n
if j ~= i
sigma = sigma + A(i,j)*x(j);
end
end
x(i) = (1-omega)*x(i) + omega*(b(i)-sigma)/A(i,i);
end
iter = iter + 1;
err = norm(x-xold)/normb;
if err < tol
break;
end
end
if iter == maxiter
fprintf('未收敛!\n');
end
end
```
其中,`A` 是系数矩阵,`b` 是右侧向量,`omega` 是松弛因子,`tol` 是收敛精度,`maxiter` 是最大迭代次数。函数的输出包括解向量 `x` 和实际迭代次数 `iter`。