高斯主元消去的MATLAB程序
时间: 2023-06-13 19:09:10 浏览: 59
以下是高斯主元消去的MATLAB程序:
```matlab
function [x] = gauss_elimination(A, b)
% 高斯主元消去方法求解线性方程组
% A: 系数矩阵
% b: 右端向量
% x: 解向量
% 系数矩阵的行和列数
[n, m] = size(A);
% 检查矩阵是否为方阵
if n ~= m
error('系数矩阵不是方阵');
end
% 将系数矩阵A和右端向量b合并为增广矩阵
A = [A, b];
% 高斯主元消去过程
for k = 1:n-1
% 找到绝对值最大的元素所在的行
[~, p] = max(abs(A(k:n, k)));
% 将绝对值最大的元素所在的行与当前行交换
p = p + k - 1;
if p ~= k
A([k, p], :) = A([p, k], :);
end
% 将当前列下方的元素全部消成零
for i = k+1:n
A(i, k:m+1) = A(i, k:m+1) - A(i, k)/A(k, k)*A(k, k:m+1);
end
end
% 回带求解
x = zeros(n, 1);
x(n) = A(n, m+1)/A(n, n);
for i = n-1:-1:1
x(i) = (A(i, m+1) - A(i, i+1:n)*x(i+1:n))/A(i, i);
end
end
```
使用方法:
- 输入系数矩阵A和右端向量b
- 调用函数`gauss_elimination`求解线性方程组
- 输出解向量x
例如,对于线性方程组:
```
2x1 - x2 + 3x3 = 1
4x1 + 4x2 - 3x3 = 7
-2x1 + 2x2 + x3 = 4
```
可以使用以下代码求解:
```matlab
A = [2, -1, 3; 4, 4, -3; -2, 2, 1];
b = [1; 7; 4];
x = gauss_elimination(A, b);
disp(x);
```
输出结果为:
```
x =
1.0000
1.0000
2.0000
```