高斯消元解线性方程组的matlab程序
时间: 2023-11-04 12:57:15 浏览: 159
下面是一个使用Matlab实现高斯消元法求解线性方程组的程序:
```matlab
function [x] = gaussianElimination(A, b)
n = length(b);
Ab = [A, b]; % 将系数矩阵和向量b合并为增广矩阵
for i = 1:n-1
% 部分主元消去
[~, pivot] = max(abs(Ab(i:end, i))); % 找到绝对值最大的元素所在的行
pivot = pivot + i - 1; % 更新行索引
temp = Ab(i, :);
Ab(i, :) = Ab(pivot, :);
Ab(pivot, :) = temp;
% 消元
for j = i+1:n
factor = Ab(j, i) / Ab(i, i);
Ab(j, :) = Ab(j, :) - factor * Ab(i, :);
end
end
% 回代求解
x = zeros(n, 1);
x(n) = Ab(n, n+1) / Ab(n, n);
for i = n-1:-1:1
x(i) = (Ab(i, n+1) - Ab(i, i+1:n) * x(i+1:n)) / Ab(i, i);
end
end
```
使用方法:
假设我们要解以下线性方程组:
```
2x1 + 3x2 - x3 = 5
4x1 - 2x2 + 2x3 = 3
-x1 + x2 + 3x3 = 6
```
首先定义系数矩阵A和向量b:
```matlab
A = [2, 3, -1; 4, -2, 2; -1, 1, 3];
b = [5; 3; 6];
```
然后调用函数求解:
```matlab
x = gaussianElimination(A, b);
```
得到的解x为:
```
x =
1.0000
-1.0000
2.0000
```
阅读全文