用Matlab实现高斯消元法
函数实现
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