- 221
- 0
- 约2.25千字
- 约 5页
- 2018-12-17 发布于河北
- 举报
数值分析1-列主元
作业二:分别编写用列主元消去法和全主元消去法求解线性方程组的标准程序,求下列方程的解。
0.832 0.448 0.1930.784 0.421 0.2070.784
高斯全主元消去法:
流程图
开始
开始
判断有没有解,并输出
判断有没有解,并输出
寻找绝对值最大的项并记录位置
寻找绝对值最大的项并记录位置
换主行,换主列
换主行,换主列并记录
求解,并换回交换的列位子
求解,并换回交换的列位子
结束
结束
解题思路
首先寻找绝对值最大的项并记录位置,然后换主行,换主列并记录,最后再求解,并换回之前交换的矩阵的列位。
程序
function [x,qa]=gaussq(a,b) %输出想x为解,qa为全主元变换后的a矩阵
a=[0.832 0.448 0.193;0.784 0.421 0.207;0.784 -0.421 0.293];
b=[1,0,0];
d=[a b];
RA=rank(a);RD=rank(d);L=length(b);n=size(a);pos=1:n(1);
if RA~=RD
fprintf(无解)
else
if RA~=L
fprintf(有无数多个解)
else
fprintf(有唯一解)
for q=1:n
big=max(max(abs(a(q:n,q:n))));
for r=q:n
for t=q:n
if big==abs(a(r,t))
zhuh=r;
zhul=t;
end
end
end
p=a(q,:); %换主行
a(q,:)=a(zhuh,:);
a(zhuh,:)=p;
bb=b(q);
b(q)=b(zhuh);
b(zhuh)=bb;
p=a(:,q); %换主列
a(:,q)=a(:,zhul);
a(:,zhul)=p;
p=pos(q); %记录由于换主列而造成的解的位置的变化
pos(q)=pos(zhul);
pos(zhul)=p;
end
c=[a b];
for j=1:L-1 %化为上三角阵
for i=(j+1):L
m=c(i,j)/c(j,j);
c(i,:)=c(i,:)-c(j,:)*m;
end
end
x(L,1)=c(L,L+1)/c(L,L);
for k=L-1:-1:1 %求解x
x(k,1)=(c(k,L+1)-c(k,k+1:L)*x(k+1:L))/c(k,k);
end
y=[1:n(1)]; %交换被列调换时打乱的解的位置
for w=1:n
for v=1:n
if (pos(v)==w)
y(w)=x(v);
end
end
end
x=y;
end
end
qa=a
程序结果
高斯列主元消去法:
流程图
开始
开始
判断有没有解,并输出
判断有没有解,并输出
寻找
寻找当前列中绝对值最大的项
换主行
换主行
求解
求解
结束
结束
程序
% function [x,qa]=gaussq(a,b)
a=[0.832 0.448 0.193;0.784 0.421 0.207;0.784 -0.421 0.293];
b=[1,0,0];
d=[a b];
L=length(b);n=size(a);
for q=1:n
big=max(max(abs(a(q:n,q:n))));
for r=q:n
if big==abs(a(r,q))
zhuh=r;
end
end
p=a(q,:); %换主行
a(q,:)=a(zhuh,:);
a(zhuh,:)=p;
bb=b(q);
b(q)=b(zhuh);
b(zhuh)=bb;
end
c=[a b];
for j=1:L-1 %化为上三角矩阵
for i=(j+1):L
原创力文档

文档评论(0)