当前位置:文档之家› 2.3矩阵的条件数与病态方程组

2.3矩阵的条件数与病态方程组

得:ans=1.000,1,000,1.000,1.000,0.9999 1.0002,0.9996,1.0004,0.9998,1.000
输入: n 5; H hilb(n);b H *ones(n,1); x H \ b; x,
得:ans=1.000,1,000,1.000,1.000,1.000 输入: n 10; H hilb(n);b H *ones(n,1); x H \ b; x,
2.3 矩阵的条件数与病态方程组
一、矩阵的条件数 二、线性方程组的性态 三、病态线性方程组的求解
2.3 矩阵的条件数与病态方程组
例1 方程组
3.03001
11

x1 x2
4.04001
准确解: x1 , x2 T 1 , 1T
若A及b作微小变化,考虑扰动后的方程组:
3 2.9999
11

x1 x2
4.04002
准确解:
x1 , x2 T 2
, 10T
方程组解的几何解释为:平面上两条接近于平行的直线的 交点,当其中一条直线稍有变化时,新的交点与原交点相 差很远。
例2 方程组 10 7 8 7 x1 32
7
8 7
5 6 5
6 10 9
5 190

x2 x3 x4
23 3331
(准1确A)解对0为0.00右0.081:端00b0.0(0..004x作211 ,微x00200..小11,1x扰3,00x动00..2042):T (2()1,1对,1,系1)数T 矩阵A作微小扰动:
10 7 8 7 x1 32.1
10 7 8.1 7.2 x1 32
7
8 7
5 6 5
三、病态线性方程组的求解 1、病态线性方程组的判别 2、病态线性方程组的求解
(1)采用高精度 (2)(预处理)平衡法 (3)残差校正法 (4)奇异值分解法
三、病态线性方程组的求解 1、病态线性方程组的判别
例(P49)
三、病态线性方程组的求解 1、病态线性方程组的判别
0.1 0.1
A 0.1
在MATLAB中,函数hilb()提供了Hilbert矩阵
H4 hilb(4)
希尔伯特(Hilbert)阵 -----最著名的病态矩阵
Hilbert矩阵的条件数:
cond (H4 ) 1.55104 , cond (H6 ) 1.49107 cond (H8 ) 1.531010 cond (H5 ) 4.761105, cond (H10 ) 1.60251013 cond (H15 ) 8.4881017 cond (H20 ) 1.9084 1018
6 10 9
5 9 10

x2 x3 x4
22.9 3303..91
7.08
8 6.99
5.04 5.98 4.99
6 9.89
9
5 9 9.98

x2 x3 x4
23 3331
(x1, x2 , x3, x4 )T (9.2,12.6,4.5,1.1)T
b 0.1 0.303%
例4(P49)
0.1 0.1
0.1 1010

x1 x2
0.2 1010
cond ( A) 1011 方程组病态
进行行平衡: s1 0.1, s2 1010 , D diag(10,1010 )
得同解方程组: DAx Db
1 1011
11

x1 x2
2 1
cond ( A) 4
(3)残差校正法(迭代求精法,迭代改善法)
~x x
Ax b 近似解 ~xx1, x2 , x3, x4 )T (81,137,34,22)T
15111倍
A 0.3 0.9%
A
33
x x
13.6 1
1360%
x 136 13600%
x
1
2.3 矩阵的条件数与病态方程组
一、矩阵的条件数 ★矩阵条件数的定义 ★矩阵条件数的性质
一、矩阵的条件数
1010
例(P49)
cond ( A) 1011
1010 0.1
B
0.1
1010
cond (B) 1
2、病态线性方程组的求解
(2)预处理 设有预处理矩阵P,对方程组AX=b预处理 PAX=Pb
使 cond(PA) cond( A)
2、病态线性方程组的求解 (1)采用高精度
(2)预处理 cond (PA) cond ( A)
b
x
(3) 0.005%, 50%
b
x
希尔伯特(Hilbert)阵 -----最著名的病态矩阵
定义: H (hi, j )nn ,
hi, j
1 ,i, i j 1
j
1,2,, n
1
Hn
1
2
1
2 1
3
1 3 1
1
n 1
4
n
1
1 n
1 n 1
1 n2
1 2n 1
对称正定矩阵
Proof
x
A A1
A b
改写(2.22)式:
x
(
)
1 A A1 A
A
b
A
★矩阵条件数的定义: ★矩阵条件数的性质:
(6)Cond(AB) ≤ Cond(A) Cond(B)
二、线性方程组的性态
答案: (1)cond ( A) 4104 , x (2,0)T (2)x x (1,1)T
求解病态方程组出现的问题:
例:用MATLAB求解线性方程组
Hnx b
b Hne, e (1,1,,1)T
输入: n 5; H hilb(n);b H *ones(n,1); x H \ b; x,
得:ans=1.000,1,000,1.000,1.000,1.000 输入: n 10; H hilb(n);b H *ones(n,1); x H \ b; x,
得:ans=1.000, 1,000, 1.000, 1.000, 0.999 1.000,0.999, 1.000, 0.999,1.000
输入: n 20; H hilb(n);b H *ones(n,1); x H \ b; x,
得:ans=1.000, 1,000, 1.001, 0.979 1.202 -0.141, 4.886, - 6.842, 9.446, -2.9071 6.4271, -19.1914,24.787,9.577, -50.545, 65.566, -47.751, 27.814, -9.191, 2.883
相关主题