列主元高斯消去法
1、一、题目:
2、解法:
1、程序
A=[2,1,-3,-1;3,1,0,7;-1,2,4,-2;1,0,-1,5]
b=[1;2;-1;5]
n=4 ;
A1=[A,b];
for i = 1:n-1
[XX,r] = max(abs(A1(i:n,i)));
r = r + i - 1;
if r>i
temp=A1(i,:);
A1(i,:)=A1(r,:);
A1(r,:)=temp;
end
if A1(i,i)==0 end
for p = i+1:n
A1(p,:)=A1(p,:)-A1(i,:)*A1(p,i)/A1(i,i);
end
end
A = A1(:,1:n); b = A1(:,n+1);
x(n) = b(n)/A(n,n);
for i = n-1:-1:1
x(i)=b(i);
for p=n:-1:i+1
x(i) = x(i)-A(i,p)*x(p);
end
x(i)=x(i)/A(i,i);
end
x
3、运行结果:
X=
-3.30588235294118 3.02352941176471 -1.95294117647059 1.27058823529412
4、
程序
a=input('请输入线性方程组的系数矩阵a=');
b=input('请输入b=');
[m,n]=size(a);
if m~=n
error('此矩阵非方阵,运行截止')
end
for t=1:n-1
i=t;h=a(t,t);
for s=t+1:n
if abs(h)<abs(a(s,t))
h=a(s,t);i=s;
end
end
if i~=t
for j=1:n
c=a(i,j);a(i,j)=a(t,j);a(t,j)=c;
end
c=b(i);b(i)=b(t);b(t)=c;
end
for i=t+1:n
k=a(i,t)/a(t,t);
for j=1:n
a(i,j)=a(i,j)-k*a(t,j);
end
b(i)=b(i)-k*b(t);
end
end
fprintf('经%1d次消元后的增广矩阵为\n',(n-1));
disp([a,b])
x(n)=b(n)/a(n,n);
for i=n-1:-1:1
x(i)=b(i);
for j=i+1:n
x(i)=x(i)-x(j)*a(i,j);
end
x(i)=x(i)/a(i,i);
end
fprintf('线性方程组的解向量是');
x
5、运行结果:
经3次消元后的增广矩阵为
3.0000 1.0000 0 7.0000 2.0000
0 2.3333 4.0000 0.3333 -0.3333
0 -0.0000 -3.5714 -5.7143 -0.2857
0 0.0000 0 3.4000 4.3200
线性方程组的解向量是
x =
-3.3059 3.0235 -1.9529 1.2706