%利用高斯列主元消去法求如下线性方程组的解
clear all;
A=[3 -2 1 -1;4 0 -1 2;0 0 2 3;0 0 0 5]; b=[8;-3;11;15];
function [X,XA] = UpGaussFun(A,b)
%利用高斯列主元消去法求如下线性方程组的解
%A为一个n阶上三角非奇异矩阵
%b为线性方程组的阐述向量
%X为线性方程组AX=b的解
%XA为消元后的系数矩阵
N=size(A);
n=N(1);
index=0;
for i=1:(n-1)
me=max(abs(A(1:n,i)));%选列主元
for k=i:n
if(abs(A(k,i))==me)
index=k;
break;
end;
end;
end;
temp=A(i,1:n);
A(i,1:n)=A(index,1:n);
A(index,1:n)=temp;
bb=b(index);
b(index)=b(i);
b(i)=bb;%交换主行
for j=(i+1):n
if(a(i,i)==0)
disp('¶Ô½ÇÔªËØÎª0£¡');
return;
end;
l=A(j,i);
m=A(i,i);
A(j,1:n)=A(j,1:n)-l*A(i,1:n)/m;
b(j)=b(j)-l*b(i)/m;
end;
X=UpTriangleFun(A,b);
XA=A;
-----------------------------------------------------------------------------------------------------------------------------
% 函数定义
function [X,XA]= UpGaussFun(A,b)
%利用高斯列主元消去法求如下线性方程组的解
%A为一个n阶上三角非奇异矩阵
%b为线性方程组的阐述向量
%X为线性方程组AX=b的解
%XA为消元后的系数矩阵
[N,M]=size(A);
%N=sizes(A);
n=N;
index=0;
for i=1:(n-1)
me=max(abs(A(1:n,i))); %选列主元
for k=i:n
if(abs(A(k,i))==me)
index=k;
break;
end;
end;
temp=A(i,1:n);
A(i,1:n)=A(index,1:n);
A(index,1:n)=temp;
bb=b(index);
b(index)=b(i);
b(i)=bb; %交换主行
for j=(i+1):n
if(A(i,i)==0)
disp('¶Ô½ÇÔªËØÎª0£¡');
return;
end;
l=A(j,i);
m=A(i,i);
A(j,1:n)=A(j,1:n)-l*A(i,1:n)/m;
b(j)=b(j)-l*b(i)/m;
end;
end;
XA=A;
%数据测试
>>clear all;
A=[3 -2 1 -1;4 0 -1 2;0 0 2 3;0 0 0 5]; b=[8;-3;11;15];
>> [X,XA]=UpGaussFun(A,b)
X =
-3.0000
10.2500
11.0000
15.0000
XA =
4.0000 0 -1.0000 2.0000
0 -2.0000 1.7500 -2.5000
0 0 2.0000 3.0000
0 0 0 5.0000。