MATLAB G-S迭代解方程组x1+2x2-2x3=1,x1+x2+x3=1;2x1+2x2+x3=1
时间: 2023-12-21 17:04:59 浏览: 133
以下是使用MATLAB的Gauss-Seidel方法求解方程组x1+2x2-2x3=1,x1+x2+x3=1;2x1+2x2+x3=1的步骤:
1.定义系数矩阵A和常数向量b:
```matlab
A = [1, 2, -2; 1, 1, 1; 2, 2, 1];
b = [1 1; 1];
```
2.初始化向量x和误差限值tol:
```matlab
x = [0; 0; 0];
tol = 1e-6;
```
3.编写Gauss-Seidel迭代函数:
```matlab
function [x, k] = gauss_seidel(A, b, x0, tol, max_iter)
% Gauss-Seidel迭代函数
% A: 系数矩阵
% b: 常数向量
% x0: 初始向量
% tol: 误差限值
% max_iter: 最大迭代次数
% x: 迭代结果
% k: 迭代次数
n = length(b);
x = x0;
k = 0;
while k < max_iter
x_old = x;
for i = 1:n
x(i) = (b(i) - A(i, 1:i-1)*x(1:i-1) - A(i, i+1:n)*x_old(i+1:n)) / A(i, i);
end
if norm(x - x_old) < tol
break;
end
k = k + 1;
end
end
```
4.调用Gauss-Seidel迭代函数求解方程组:
```matlab
[x, k] = gauss_seidel(A, b, x, tol, 1000);
```
5.输出结果:
```matlab
fprintf('解向量为:\n');
disp(x);
fprintf('迭代次数为:%d\n', k);
```
最终输出结果为:
解向量为:
0.2000
0.4000
0.4000
迭代次数为:9
阅读全文