列主元高斯消去法(matlab)

%------------------------------------
%列主元高斯消去法
%
%Acyeah-2021/9/16-XJTU
%------------------------------------
clear;clc;
% A=[2 -3 2; -4 2 -6; 2 2 4]  %系数矩阵
% b=[5; 14; 8]                %常数项矩阵
A=[0 -3 3; -18 3 -1; 1 1 1] %系数矩阵
b=[15; -15; 6]              %常数项矩阵

B=[A,b]                     %增广矩阵
lin=0;                      %line行计数器
col=0;                      %column列计数器
j=0;                        %计数器2
[lin_max,col_max]=size(A);  %行计数最大值和列计数最大值
x=zeros(size(b));           %初始化解向量
temp=zeros(1,col_max+1);    %初始化缓存向量(列主元部分)
tempB=B;                    %增广矩阵缓存
index=0;                    %最大值所在的行数

%%消去
for lin=1:lin_max
    %列主元
    index=lin
    for j=lin:lin_max
        if abs( B(j,lin) ) > abs( B(index,lin) )
            index=j
        end
    end
    temp=B(lin,:)
    B(lin,:)=B(index,:)
    B(index,:)=temp
    %普通消去
    B(lin,:)=B(lin,:)/B(lin,lin)
    for j=(lin+1):lin_max
        B(j,:)=B(j,:)-B(j,lin)*B(lin,:)
    end
    
end
%%回代
x(lin_max)=B(lin_max,col_max+1)
for lin=(lin_max-1):-1:1
    x(lin)=B(lin,col_max+1)
    for j=(lin+1):lin_max
        x(lin)=x(lin)-B(lin,j)*x(j)
    end
end
disp('结果为')
x


版权声明:本文为weixin_42835421原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。