全主元消去法matlab
时间: 2023-11-02 11:01:36 浏览: 186
全主元高斯消去法是一种用于解线性方程组的方法。在matlab中,可以使用以下代码实现全主元高斯消去法:
```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);
xorder=[1,2,3,4];
% 构造增广矩阵
ZG=[a b];
% 消元过程
for k=1:3
% 找到主元
max1=max(max(ZG(k:4,k:4)));
[r,c]=find(ZG(:,1:4)==max1);
% 交换行
middle=ZG(r,:);
ZG(r,:)=ZG(k,:);
ZG(k,:)=middle;
% 交换列
middle1=ZG(:,);
ZG(:,c)=ZG(:,k);
ZG(:,k)=middle1;
% 交换解顺序矩阵的顺序
middle_o=xorder(c);
xorder(c)=xorder(k);
xorder(k)=middle_o;
% 消元
for i=k+1:4
m=ZG(i,k)/ZG(k,);
ZG(i,k:5)=ZG(i,k:5)-m*ZG(k,k:5);
end
end
% 回代求解
b=ZG(1:4,5);
a=ZG(1:4,1:4);
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");
for i=1:4
[~,C]=find(xorder==i);
value=x(C);
fprintf("\n x%d=%.4f\n",i,value);
end
```
阅读全文