列主元高斯消去法在matlab中的简单运用

%列主元高斯消去法 
a=[1.1,2.5,3.4,0.8;3.0,4.5,-1.2,5.4;5.2,1.4,0.92,4.8;0.5,4.6,0.23,6.7];
b=[26.88;1.05;8.1;1.81];

x=zeros(4,1);
for k=1:3
    [value,position]=max(abs(a(k:4,k)));
    if position~=1
        aposition=a(k,k:4);
        a(k,k:4)=a(position+k-1,k:4);
        a(position+k-1,k:4)=aposition;
        bposition=b(k);
        b(k)=b(position+k-1);
        b(position+k-1)=bposition;
    end
    
    for i=k+1:4
         m=a(i,k)/a(k,k);
        a(i,:)=a(i,:)-m*a(k,:);
        b(i)=b(i)-m*b(k);
    end
end

x(4)=b(4)/a(4,4);
for i=3:-1:1
    x(i)=(b(i)-a(i,[i+1:4])*x([i+1:4]))/a(i,i);
end

fprintf("系数矩阵为:\n");
disp(a);
fprintf("解为:\n");
disp(x);

输出

你可能感兴趣的:(matlab)