用Matlab实现高斯消元法

文章发布时间:

最后更新时间:

文章总字数:
186

预计阅读时间:
1 分钟

页面浏览: 加载中...

函数实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function x = gauss_elim(A, b)
% 获取矩阵 A 的维度
[n, ~] = size(A);

% 扩展矩阵 A 和向量 b 组成增广矩阵 [A|b]
Ab = [A b];

% 高斯消元过程
for i = 1:n
% 选取主元素(行交换)
[~, maxRow] = max(abs(Ab(i:n, i))); % 找到第 i 列的最大元素
maxRow = maxRow + i - 1; % 修正为全矩阵的行号
if i ~= maxRow
% 交换行
Ab([i, maxRow], :) = Ab([maxRow, i], :);
end

% 消元过程,消去主元下方的元素
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); % 初始化解向量
for i = n:-1:1
x(i) = (Ab(i, end) - Ab(i, 1:n) * x) / Ab(i, i);
end
end