该函数实现了高斯消元法解线性方程组。输入参数为系数矩阵A和常数矩阵b,输出参数为解向量x。

第1行:定义函数名为'Gauss',参数为A和b。

第2行:获取矩阵A的行列数,并将其赋值给变量n。

第3行:初始化解向量x为n行1列的零向量。

第4行:将系数矩阵A和常数矩阵b合并成增广矩阵'Aug'。

第6行:进行n-1次消元,每次循环将矩阵'Aug'的第k列作为主元,将该列以下的元素全部消为0。

第7行:在第k列及以下的子矩阵中找到绝对值最大的元素,并记录其所在的行r。

第8行:将列主元所在行r与第k行交换。

第10-13行:对矩阵'Aug'进行消元,使得第k列以下的元素都变为0。

第16行:解上三角方程组。将增广矩阵'Aug'中的系数矩阵A和常数矩阵b分离出来。

第17行:先求解最后一个未知数x(n)。

第18-21行:从倒数第二个未知数开始,依次求解每个未知数x(k)。

最后输出解向量x。

function x=Gauss(A,b)
[n,n] = size(A); 
x = zeros(n,1); 
Aug = [A,b]; %增广矩阵

for k = 1:n-1 
    [piv,r] = max(abs(Aug(k:n,k))); %找列主元所在子矩阵的行r
    r = r + k - 1; % 列主元所在大矩阵的行
    if r>k 
        Aug([k,r],:)=Aug([r,k],:);
    end
    if Aug(k,k)==0 
        error('对角元出现0');
    end
    % 把增广矩阵消元成为上三角
    for p = k+1:n 
        Aug(p,:)=Aug(p,:)-Aug(k,:)*Aug(p,k)/Aug(k,k); 
    end
end

% 解上三角方程组
A = Aug(:,1:n); 
b = Aug(:,n+1); 
x(n) = b(n)/A(n,n); 
for k = n-1:-1:1 
    x(k) = (b(k)-A(k,n:-1:k+1)*x(n:-1:k+1))/A(k,k);
end
高斯消元法解线性方程组 - 逐行代码解析

原文地址: https://www.cveoy.top/t/topic/n5Pp 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录