编写Matlab代码实现gauss列主元消元法解线性方程组
时间: 2024-12-28 14:41:14 浏览: 20
Gauss列主元消元法是一种用于求解线性方程组的经典算法,其基本思想是通过一系列行操作将系数矩阵转化为阶梯形矩阵,然后回代得到解。以下是使用MATLAB编写的一个简单函数,实现这一过程:
```matlab
function [x] = gauss_elimination(A, b)
% A: 系数矩阵
% b: 常数项向量
% 检查输入是否合法
[n, m] = size(A);
if n ~= length(b) || m < n
error('Input matrices must be compatible.');
end
% 初始化结果向量
x = zeros(n, 1);
% Gauss 列主元消元
for i = 1:n - 1
% 找到当前未为0的最大元素作为主元
pivot_idx = find(abs(A(i:end, i)) == max(abs(A(i:end, i))));
% 如果找不到主元,则说明线性方程组无解或无穷解
if isempty(pivot_idx)
warning('Singular matrix, no unique solution.');
break;
end
pivot_idx = pivot_idx(end); % 选择最后一个元素作为主元
temp = A(i, pivot_idx);
A(i, :) = A(i, :) / temp; % 对当前行除以主元
b(i) = b(i) / temp; % 更新对应的常数项
for j = i + 1:n
factor = A(j, i);
A(j, :) = A(j, :) - factor * A(i, :); % 行更新
b(j) = b(j) - factor * b(i); % 常数项更新
end
end
% 回代求解
for i = n:-1:1
x(i) = (b(i) - A(i, i+1:end)' * x(i+1:end)) / A(i, i);
end
% 返回解
x
阅读全文