概述
病态矩阵
中国有句古话“差之毫厘,谬以千里”,说的可能是测量时一个小小的误差,方程组的解就差距非常大。比如以下方程组:
x
1
+
x
2
=
20
x
1
+
1.999
x
2
=
19.99
x_1+x_2=20\ x_1+1.999x_2=19.99\
x1+x2=20x1+1.999x2=19.99
解得
x
1
=
10
,
x
2
=
10
x_1=10,x_2=10
x1=10,x2=10。假如这是一个实验场景,再一次测量得到了另一个方程:
x
1
+
x
2
=
20
x
1
+
1.001
x
2
=
19.99
x
1
=
30
,
x
2
=
−
10
x_1+x_2=20\ x_1+1.001x_2=19.99\ x_1=30,x_2=-10
x1+x2=20x1+1.001x2=19.99x1=30,x2=−10
这时候方程组的解为
x
1
=
30
,
x
2
=
−
10
x_1=30,x_2=-10
x1=30,x2=−10。一个小小的系数误差,方程组的解就变动如此巨大。对于这种系数矩阵,我们就叫它病态矩阵ill-conditioned matrix。
误差分析
当然,病态矩阵无论是系数变动一下还是常数项变动一下,结果都千差万别。所以只需要研究下常数项的变动就可以了。假设原方程如下:
A
x
=
b
Ax=b
Ax=b
常数项出了点误差,误差为
e
e
e,方程就变成了:
A
y
=
b
+
e
Ay=b+e
Ay=b+e
如果常数项只是一个数字,那么常数项的误差系数就是
e
b
frac{e}b
be。但是向量没有除法,所有怎么衡量误差呢?这个时候就需要用到范数,把向量变成一个非负实数。所以常数项的误差就这样衡量:
∥
e
∥
∥
b
∥
frac{parallel eparallel}{parallel bparallel}
∥b∥∥e∥
同意,方程解的误差就这样衡量:
∥
y
−
x
∥
∥
x
∥
frac{parallel y-xparallel}{parallel xparallel}
∥x∥∥y−x∥
误差不等式
方程组误差不等式:
1
∥
A
∥
∥
A
−
1
∥
∥
e
∥
∥
b
∥
≤
∥
y
−
x
∥
∥
x
∥
≤
∥
A
∥
∥
A
−
1
∥
∥
e
∥
∥
b
∥
frac1{parallel Aparallelparallel A^{-1}parallel}frac{parallel eparallel}{parallel bparallel}lefrac{parallel y-xparallel}{parallel xparallel}leparallel Aparallelparallel A^{-1}parallelfrac{parallel eparallel}{parallel bparallel}
∥A∥∥A−1∥1∥b∥∥e∥≤∥x∥∥y−x∥≤∥A∥∥A−1∥∥b∥∥e∥
怎么证明呢?首先,两个方程相减,得到了以下方程:
A
(
y
−
x
)
=
e
⇒
y
−
x
=
A
−
1
e
A(y-x)=e\ Rightarrow y-x=A^{-1}e
A(y−x)=e⇒y−x=A−1e
根据范数的相容不等式,有:
∥
y
−
x
∥
≤
∥
A
−
1
∥
∥
e
∥
parallel y-xparallelleparallel A^{-1}parallel parallel eparallel
∥y−x∥≤∥A−1∥∥e∥
再根据
b
=
A
x
b=Ax
b=Ax和范数相容不等式,有:
∥
b
∥
≤
∥
A
∥
∥
x
∥
⇒
1
≤
∥
A
∥
∥
x
∥
∥
b
∥
⇒
1
∥
x
∥
≤
∥
A
∥
∥
b
∥
parallel bparallel le parallel Aparallel parallel xparallel\ Rightarrow 1 le frac{parallel Aparallel parallel xparallel}{parallel b parallel}\ Rightarrow frac{1}{parallel xparallel} le frac{parallel Aparallel }{parallel b parallel}
∥b∥≤∥A∥∥x∥⇒1≤∥b∥∥A∥∥x∥⇒∥x∥1≤∥b∥∥A∥
将两个不等式相乘得到了:
∥
y
−
x
∥
1
∥
x
∥
≤
∥
A
−
1
∥
∥
e
∥
∥
A
∥
∥
b
∥
⇒
∥
y
−
x
∥
∥
x
∥
≤
∥
A
∥
∥
A
−
1
∥
∥
e
∥
∥
b
∥
parallel y-xparallel frac{1}{parallel xparallel}le parallel A^{-1}parallel parallel eparallel frac{parallel Aparallel }{parallel b parallel}\ Rightarrow frac{parallel y-xparallel}{parallel xparallel}le parallel Aparallel parallel A^{-1}parallel frac{ parallel eparallel}{parallel b parallel}
∥y−x∥∥x∥1≤∥A−1∥∥e∥∥b∥∥A∥⇒∥x∥∥y−x∥≤∥A∥∥A−1∥∥b∥∥e∥
右边就证明完了。根据
e
=
A
(
y
−
x
)
e=A(y-x)
e=A(y−x),有:
∥
e
∥
≤
∥
A
∥
∥
y
−
x
∥
⇒
∥
e
∥
∥
A
∥
≤
∥
y
−
x
∥
parallel e parallel le parallel Aparallel parallel y-x parallel\ Rightarrow frac{parallel e parallel}{parallel Aparallel } le parallel y-x parallel\
∥e∥≤∥A∥∥y−x∥⇒∥A∥∥e∥≤∥y−x∥
再根据
x
=
A
−
1
b
x=A^{-1}b
x=A−1b,有:
∥
x
∥
≤
∥
A
−
1
∥
∥
b
∥
⇒
∥
A
−
1
∥
∥
b
∥
≥
∥
x
∥
⇒
1
∥
A
−
1
∥
∥
b
∥
≤
1
∥
x
∥
parallel x parallel le parallel A^{-1}parallel parallel b parallel \ Rightarrow parallel A^{-1}parallel parallel b parallel ge parallel x parallel\ Rightarrow frac1{parallel A^{-1}parallel parallel b parallel} le frac1{parallel x parallel}
∥x∥≤∥A−1∥∥b∥⇒∥A−1∥∥b∥≥∥x∥⇒∥A−1∥∥b∥1≤∥x∥1
两个不等式合起来,得到:
∥
e
∥
∥
A
∥
1
∥
A
−
1
∥
∥
b
∥
≤
∥
y
−
x
∥
1
∥
x
∥
⇒
1
∥
A
∥
∥
A
−
1
∥
∥
e
∥
∥
b
∥
≤
∥
y
−
x
∥
∥
x
∥
frac{parallel e parallel}{parallel Aparallel }frac1{parallel A^{-1}parallel parallel b parallel} le parallel y-x parallelfrac1{parallel x parallel}\ Rightarrow frac{1}{parallel Aparallel parallel A^{-1}parallel}frac{parallel e parallel}{ parallel b parallel} le frac{parallel y-x parallel}{parallel x parallel}
∥A∥∥e∥∥A−1∥∥b∥1≤∥y−x∥∥x∥1⇒∥A∥∥A−1∥1∥b∥∥e∥≤∥x∥∥y−x∥
左边就证明出来。
条件数
误差
∥
y
−
x
∥
∥
x
∥
frac{parallel y-xparallel}{parallel xparallel}
∥x∥∥y−x∥的最小值没有什么意义,因为随着
∥
e
∥
parallel e parallel
∥e∥变得很小,误差也很小,重点看方程解误差的最大值。
∥
A
∥
∥
A
−
1
∥
parallel Aparallel parallel A^{-1}parallel
∥A∥∥A−1∥决定了对方程组常数项误差的最大放大倍数,这个就是矩阵的条件数condition number,符号为
K
(
A
)
K(A)
K(A)。一般来说向量2-范数和矩阵F范数相容,所以我们就用F-范数计算矩阵范数。
再来看前面那个方程组的条件数是多少:
A
=
(
1
1
1
0.999
)
∣
∣
A
∣
∣
F
=
1.9995001875468779
A
−
1
=
(
−
998.9999999999991
999.9999999999991
999.9999999999991
−
999.9999999999991
)
∣
∣
A
−
1
∣
∣
F
=
1999.500187546876
∣
∣
A
∣
∣
F
∣
∣
A
−
1
∣
∣
F
=
3998.000999999996
A=begin{pmatrix}1 & 1\ 1 & 0.999\ end{pmatrix}\ ||A||_F=1.9995001875468779\ A^{-1}=begin{pmatrix}-998.9999999999991 & 999.9999999999991\ 999.9999999999991 & -999.9999999999991\ end{pmatrix}\ ||A^{-1}||_F=1999.500187546876\ ||A||_F||A^{-1}||_F=3998.000999999996
A=(1110.999)∣∣A∣∣F=1.9995001875468779A−1=(−998.9999999999991999.9999999999991999.9999999999991−999.9999999999991)∣∣A−1∣∣F=1999.500187546876∣∣A∣∣F∣∣A−1∣∣F=3998.000999999996
所以这个矩阵的条件数是非常大的,一个微小的误差就会导致方程的解变化很大。
最后
以上就是失眠口红为你收集整理的7.6 矩阵的条件数病态矩阵误差分析误差不等式条件数的全部内容,希望文章能够帮你解决7.6 矩阵的条件数病态矩阵误差分析误差不等式条件数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复