关于列主元高斯消去法的matlab实现

function x  = nagauss1(a,b ,flag)
%用途:列主元高斯消去法解线性方程组ax=b
% A:系数矩阵,b:右端列变量
% flag:若为0,则显示中间过程,否则不显示,默认值为0
% x:解向量
if nargin<3
    flag=0;
end
n=length(b);
a=[a,b];
for k=1:(n-1)
    %选列主元
    [~,p]=max(abs(a(k:n,k)));
    p=p+k-1;
    if p>k
        t=a(k,:);a(k,:)=a(p,:);a(p,:)=t;
    end
%消去
a((k+1):n,(k+1):(n+1))=a((k+1):n,(k+1):(n+1))-a((k+1):n,k)/a(k,k)*a(k,(k+1):(n+1));
    a((k+1):n,k)=zeros(n-k,1);
    if flag==0
        a;
    end
end
%回代
x=zeros(n,1);
x(n)=a(n,n+1)/a(n,n);
for k=(n-1):-1:1
    x(k)=(a(k,n+1)-a(k,(k+1):n)*x((k+1):n))/a(k,k);
end
end

例:解出下列方程组 

关于列主元高斯消去法的matlab实现_第1张图片

 结果显示为:

关于列主元高斯消去法的matlab实现_第2张图片

 

你可能感兴趣的:(matlab学习,matlab)