当前位置:文档之家› 数值分析课程设计实验二

数值分析课程设计实验二

实验二 2.1
一、题目:
用高斯消元法的消元过程作矩阵分解。


20231
812
3
15A ⎡⎤
⎢⎥=⎢⎥⎢⎥-⎣⎦
消元过程可将矩阵A 化为上三角矩阵U ,试求出消元过程所用的乘数21m 、31m 、31m 并以如下格式构造下三角矩阵L 和上三角矩阵U
(1)
(1)21
22
23(2)31
32
331
20
23
1,1L m U a a m m a ⎡⎤⎡⎤
⎢⎥⎢⎥==⎢⎥⎢
⎥⎢⎥⎢⎥⎣⎦⎣

验证:矩阵A 可以分解为L 和U 的乘积,即A =LU 。

二、算法分析:
设矩阵11121321
222331
32
33a a a A a a a a a a ⎛⎫
⎪= ⎪ ⎪⎝⎭
,通过消元法可以将其化成上三角矩阵U ,具体算法如下: 第1步消元:111111(1)2
2112(1)
331130,0;
;2,3;
i i i i i i i i a m a a a a m a i a a m a +=≠⎧⎪
=+=⎨⎪=+⎩ 得到111213(1)(1)12223(1)(1)32
330
0a a a A a a a a ⎛⎫
⎪= ⎪ ⎪⎝

第2步消元:(1)(1)(1)32322222(2)(1)(1)333332230,0;
;
a m a a a a m a ⎧+=≠⎪⎨=+⎪⎩
得到的矩阵为11
1213(1)
(1)22223(2)330
00
a a a A a a a ⎛⎫
⎪= ⎪ ⎪⎝

三、程序及运行结果 b1.m
A=[20 2 3;1 8 1;2 -3 15]; for i=1:2
M(i)=A(i+1,1)/A(1,1); end
for j=2:3
A1(j,2)=A(j,2)-M(j-1)*A(1,2); A1(j,3)=A(j,3)-M(j-1)*A(1,3); end
M(3)=A1(3,2)/A1(2,2); A1(3,2)=0;
A1(3,3)=A1(3,3)-M(3)*A1(2,3); M,A1
运行结果为: M =
0.0500 0.1000 -0.4051 A1 =
0 0 0 0 7.9000 0.8500 0 0 15.0443 所以: 10020
23
0.05
100
7.90.850.10.4051
100
15.0443L U ⎛⎫⎛⎫
⎪ ⎪
== ⎪ ⎪ ⎪ ⎪-⎝



验证:L=[1 0 0;0.05 1 0;0.1 -0.4051 1];U=[20 2 3;0 7.9 0.85;0 0 15.0443];A1=L*U
A1 =
20.0000 2.0000 3.0000 1.0000 8.0000 1.0000 2.0000 -3.0003 15.0000
四、精度分析
因为根据LU 的递推公式可知,L ,U 分别为下三角和上三角矩阵,其中L 不在对角线上的元素值为1
1
1()k ik ik is sk s kk
l a l u u -==
-∑,在计算每个系数时会产生相应的计算误差。

2.2
一、题目
用矩阵分解方法求上题中A 的逆矩阵。


1231000,1,0001b b b ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥===⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦
分别求解方程组
123,,AX b AX b AX b ===
由于三个方程组系数矩阵相同,可以将分解后的矩阵重复使用。

对第一个方程组,由于A=LU ,所以先求解下三角方程组1b =LY ,再求解上三角方程组=U X Y ,则可得逆矩阵的第一列列向量;类似可解第二、第三方程组,得逆矩阵的第二列列向量的第三列列向量。

由三个列向量拼装可得逆矩阵1-A 。

二、算法分析
首先根据LU 分解,将矩阵A 分解成下三角矩阵L 和上三角矩阵U 乘积的形式。

然后分别求解方程组(1,2,3)i i LY b i ==和(1,2,3)i i U X Y i ==。

通过计算可知
10020
23
0.05
100
80.850.10.4
100
15.04L U ⎛⎫⎛⎫
⎪ ⎪== ⎪ ⎪ ⎪ ⎪-⎝



11,2,3i i i i
LY b Y L b i -=⇒== 1
1,2,3i i i i
U X Y X U Y i -=⇒==
最后求解得到的矩阵[]1
1
2
3B X X X A -==
三、程序及运行结果 b2.m
b1=[1 0 0]';b2=[0 1 0]';b3=[0 0 1]';
L=[1 0 0;0.05 1 0;0.1 -0.4 1];U=[20 2 3;0 8 0.85;0 0 15.04]; y1=inv(L)*b1;x1=inv(U)*y1; y2=inv(L)*b2;x2=inv(U)*y2; y3=inv(L)*b3;x3=inv(U)*y3; x1,x2,x3,[x1,x2,x3]
运行结果为:
x1 =
0.0517 -0.0054 -0.0080
x2 =
-0.0162 0.1222 0.0266
x3 =
-0.0093 -0.0071 0.0665
ans =
0.0517 -0.0162 -0.0093 -0.0054 0.1222 -0.0071 -0.0080 0.0266 0.0665
四、精度分析
矩阵A 经过LU 分解后得到上三角U 和下三角矩阵L ,分别进行
1
1,2,3i i i i
L Y b Y L b i -=⇒== 和1
1,2,3i i i i
U X Y X U Y i -=⇒==计算时便产生了计
算误差,所以最后结果与1A -存在一定的误差。

2.2
一、题目
验证希尔伯特矩阵的病态性:对于三阶矩阵 1
1/21/31/2
1/31/4
1/3
1/4
1/5H ⎡⎤
⎢⎥=⎢⎥⎢⎥⎣⎦
取右端向量T
[11/613/12
47/60]
b =,验证:
(1)向量
T
T
1
2
3[][1
1
1]
X x x x ==是方程组b =H X 的准确解;
(2)取右端向量b 的三位有效数字得T
[1.83
1.08
0.783]
b =,求方程组的准确解
*
X ,并与X 的数据
T
[111]
作比较 。

说明矩阵的病态性。

二、算法分析
(1)要验证向量X 是方程H X b =的准确解,只需求解出该方程的解并与X 作个比较
即可。

因为H X b =,所以1
X H b -=
(2)与第一题算法一样,根据H X b =求解出*1
X H b -=
三、程序及运行结果 b3.m
b1=[11/6 13/12 47/60]';b2=[1.83 1.08 0.783]';
H=[1 1/2 1/3;1/2 1/3 1/4;1/3 1/4 1/5]; x1=inv(H)*b1 x2=inv(H)*b2 运行结果为: x1 =
1.0000 1.0000 1.0000 x2 =
1.0800 0.5400 1.4400
四、精度分析
(1)通过x1的运行结果可知,123[][111]T T
X x x x ==是方程H X b =准确解。

(2)通过
x2
的运行结果可知,由于T
1[1.83
1.08
0.783]b =与
T
2[11/6
13/12
47/60]b =的误差非常小,可是它们的计算结果却差别很大,根据病态
矩阵的定义可知,矩阵H 为病态的。

相关主题