矩阵与数值分析上机实验题及程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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消去法中有小主元做除数,在计算过程中的舍入误差会对解产生极大影响,从而导致错误。列主元消去法则避免了这种情况。

相关文档
最新文档