矩阵与数值分析上机实验题及程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.给定n 阶方程组Ax b =,其中
6186186186A ⎛⎫ ⎪ ⎪ ⎪= ⎪ ⎪ ⎪⎝⎭ ,7151514b ⎛⎫ ⎪ ⎪ ⎪= ⎪
⎪
⎪⎝⎭
则方程组有解(1,1,,1)T
x = 。对10n =和84n =,分别用Gauss 消去法和列主元消去法解方程组,并比较计算结果。 Gauss 消去法:
Matlab 编程(建立GS.m 文件):
function x=GS(n) A=[];b=[]; for i=1:n-1 A(i,i)=6; A(i,i+1)=1; A(i+1,i)=8; b(i)=15; end
A(n,n)=6;b(1)=7;b(n)=14;b=b'; for k=1:n-1 for i=k+1:n
m(i,k)=A(i,k)/A(k,k);
A(i,k:n)=A(i,k:n)-m(i,k)*A(k,k:n); b(i)=b(i)-m(i,k)*b(k); end end
b(n)=b(n)/A(n,n); for i=n-1:-1:1
b(i)=(b(i)-sum(A(i,i+1:n).*b(i+1:n)'))/A(i,i); end clear x; x=b;
disp( 'AX=b 的解x 是') end
计算结果:
在matlab 命令框里输出GS (10)得: >> GS(10)
AX=b 的解x 是 ans =
1.0000 1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
1.0000
在matlab命令框里输出GS(84)得:>> GS(84)
AX=b的解x是
ans =
1.0e+008 *
0.0000
…
…
…
0.0000
-0.0000
0.0000
-0.0000
0.0000
-0.0000
0.0000
-0.0000
0.0000
-0.0000
0.0000
-0.0000
0.0000
-0.0001
0.0002
-0.0003
0.0007
-0.0013
0.0026
-0.0052
0.0105
-0.0209
0.0419
-0.0836
0.1665
-0.3303
-1.2582
2.3487
-4.0263
5.3684
列主元消去法:
Matlab编程(建立GLZX.m文件):
function x=GLZX(n)
A=[];b=[];
eps=10^-2;
for i=1:n-1
A(i,i)=6;
A(i,i+1)=1;
A(i+1,i)=8;
b(i)=15;
end
A(n,n)=6;b(1)=7;b(n)=14;b=b';
for k=1:n-1
[mainElement,index]=max(abs(A(k:n,k)));
index=index+k-1;%index
if abs(mainElement) disp('列元素太小!!'); break; elseif index>k temp=A(k,:);temp1=b(k); A(k,:)=A(index,:);b(k)=b(index); A(index,:)=temp;b(index)=temp1; end for i=k+1:n m(i,k)=A(i,k)/A(k,k);%A(k,k) ; A(i,k:n)=A(i,k:n)-m(i,k)*A(k,k:n); b(i)=b(i)-m(i,k)*b(k); end end b(n)=b(n)/A(n,n); for i=n-1:-1:1 b(i)=(b(i)-sum(A(i,i+1:n).*b(i+1:n)'))/A(i,i); end clear x; x=b; disp('AX=b的解x是') end 在matlab命令框里输出GLZX(10)得: >> GLZX(10) AX=b的解x是 ans = 1 1 1 1 1 1 1 1 1 1 在matlab命令框里输出GLZX(84)得: >> GLZX(84) AX=b的解x是 ans = 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 … … … 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 1.0000 分析: n较小时,两种方法均能得到正确解,当n较大后,Gauss消去法计算结果严重偏离准确值成为错解,列主元消去法依然能得到正确解。这是因为Gauss消去法中有小主元做除数,在计算过程中的舍入误差会对解产生极大影响,从而导致错误。列主元消去法则避免了这种情况。