gausselimination.m

来自「在MATLAB中实现用高斯消元法求解线性方程组!」· M 代码 · 共 24 行

M
24
字号
clear; augm=input('Please input the augmented matrix:'); % 输入增广矩阵,记为augm
[m,l]=size(augm);      % 增广矩阵的行数为m,列数为n
for i=1:m-1
    if augm(i,i)==0    % 如果第i行i列位置的元素为零,则要将此行与下面
        k=i+1;         % 的行交换,直到i行i列位置的元素不为零
        while augm(k,i)==0&k<=m
            k=k+1;
        end
        b=augm(i,:); augm(i,:)=augm(k,:); augm(k,:)=b;
    end
    for j=i+1:m         % 将augm第i行乘以非零数{-augm(j,i)/augm(i,i)}加到下面各行,使augm(i,i)
        augm(j,:)=augm(j,:)-augm(j,i)/augm(i,i).*augm(i,:);% 下方的元素全为零化为阶梯型矩阵
    end
end
augm,                   % 在Matlab的Command Window中显示出上述阶梯型矩阵
x(m)=augm(m,m+1)/augm(m,m);      % 先将最后一个未知数x(m)求出来
for i=m-1:-1:1                   % 然后由后往前将未知数逐个求出
    b=0;
    for j=m:-1:i+1
        b=b+x(j)*augm(i,j);
    end
    x(i)=(augm(i,m+1)-b)/augm(i,i);
end
x,                      % 在Matlab的Command Window中显示出解向量x       

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?