计算机网络作业3
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
题目:用下列方法解线性方程组
0147.06721.109998.42371.13142.17643.89317.44129
.35435.15330.27875.15301
.04017.31651.18326.31348
.1 4321x x x x = 9237
.164231.183941.65342.9 并比较计算结果精度(方程组准确解为x1=x2=x3=x4=1)
(1) 顺序消元法;
(2) 列主元消元法;
实验报告
1、程序设计:
我们的实验目的是分别通过高斯消元法和列主元消元法两种方法求同一线性方程组的解,并比较它们的结果的精度 ,故在此以题目中线性方程组的系数增广矩阵为参数,分别编写两段程序使之实现:
mygauss.m: function C = mygauss(A,n) %高斯消元法求解线性方程组
lzy.m: function C = lzy(A,n) %列主元消元法求解线性方程组 %%A(系数增广矩阵),n(系数矩阵的秩)
2、源程序:
%%高斯消元法 sxxyf.m:
function x=mygauss(A,n)
for k=1:n-1
for i=k+1:n
A(i,k)=str2num(sprintf('%.4f',A(i,k)/A(k,k)));
for j=k+1:n
A(i,j)=str2num(sprintf('%.4f',A(i,j)-A(i,k)*A(k,j)));
end
A(i,n+1)=str2num(sprintf('%.4f',A(i,n+1)-A(i,k)*A(k,n+1))); end
end %得到上三角系数矩阵
x=zeros(n,1); %回带求解过程
x(n)=str2num(sprintf('%.4f',A(n,n+1)/A(n,n)));
for k=n-1:-1:1
s=A(k,n+1);
for j=k+1:n
s=s-A(k,j)*x(j);
end
x(k)=str2num(sprintf('%.4f',s/A(k,k)));
end
%%列主元消元法: lzy.m
function x=lzy(A,n)
for k=1:n-1 %调整行过程
for b=n-1:-1:1
for a=k:b
if abs(A(a+1,k)) > abs(A(a,k))
C=A(a+1,:);A(a+1,:)=A(a,:);A(a,:)=C;
end;
end;
end;
for i=k+1:n
A(i,k)=str2num(sprintf('%.4f',A(i,k)/A(k,k)));
for j=k+1:n
A(i,j)=str2num(sprintf('%.4f',A(i,j)-A(i,k)*A(k,j)));
end
A(i,n+1)=str2num(sprintf('%.4f',A(i,n+1)-A(i,k)*A(k,n+1))); end
end %得到上三角系数矩阵
x=zeros(n,1); %回带求解
x(n)=str2num(sprintf('%.4f',A(n,n+1)/A(n,n)));
for k=n-1:-1:1
s=A(k,n+1);
for j=k+1:n
s=s-A(k,j)*x(j);
end
x(k)=str2num(sprintf('%.4f',s/A(k,k)));
end
3、实验结果:
%%command window :
>>A=[1.1348,3.8326,1.1651,3.4017,9.5342;0.5301,1.7875,2.5330,1.5435,6.3941;
3.4129,
4.9317,8.7643,1.3142,18.4231;1.2371,4.9998,10.6721,0.0147,16.9237]; >>myguass(A,4)
高斯消元法
ans =
0.930000000000000
1.022000000000000
1.000000000000000
0.998700000000000
列主元消去法
>>lzy(A,4)
ans =
0.999800000000000
0.999400000000000
1.000300000000000
1.000700000000000
%%把以上两程序中的“.4f”改为“.3f”运行,则结果变化为如下:
高斯消元法
>>myguass(A,4)
ans =
-0.885000000000000
1.828000000000000
0.994000000000000
0.698000000000000
列主元消去法
>>lzy(A,4)
ans =
1.000000000000000
1.000000000000000
1.000000000000000
0.999000000000000
%%把以上两程序中的“.3f”再改为“.6f”运行,则结果变化为如下:
高斯消元法
>>myguass(A,4)
ans =
0.998156000000000
1.000950000000000
0.999991000000000
0.999548000000000
列主元消去法
>>lzy(A,4)
ans =
0.999998000000000
0.999994000000000
1.000003000000000
1.000007000000000
%%分析:
观察题目中的系数矩阵,发现A(4,4)为0.0147,很小接近于零,会在高斯消元法进行