数值分析实验报告-清华大学--线性代数方程组的数值解法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数值分析实验报告-清华大学--线性代数方程组的数值解法(总15页)

--本页仅作为文档封面,使用时请直接删除即可--

--内页可以根据需求调整合适字体及大小--

线性代数方程组的数值解法

实验1. 主元的选取与算法的稳定性

问题提出:Gauss 消去法是我们在线性代数中已经熟悉的。但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保Gauss 消去法作为数值算法的稳定性呢?Gauss 消去法从理论算法到数值算法,其关键是主元的选择。主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。

实验内容:考虑线性方程组 n n n R b R A b Ax ∈∈=⨯,,

编制一个能自动选取主元,又能手动选取主元的求解线性方程组的Gauss 消去过程。

实验要求:

(1)取矩阵⎥⎥

⎥⎥

⎥⎦

⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣⎡=1415157,6816816816 b A ,则方程有解T x )1,,1,1(* =。取

n=10计算矩阵的条件数。让程序自动选取主元,结果如何?

(2)现选择程序中手动选取主元的功能。每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。

(3)取矩阵阶数n=20或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。

(4)选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。重复上述实验,观察记录并分析实验结果。

程序清单

n=input('矩阵A 的阶数:n=');

A=6*diag(ones(1,n))+diag(ones(1,n-1),1)+8*diag(ones(1,n-1),-1); b=A*ones(n,1);

p=input('计算条件数使用p-范数,p='); cond_A=cond(A,p) [m,n]=size(A);

Ab=[A b];

r=input('选主元方式(0:自动;1:手动),r=');

Ab

for i=1:n-1

switch r

case(0)

[aii,ip]=max(abs(Ab(i:n,i)));

ip=ip+i-1;

case (1)

ip=input(['第',num2str(i),'步消元,请输入第',num2str(i),'列所选元素所处的行数:']);

end;

Ab([i ip],:)=Ab([ip i],:);

aii=Ab(i,i);

for k=i+1:n

Ab(k,i:n+1)=Ab(k,i:n+1)-(Ab(k,i)/aii)*Ab(i,i:n+1);

end;

if r==1

Ab

end

end;

x=zeros(n,1);

x(n)=Ab(n,n+1)/Ab(n,n);

for i=n-1:-1:1

x(i)=(Ab(i,n+1)-Ab(i,i+1:n)*x(i+1:n))/Ab(i,i);

end

x

运行结果

(1)n=10,矩阵的条件数及自动选主元

Cond(A,1) =×103

Cond(A,2) = ×103

Cond(A,inf) =×103

程序自动选择主元(列主元)

a.输入数据

矩阵A的阶数:n=10

计算条件数使用p-范数,p=1

选主元方式(0:自动;1:手动),r=0

b.计算结果

x=[1,1,1,1,1,1,1,1,1,1]T

(2)n=10,手动选主元

a. 每步消去过程总选取按模最小或按模尽可能小的元素作为主元

矩阵A 的阶数:n=10

计算条件数使用p-范数,p=1

选主元方式(0:自动;1:手动),r=1

(1)

(1)

61

786

115[]8

61158

6

14A b ⎡⎤⎢⎥⎢⎥⎢

⎥=⎢⎥⎢⎥⎢⎥⎣

第1步消元,请输入第1列所选元素所处的行数:1

(2)

(2) 6.0000 1.0000

7.00004.6667 1.0000 5.66678.0000 6.000015.0000[]8.0000

1.000015.00006.0000 1.0000

8.0000 6.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥⎢⎥⎢⎥

⎢⎥

=⎢⎥

⎢⎥⎢⎥

⎢⎥

⎢⎥⎣

第2步消元,请输入第2列所选元素所处的行数:2

…(实际选择时,第k 步选择主元处于第k 行) 最终计算得

x=[, , , , , , , , , ]T

b. 每步消去过程总选取按模最大的元素作为主元 矩阵A 的阶数:n=10

计算条件数使用p-范数,p=1

选主元方式(0:自动;1:手动),r=1

(1)

(1)

61

786

115[]8

61158

6

14A b ⎡⎤⎢⎥⎢⎥⎢

⎥=⎢⎥⎢⎥⎢⎥⎣

第1步消元,请输入第1列所选元素所处的行数:2

(2)

(2)8.0000 6.0000 1.0000

15.0000-3.50000.7500-4.250008.0000 6.0000 1.000015.0000[]8.0000 6.0000

15.00008.0000 1.0000

6.0000 1.000015.00008.0000 6.000014.0000A b ⎡⎤⎢⎥-⎢⎥⎢⎥

⎢⎥

=⎢⎥

⎢⎥⎢⎥

⎢⎥

⎢⎥⎣

第2步消元,请输入第2列所选元素所处的行数:3

…(实际选择时,第k 步选择主元处于第k+1行) 最终计算得

相关文档
最新文档