G-S迭代matlab代码
时间: 2023-10-01 08:04:53 浏览: 99
以下是一个简单的G-S迭代的Matlab代码示例:
```matlab
function [x, iter] = gauss_seidel(A, b, x0, tol, max_iter)
% G-S迭代求解线性方程 Ax = b
% A: 系数矩阵
% b: 右侧向量
% x0: 初始解向量
% tol: 容忍误差
% max_iter: 最大迭代次数
% x: 解向量
% iter: 实际迭代次数
n = length(b); % 方程组的阶数
x = x0; % 初始解向量
iter = 0; % 迭代次数
while iter < max_iter
for i = 1:n
sum = 0;
for j = 1:n
if j ~= i
sum = sum + A(i, j) * x(j);
end
end
x(i) = (b(i) - sum) / A(i, i); % 更新第i个分量
end
if norm(A * x - b) < tol % 判断是否满足容忍误差
return;
end
iter = iter + 1; % 更新迭代次数
end
```
使用方法:
假设我们要求解线性方程组 Ax = b,其中 A 和 b 已知,我们可以使用以下代码求解:
```matlab
A = [4 -1 0 0; -1 4 -1 0; 0 -1 4 -1; 0 0 -1 3];
b = [15; 10; 10; 10];
x0 = [0; 0; 0; 0];
tol = 1e-10;
max_iter = 1000;
[x, iter] = gauss_seidel(A, b, x0, tol, max_iter);
```
其中,A 和 b 是方程组的系数矩阵和右侧向量,x0 是初始解向量,tol 是容忍误差,max_iter 是最大迭代次数。函数返回值包括解向量 x 和实际迭代次数 iter。
阅读全文