Guass_Seidel迭代的MATLAB程序
时间: 2024-05-13 11:15:10 浏览: 125
以下是一个使用 Gauss-Seidel 迭代方法求解线性方程组的 MATLAB 程序示例:
```matlab
function [x, iter] = gauss_seidel(A,b,x0,tol,maxiter)
% Gauss-Seidel 迭代法求解线性方程组 Ax=b
% A: 系数矩阵
% b: 右侧常数向量
% x0: 初始解向量
% tol: 允许误差
% maxiter: 最大迭代次数
n = length(b); % 系数矩阵的维度
x = x0; % 初始解向量
iter = 0; % 迭代次数
while iter < maxiter
for i = 1:n
% 计算新解向量的第 i 个分量
x(i) = (b(i) - A(i,1:i-1)*x(1:i-1) - A(i,i+1:n)*x0(i+1:n)) / A(i,i);
end
% 计算误差
err = norm(x-x0)/norm(x);
if err < tol % 判断误差是否小于允许误差
break;
end
x0 = x; % 更新解向量
iter = iter + 1; % 迭代次数加 1
end
if iter == maxiter % 判断是否达到最大迭代次数
warning('已达到最大迭代次数!');
end
end
```
程序中,`A` 是系数矩阵,`b` 是右侧常数向量,`x0` 是初始解向量,`tol` 是允许误差,`maxiter` 是最大迭代次数。函数的返回值 `x` 是求得的近似解向量,`iter` 是迭代次数。程序使用了 `while` 循环进行迭代,直到误差小于允许误差或达到最大迭代次数为止。在每一次迭代中,使用 for 循环计算新解向量的每个分量,最后更新解向量并计算误差。如果达到最大迭代次数时仍未达到允许误差,则程序会发出警告。
阅读全文