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

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

1010 0.1 B 10 0.1 10
cond ( A) 10
11
cond ( B) 1
2、病态线性方程组的求解
(2)预处理 设有预处理矩阵P,对方程组AX=b预处理 PAX=Pb 使
cond ( PA) cond ( A)
2、病态线性方程组的求解
(1)采用高精度
小 结
2.3 矩阵的条件数与病态方程组
一、矩阵的条件数
cond ( A) A A
1
二、线性方程组的性态:病态和良态 三、病态线性方程组的求解 (1)采用高精度 (2)(预处理)平衡法 (3)残差校正法 (4)奇异值分解法
证明 (1)
只要证明A+△A非奇
( A A) A( I A A)
例2 方程组
0 0.1 0.2 0 T T 准确解为: 0 . 08 0 . 04 0 0 ( x , x , x , x ) ( 1 , 1 , 1 , 1 ) 1 2 3 4 A 0 0.02 0.11 0 (2)对系数矩阵A作微小扰动: (1)对右端 作微小扰动: 0.01 b 0.01 0 0.02 7 8.1 7.2 x1 32 10 7 8 7 x1 32.1 10 6 5 x2 23 7.08 5.04 7 5 6 5 x2 22.9 x3 8 5 . 98 9 . 89 9 33 8 6 10 9 x 33.1 6.99 4.99 3 x 9 9 . 98 31 4
s1 0.1, s2 1010, D diag(10,1010)
DAx Db
1 x1 2 1 11 10 x 1 1 2
cond ( A) 4
(3)残差校正法(迭代求精法,迭代改善法)
5 13
cond ( H15 ) 8.488 1017 cond ( H 20 ) 1.9084 1018
求解病态方程组出现的问题: 例:用MATLAB求解线性方程组
Hn x b
b H n e, 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.9999 1.0002,0.9996,1.0004,0.9998,1.000
(2)预处理
cond ( PA) cond ( A)
例4(P49)
0.1 0.1 x1 0.2 0.1 1010 x 1010 2
cond( A) 10
进行行平衡:
得同解方程组:
11
方程组病态
Ax b
~ r b Ax ~ xx
r 0?
N Y
近似解 ~ x
~ xx
Stop
Ax r
~ x x x
(3)残差校正法 (迭代求精法,迭代改善法)
(4)奇异值分解法
a)奇异值分解(Singular-Value Decomposition)
A USV
T
U、V——正交阵,S——对角阵 在MATLAB中,函数svd()作矩阵的奇异值分解 如:求H4的奇异值分解。输入
[U , S ,V ] svd (hilb (4))
如:求H4的奇异值分解。输入
[U , S ,V ] svd (hilb (4))
得到:
U=-0.7926 -0.4519 -0.3224 -0.2522 S=1.5002 0 0 0 V=-0.7926 -0.4519 -0.3224 -0.2522 0.5821 -0.3705 -0.5096 -0.5140 -0.1792 0.7419 -0.1002 -0.6383 -0.0292 0.3287 -0.7914 0.5146
1
A
1
1
A

x x A A1 1 A1 A (
A A
b b
b
b
A A
x
A
A
)
A A1 1 A
1
x
A A A
(
b b

A A
)
证毕
三、病态线性方程组的求解 1、病态线性方程组的判别
2、病态线性方程组的求解
(1)采用高精度
(2)(预处理)平衡法
(3)残差校正法 (4)奇异值分解法
三、病态线性方程组的求解 1、病态线性方程组的判别
例(P49)
三、病态线性方程组的求解 1、病态线性方程组的判别 例(P49)
0.1 0.1 A 10 0.1 10

136 13600% 1
2.3 矩阵的条件数与病态方程组
一、矩阵的条件数
★矩阵条件数的定义 ★矩阵条件数的性质
一、矩阵的条件数
Proof
改写(2.22)式:
x x

A 1 A
A1 A1 A A
(
A A

b b
)
★矩阵条件数的定义:
★矩阵条件数的性质:
(6)Cond(AB) ≤ Cond(A) Cond(B)
10 7 8 7
7
7 x1 32 5 6 5 x 2 23 x 6 10 9 33 3 x 31 5 9 10 4 8
( x1 , x2 , x3 , x4 ) (9.2,12.6,4.5,1.1)
1 1 Hn 2 1 n 1 2 1 3 1 n 1
1 , i, j 1,2,, n i j 1
1 1 3 n 1 1 4 n 1 1 1 n2 2n 1
对称正定矩阵
在MATLAB中,函数hilb()提供了Hilbert矩阵
(2)( A A) ( x x)
1
A1A 1?
b b Ax Ax Ax Ax b b Ax Ax Ax b
1 1 1
1 1 1
x A b A Ax A Ax
x A b A Ax A Ax
0 0.1691 0 0 0.5821 -0.3705 -0.5096 -0.5140
0 0 0 0 0.0067 0 0 0.0001
-0.1792 -0.0292 0.7419 0.3287 -0.1002 -0.7914 -0.6383 0.5146
b)用奇异值分解解线性方程组
Ax b
1
T
7
5
9
10 x4 30.9
T
( x1 , x2 , x3 , x4 )T (81,137,34,22)T
b b
x x



0.1 0.303% 33
A A
x x


13.6 1360% 1
4488倍
15111倍 0.3 0.9% 33
A1 b A1 A x A1 A x
(1 A1 A ) x x A1 b x A1 A
(1 A
1
A )
x x

A1 b x
A1 A
(1 A
1
A x
A USV
T
1 2 S n
令 U (u1 , u2 ,, un ), V (v1 , v2 ,, vn )
x A b VSU
T
b
i 1
n
u b
i
T i
vi
思考:这种方法有问题吗? 请大家自己查阅有关书籍《数值分析与实验,薛毅》
H 4 hilb (4)
希尔伯特(Hilbert)阵 -----最著名的病态矩阵 Hilbert矩阵的条件数:
cond ( H 4 ) 1.55 10 , cond ( H 6 ) 1.49 10
4
7
cond ( H 8 ) 1.53 1010 cond ( H 5 ) 4.76110 , cond ( H10 ) 1.6025 10
输入: 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
2.3 矩阵的条件数与病态方程组
一、矩阵的条件数 二、线性方程组的性态 三、病态线性方程组的求解
相关主题