数值计算方法实验分析报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生实验报告
实验课程名称数值计算方法
开课实验室数学实验室
实验五解线性方程组的直接方法
实验(主元的选取与算法的稳定性)
问题提出:消去法是我们在线性代数中已经熟悉的。但由于计算机的数值运算是在一个有限的浮点数集合上进行的,如何才能确保消去法作为数值算法的稳定性呢?消去法从理论算法到数值算法,其关键是主元的选择。主元的选择从数学理论上看起来平凡,它却是数值分析中十分典型的问题。
实验内容:考虑线性方程组
n
n R
n
∈
=⨯,
Ax∈
,
R
b
A
b
编制一个能自动选取主元,又能手动选取主元的求解线性方程组的消去过程。
实验要求:
()取矩阵
⎥⎥
⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢
⎢⎣
⎡=1415157,68
16
8
1
681
6M O O O
b A ,则方程有解
T
x )1,,1,1(*Λ=。取计算矩阵的条件数。让程序自动选取主元,
结果如何?
()现选择程序中手动选取主元的功能。每步消去过程总选取按模最小或按模尽可能小的元素作为主元,观察并记录计算结果。若每步消去过程总选取按模最大的元素作为主元,结果又如何?分析实验的结果。
()取矩阵阶数或者更大,重复上述实验过程,观察记录并分析不同的问题及消去过程中选择不同的主元时计算结果的差异,说明主元素的选取在消去过程中的作用。
()选取其他你感兴趣的问题或者随机生成矩阵,计算其条件数。重复上述实验,观察记录并分析实验结果。
实验(线性代数方程组的性态与条件数的估计) 问题提出:理论上,线性代数方程组b Ax =的摄动满足
⎪⎪⎭
⎫ ⎝⎛∆+∆∆-≤
∆-b b A A A
A A cond x x 11)( 矩阵的条件数确实是对矩阵病态性的刻画,但在实际应
用中直接计算它显然不现实,因为计算1
-A 通常要比求解方
程b Ax =还困难。
实验内容:中提供有函数“”可以用来估计矩阵的条件数,它给出的是按范数的条件数。首先构造非奇异矩阵和右端,使得方程是可以精确求解的。再人为地引进系数矩阵和右端的摄动b A ∆∆和,使得
b
A ∆∆和充分小。
实验要求:
()假设方程的解为,求解方程b b x A A ∆+=∆+ˆ)(,以范数,
给出
x
x x x
x -=
∆ˆ的计算结果。
()选择一系列维数递增的矩阵(可以是随机生成的),比较函数“”所需机器时间的差别.考虑若干逆是已知的矩阵,借助函数“”很容易给出()的数值。将它与函数“()”所得到的结果进行比较。
()利用“”给出矩阵条件数的估计,针对()中的结果给出
x
x ∆的理论估计,并将它与()给出的计算结果进行
比较,分析所得结果。注意,如果给出了()和A
的估计,马
上就可以给出
1
-A 的估计。
()估计著名的矩阵的条件数。
n j i j i h h H j i n n j i ,,2,1,,
1
1
,
)(,,Λ=-+=
=⨯
思考题一:(矩阵)设
⎥⎥
⎥⎥⎥⎥⎥⎥⎥⎥⎦
⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡=⎥⎥⎥
⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎣
⎡=∑∑∑∑====n i i n n i i n
i i n i i n n n
n
n n n
x x x x b x x x x x x x x x x x x A 0020
100222221211020011
11M Λ
M ΛM M M ΛΛΛ,,
其中,n k k x k ,,1,0,1.01Λ=+=,
()对,计算的条件数;随增大,矩阵性态如何变化? ()对,解方程组;设的最后一个元素有扰动,再求解 ()计算()扰动相对误差与解的相对偏差,分析它们与条件数的关系。
()你能由此解释为什么不用插值函数存在定理直接求插值函数而要用拉格朗日或牛顿插值法的原因吗?
相关函数提示:
实验程序:文件程序为:
()
('请输入矩阵的阶数')
(*())(())(*())
*()
('条件数对应的范数是范数:')
()
[]();
[ ]
('请输入是否为手动,手动输入,自动输入:')
[]((()));
;
([ ],:)([ ],:)();
('输入列所选元素所处的行数:'); ([ ],:)([ ],:)();
();
()()(())*();
();
()()()();
()(()()*())();
()⑴取矩阵的阶数,自动选取主元:
>>
>>
请输入矩阵的阶数
条件数对应的范数是范数:
请输入是否为手动,手动输入,自动输入:
⑵取矩阵的阶数,手动选取主元:
①选取绝对值最大的元素为主元:
>>
请输入矩阵的阶数
条件数对应的范数是范数:
请输入是否为手动,手动输入,自动输入:
②选取绝对值最小的元素为主元:
>>
请输入矩阵的阶数