矩阵论(六):矩阵的条件数

矩阵论专栏:专栏(文章按照顺序排序)

参考资料:
线性代数基础知识系列:12345
矩阵分解—从Schur分解、特征值分解EVD到奇异值分解SVD(下)
矩阵的正定性

矩阵的条件数用于界定一个矩阵是“良态的”还是“病态的”,一般来说,条件数越大,矩阵越接近一个奇异矩阵(不可逆矩阵),矩阵越“病态”。在数值计算中,矩阵的条件数越大,计算的误差越大,精度越低。例如下面解线性方程组的例子:
在这里插入图片描述
矩阵A的条件数很大:
在这里插入图片描述
如果A受到很小的扰动,变成如下的矩阵B,可以发现方程的解的变化非常大:
在这里插入图片描述
如果我们采集的数据有稍微一点点的偏差,就像上面的例子,我们得到的结果就会相差很多,这不是我们希望看到的。所以,衡量一个矩阵的病态程度是很有必要的。
下面先从矩阵范数入手,在此基础上再去了解条件数:

  • 矩阵的范数
    • 范数公理
    • Frobenius范数
      • Frobenius范数与特征值和奇异值的关系
      • 特征值与奇异值之间的关系总结
    • 诱导范数/算子范数
      • 1 , 2 , ∞ 1,2,\infty 1,2,范数的具体表达式
  • 矩阵的条件数及求法
    • 条件数的定义与性质
    • 条件数的计算
  • 条件数在误差估计方面的应用
    • 线性方程组的误差估计
    • 矩阵求逆的误差估计
    • 思考:什么时候 c o n d ( A ) cond(A) cond(A)最小?

【说明】设 F F F为一数域。本文 F n × 1 F^{n\times 1} Fn×1 F n F^n Fn不作区分,即默认把 F n F^n Fn中的向量视作列向量。在 F n F^n Fn上定义的 l p l_p lp范数在 F n × 1 F^{n\times 1} Fn×1上也适用。文中 R R R表示实数域, C C C表示复数域。 F r m × n F^{m\times n}_r Frm×n表示数域 F F F上全体秩为 r r r m × n m\times n m×n矩阵的集合。


矩阵的范数

范数公理
  • 定义1:矩阵 A ∈ F m × n A\in{F^{m\times{n}}} AFm×n的范数 ∣ ∣ A ∣ ∣ ||A|| A必须是实值函数且满足如下性质:
    • ∀ A ≠ O , ∣ ∣ A ∣ ∣ > 0 ; ∣ ∣ O ∣ ∣ = 0 \forall{A}\neq{O},||A||\gt{0};||O||=0 A=O,A>0;O=0 (非负性/正定性)
    • ∀ c ∈ F , ∣ ∣ c A ∣ ∣ = ∣ c ∣ ∣ ∣ A ∣ ∣ \forall{c}\in{F},||cA||=|c|||A|| cF,cA=cA (齐次性)
    • ∣ ∣ A + B ∣ ∣ ⩽ ∣ ∣ A ∣ ∣ + ∣ ∣ B ∣ ∣ ||A+B||\leqslant{}||A||+||B|| A+BA+B (三角不等式)
    • ∣ ∣ A B ∣ ∣ ⩽ ∣ ∣ A ∣ ∣ ∣ ∣ B ∣ ∣ ||AB||\leqslant{}||A||||B|| ABAB (矩阵乘法的相容性)
  • 定理1(矩阵范数的性质):
    (1) ∣ ∣ I ∣ ∣ ⩾ 1 ||I||\geqslant 1 I1
    证明:由 ∣ ∣ I ∣ ∣ ⩽ ∣ ∣ I ∣ ∣ ∣ ∣ I ∣ ∣ ||I||\leqslant||I||||I|| III(矩阵乘法的相容性)且 ∣ ∣ I ∣ ∣ > 0 ||I||>0 I>0即证。
    【注】需要注意的是, ∣ ∣ I ∣ ∣ = 1 ||I||=1 I=1是不一定成立的。例如 ∣ ∣ I ∣ ∣ F = n ||I||_F=\sqrt{n} IF=n (Frobenius范数,见后文),其中 n n n是单位矩阵 I I I的阶数。但是,单位矩阵的算子范数(诱导范数)总是1,证明见后文。
    (2)设 A ∈ C n × n A\in C^{n\times n} ACn×n,任取A的一个特征值 λ \lambda λ,则有 ∣ λ ∣ ⩽ ∣ ∣ A ∣ ∣ |\lambda|\leqslant ||A|| λA
    证明:参照(3)的证明的前半部分。
    【注】根据谱半径的定义,可得 ρ ( A ) ⩽ ∣ ∣ A ∣ ∣ \rho(A)\leqslant ||A|| ρ(A)A
    (3)设 A ∈ C n n × n A\in C^{n\times n}_n ACnn×n,则对A的任一特征值 λ \lambda λ ∣ ∣ A − 1 ∣ ∣ − 1 ⩽ ∣ λ ∣ ⩽ ∣ ∣ A ∣ ∣ ||A^{-1}||^{-1}\leqslant |\lambda| \leqslant||A|| A11λA
    证明:设 A x = λ x , x ≠ 0 Ax=\lambda x,x\neq 0 Ax=λx,x=0,则 ∣ λ ∣ ∣ ∣ x ∣ ∣ = ∣ ∣ A x ∣ ∣ ⩽ ∣ ∣ A ∣ ∣ ∣ ∣ x ∣ ∣ |\lambda|||x||=||Ax||\leqslant||A||||x|| λx=AxAx ∣ ∣ x ∣ ∣ > 0 ||x||>0 x>0,故 ∣ λ ∣ < ∣ ∣ A ∣ ∣ |\lambda|<||A|| λ<A。用 A − 1 A^{-1} A1左乘 A x = λ x Ax=\lambda x Ax=λx得到 λ A − 1 x = x \lambda A^{-1}x=x λA1x=x,故 ∣ ∣ x ∣ ∣ = ∣ ∣ λ A − 1 x ∣ ∣ ⩽ ∣ λ ∣ ∣ ∣ A − 1 ∣ ∣ ∣ ∣ x ∣ ∣ ||x||=||\lambda A^{-1}x||\leqslant |\lambda|||A^{-1}||||x|| x=λA1xλA1x,又 ∣ ∣ x ∣ ∣ > 0 ||x||>0 x>0 ∣ λ ∣ ∣ ∣ A − 1 ∣ ∣ ⩾ 1 |\lambda|||A^{-1}||\geqslant 1 λA11,即 ∣ ∣ A − 1 ∣ ∣ − 1 ⩽ ∣ λ ∣ ||A^{-1}||^{-1}\leqslant |\lambda| A11λ。综上得证。
常用范数
  • Frobenius范数
    和向量的Frobenius范数(L2范数、欧几里得范数)类似,矩阵的Frobenius范数也是把每一个元素的模的平方加起来再开根号:
    • 定义2:矩阵的Frobenius范数定义为 ∣ ∣ A ∣ ∣ F = t r ( A H A ) = ∑ i , j ∣ a i j ∣ 2 ||A||_F=\sqrt{tr(A^HA)}=\sqrt{\sum_{i,j}|a_{ij}|^2} AF=tr(AHA) =i,jaij2 ,其中 a i j a_{ij} aij是A的第i行,第j列元素
      Frobenius范数是满足上面四条范数公理的,证明稍微有些繁琐,这里就不写了。
      由Frobenius范数很容易得到酋矩阵的一个性质:
      • 定理2:设U是n阶酋矩阵,则U的任意特征值的模长为1
        证明:
        U x = λ x , x ≠ 0 Ux=\lambda x,x\neq 0 Ux=λx,x=0,则 ∣ ∣ U x ∣ ∣ F = ∣ λ ∣ ∣ ∣ x ∣ ∣ F ||Ux||_F=|\lambda|||x||_F UxF=λxF,因为 ∣ ∣ U x ∣ ∣ F = t r ( x H U H U x ) = t r ( x H x ) = ∣ ∣ x ∣ ∣ F ||Ux||_F=\sqrt{tr(x^HU^HUx)}=\sqrt{tr(x^Hx)}=||x||_F UxF=tr(xHUHUx) =tr(xHx) =xF,且 ∣ ∣ x ∣ ∣ F > 0 ||x||_F>0 xF>0,所以 ∣ λ ∣ = 1 |\lambda|=1 λ=1
        这个定理在前面的博客链接中证明过,方法和这里本质上是一回事。
    • Frobenius范数与特征值的关系
      • 定理3(Schur不等式):设 A ∈ C n × n A\in C^{n\times n} ACn×n A A A的特征值为 λ 1 , λ 2 , . . . , λ n \lambda_1,\lambda_2,...,\lambda_n λ1,λ2,...,λn,则 ∣ ∣ A ∣ ∣ F ⩾ ∑ i ∣ λ i ∣ 2 ||A||_F\geqslant \sqrt{\sum_i |\lambda_i|^2} AFiλi2 ,且取等号的充要条件为 A A A是正规矩阵
        证明:
        A A A的一个Schur分解为 A = U T U H A=UTU^H A=UTUH,其中 U U U是酋阵, T = ( t i j ) n × n T=(t_{ij})_{n\times n} T=(tij)n×n是上三角阵。则 ∣ ∣ A ∣ ∣ F = t r ( A H A ) = t r ( U T H U H U T U H ) = t r ( U T H T U H ) = t r ( U H U T H T ) = t r ( T H T ) = ∣ ∣ T ∣ ∣ F ||A||_F=\sqrt{tr(A^HA)}=\sqrt{tr(UT^HU^HUTU^H)}=\sqrt{tr(UT^HTU^H)}=\sqrt{tr(U^HUT^HT)}=\sqrt{tr(T^HT)}=||T||_F AF=tr(AHA) =tr(UTHUHUTUH) =tr(UTHTUH) =tr(UHUTHT) =tr(THT) =TF,注意 T T T的主对角元是 λ 1 , λ 2 , . . . , λ n \lambda_1,\lambda_2,...,\lambda_n λ1,λ2,...,λn,所以 ∣ ∣ A ∣ ∣ F = ∣ ∣ T ∣ ∣ F = ∑ i , j ∣ t i j ∣ 2 ⩾ ∑ i ∣ λ i ∣ 2 ||A||_F=||T||_F=\sqrt{\sum_{i,j}|t_{ij}|^2}\geqslant \sqrt{\sum_i |\lambda_i|^2} AF=TF=i,jtij2 iλi2 。接下来考虑取等号的条件。显然取等号的充要条件是 ∑ i , j ∣ t i j ∣ 2 = ∑ i ∣ λ i ∣ 2 \sqrt{\sum_{i,j}|t_{ij}|^2}=\sqrt{\sum_i |\lambda_i|^2} i,jtij2 =iλi2 ,即 T T T除主对角线外元素均为零,即 T T T是一对角阵,即 A A A酋相似于一对角阵,即 A A A是一正规矩阵。
    • Frobenius范数与奇异值的关系
      • 定理4:设 A ∈ C m × n A\in C^{m\times n} ACm×n σ 1 , σ 2 , ⋯   , σ k \sigma_1,\sigma_2,\cdots,\sigma_k σ1,σ2,,σk A A A的非零奇异值(重奇异值按重数算),则 ∣ ∣ A ∣ ∣ F = ∑ i σ i 2 ||A||_F=\sqrt{\sum_i \sigma_i^2} AF=iσi2
        证明:
        A H A A^HA AHA的一个谱分解为 A H A = U Σ U H = U Σ U − 1 A^HA=U\Sigma U^H=U\Sigma U^{-1} AHA=UΣUH=UΣU1
        ∣ ∣ A ∣ ∣ F = t r ( A H A ) = t r ( U Σ U − 1 ) = t r ( U − 1 U Σ ) = t r ( Σ ) = ∑ i σ i 2 ||A||_F=\sqrt{tr(A^HA)}=\sqrt{tr(U\Sigma U^{-1})}=\sqrt{tr(U^{-1}U\Sigma )}=\sqrt{tr(\Sigma)}=\sqrt{\sum_i \sigma_i^2} AF=tr(AHA) =tr(UΣU1) =tr(U1UΣ) =tr(Σ) =iσi2
      • 定理5:设 A ∈ C n n × n A\in C^{n\times n}_n ACnn×n,则 ∣ ∣ A − 1 ∣ ∣ F = ∑ i 1 / σ i 2 ||A^{-1}||_F=\sqrt{\sum_i 1/\sigma_i^2} A1F=i1/σi2 ,其中 σ 1 , σ 2 , ⋯   , σ n \sigma_1,\sigma_2,\cdots,\sigma_n σ1,σ2,,σn A A A的奇异值(重奇异值按重数算)
        证明:
        由逆矩阵的奇异值与原矩阵的奇异值的关系以及定理4直接可得。
        【注】逆矩阵的奇异值与原矩阵的奇异值的关系见链接

结合定理3和定理4的结论,借此机会总结一下矩阵的特征值和奇异值之间的关系:
A ∈ C n × n A\in C^{n\times n} ACn×n A A A的特征值按照模从小到大排序为 λ 1 , λ 2 , . . . , λ n \lambda_1,\lambda_2,...,\lambda_n λ1,λ2,...,λn A A A的奇异值按照从小到大排序为 σ 1 , σ 2 , . . . , σ n \sigma_1,\sigma_2,...,\sigma_n σ1,σ2,...,σn,则有如下结论

  1. ∑ i σ i 2 ⩾ ∑ i ∣ λ i ∣ 2 \sum_i \sigma_i^2\geqslant \sum_i |\lambda_i|^2 iσi2iλi2
  2. ∑ i σ i 2 = ∑ i ∣ λ i ∣ 2 \sum_i \sigma_i^2=\sum_i |\lambda_i|^2 iσi2=iλi2的充要条件为 A A A是正规矩阵
  3. σ i = ∣ λ i ∣ , i = 1 , 2 , . . . , n \sigma_i=|\lambda_i|,i=1,2,...,n σi=λi,i=1,2,...,n的充要条件为 A A A是正规矩阵

注意,结论3的充分性在前面的博客文章中已经证明,必要性进行简单分析即可:如果 σ i = ∣ λ i ∣ , i = 1 , 2 , . . . , n \sigma_i=|\lambda_i|,i=1,2,...,n σi=λi,i=1,2,...,n,那么 ∑ i σ i 2 = ∑ i ∣ λ i ∣ 2 \sum_i \sigma_i^2=\sum_i |\lambda_i|^2 iσi2=iλi2,于是根据结论2知 A A A是正规矩阵。

  • 诱导范数(算子范数)
    顾名思义,诱导范数不是用代数式直接定义的,而是“诱导”过来的,具体地说,是由向量的 l p l_p lp范数诱导的。回顾一下向量的 l p l_p lp范数:

    • 定义3: ∣ ∣ x ∣ ∣ p = ( ∑ i = 1 m ∣ x i ∣ p ) 1 p , p ∈ R ∧ p ⩾ 1 ||x||_p=\Bigl(\sum_{i=1}^m|x_i|^p\Bigr)^{\frac{1}{p}},p\in{R}\land{}p\geqslant{1} xp=(i=1mxip)p1,pRp1
      前面的博客(链接)中还提到过 l ∞ l_{\infty} l范数,其实就是 l p l_p lp范数当p趋于正无穷时的极限。
    • 定义4: ∣ ∣ x ∣ ∣ ∞ = m a x ( ∣ x 1 ∣ , ∣ x 2 ∣ , ⋯   , ∣ x m ∣ ) ||x||_\infty=max(|x_1|,|x_2|,\cdots,|x_m|) x=max(x1,x2,,xm)
    • 定义5:矩阵 A ∈ F m × n A\in F^{m\times n} AFm×n的P范数(诱导范数)定义为 ∣ ∣ A ∣ ∣ p = max ⁡ x ≠ 0 ∣ ∣ A x ∣ ∣ p ∣ ∣ x ∣ ∣ p , p ∈ R ∧ p ⩾ 1 ||A||_p=\max_{x\neq 0} \frac{||Ax||_p}{||x||_p}, p\in{R}\land{}p\geqslant{1} Ap=x=0maxxpAxp,pRp1
      【注1】值得注意的是,当 A A A是一个列向量时,定义式中的 x x x成了一个标量,分子分母可共同约去 ∣ x ∣ |x| x,此时矩阵的 p p p范数就退化成了向量的 l p l_p lp范数。因此矩阵的P范数可看做是向量的 l p l_p lp范数在矩阵上的推广。
      【注2】由定义显然易见单位矩阵的诱导范数是1。
    • 定理6:矩阵的诱导范数满足四条范数公理
      证:
      [非负性] 显然 ∣ ∣ O ∣ ∣ p = 0 ||O||_p=0 Op=0。对于 A ≠ O A\neq O A=O,一定存在 A A A的一个元素 a i j ≠ 0 a_{ij}\neq 0 aij=0,设 A j A_j Aj表示 A A A的第j列, e j e_j ej表示第j个基本向量(第j个元素为1,其他元素为0),则 ∣ ∣ A ∣ ∣ p ⩾ ∣ ∣ A e j ∣ ∣ p ∣ ∣ e j ∣ ∣ p = ∣ ∣ A j ∣ ∣ p ∣ ∣ e j ∣ ∣ p ||A||_p\geqslant\frac{||Ae_j||_p}{||e_j||_p}=\frac{||A_j||_p}{||e_j||_p} ApejpAejp=ejpAjp,因为 A j ≠ 0 A_j\neq0 Aj=0,所以由 l p l_p lp范数的性质知 ∣ ∣ A j ∣ ∣ p > 0 ||A_j||_p>0 Ajp>0,故 ∣ ∣ A ∣ ∣ p > 0 ||A||_p>0 Ap>0
      [齐次性] 略。
      [三角不等式] ∣ ∣ A + B ∣ ∣ p = max ⁡ x ≠ 0 ∣ ∣ A x + B x ∣ ∣ p ∣ ∣ x ∣ ∣ p ⩽ max ⁡ x ≠ 0 ∣ ∣ A x ∣ ∣ p + ∣ ∣ B x ∣ ∣ p ∣ ∣ x ∣ ∣ p ⩽ max ⁡ x ≠ 0 ∣ ∣ A x ∣ ∣ p ∣ ∣ x ∣ ∣ p + max ⁡ x ≠ 0 ∣ ∣ B x ∣ ∣ p ∣ ∣ x ∣ ∣ p = ∣ ∣ A ∣ ∣ p + ∣ ∣ B ∣ ∣ p ||A+B||_p=\max_{x\neq 0} \frac{||Ax+Bx||_p}{||x||_p}\leqslant\max_{x\neq 0} \frac{||Ax||_p+||Bx||_p}{||x||_p}\leqslant\max_{x\neq 0} \frac{||Ax||_p}{||x||_p}+\max_{x\neq 0} \frac{||Bx||_p}{||x||_p}=||A||_p+||B||_p A+Bp=maxx=0xpAx+Bxpmaxx=0xpAxp+Bxpmaxx=0xpAxp+maxx=0xpBxp=Ap+Bp(证明用到了 l p l_p lp范数的三角不等式和上确界的性质)。
      [矩阵乘法的相容性] 先证明对任意 A ∈ F m × n , x ∈ F n A\in F^{m\times n},x\in F^n AFm×n,xFn ∣ ∣ A x ∣ ∣ p ⩽ ∣ ∣ A ∣ ∣ p ∣ ∣ x ∣ ∣ p ||Ax||_p\leqslant||A||_p||x||_p AxpApxp:若 x = 0 x=0 x=0显然成立,若 x ≠ 0 x\neq 0 x=0,则根据定义有 ∣ ∣ A ∣ ∣ p = max ⁡ y ≠ 0 ∣ ∣ A y ∣ ∣ p ∣ ∣ y ∣ ∣ p ⩾ ∣ ∣ A x ∣ ∣ p ∣ ∣ x ∣ ∣ p ||A||_p=\max_{y\neq 0} \frac{||Ay||_p}{||y||_p}\geqslant\frac{||Ax||_p}{||x||_p} Ap=maxy=0ypAypxpAxp,即 ∣ ∣ A x ∣ ∣ p ⩽ ∣ ∣ A ∣ ∣ p ∣ ∣ x ∣ ∣ p ||Ax||_p\leqslant||A||_p||x||_p AxpApxp也成立。再证明对矩阵乘法的相容性: ∣ ∣ A B ∣ ∣ p = max ⁡ x ≠ 0 ∣ ∣ A B x ∣ ∣ p ∣ ∣ x ∣ ∣ p ⩽ max ⁡ x ≠ 0 ∣ ∣ A ∣ ∣ p ∣ ∣ B x ∣ ∣ p ∣ ∣ x ∣ ∣ p = ∣ ∣ A ∣ ∣ p ∣ ∣ B ∣ ∣ p ||AB||_p=\max_{x\neq 0} \frac{||ABx||_p}{||x||_p}\leqslant\max_{x\neq 0} \frac{||A||_p||Bx||_p}{||x||_p}=||A||_p||B||_p ABp=maxx=0xpABxpmaxx=0xpApBxp=ApBp
  • 常用的诱导范数

    • 定理7:1范数 ∣ ∣ A ∣ ∣ 1 = max ⁡ j ∑ i = 1 m ∣ a i j ∣ , j = 1 , 2 , . . . , n ||A||_1=\max_j \sum_{i=1}^m |a_{ij}|,j=1,2,...,n A1=maxji=1maij,j=1,2,...,n(又叫列和范数)
      证明:
      根据定义, ∣ ∣ A ∣ ∣ 1 = max ⁡ x ≠ 0 ∣ ∣ A x ∣ ∣ 1 ∣ ∣ x ∣ ∣ 1 ||A||_1=\max_{x\neq 0} \frac{||Ax||_1}{||x||_1} A1=maxx=0x1Ax1。由于 ∣ ∣ A x ∣ ∣ 1 ∣ ∣ x ∣ ∣ 1 = ∑ i = 1 m ∣ ∑ j = 1 n a i j x j ∣ ∑ j = 1 n ∣ x j ∣ ⩽ ∑ i = 1 m ∑ j = 1 n ∣ a i j ∣ ∣ x j ∣ ∑ j = 1 n ∣ x j ∣ = ∑ j = 1 n ∑ i = 1 m ∣ a i j ∣ ∣ x j ∣ ∑ j = 1 n ∣ x j ∣ ⩽ m a x j ∑ i = 1 m ∣ a i j ∣ ∑ j = 1 n ∣ x j ∣ ∑ j = 1 n ∣ x j ∣ = max ⁡ j ∑ i = 1 m ∣ a i j ∣ \begin{aligned} \frac{||Ax||_1}{||x||_1}&=\frac{\sum_{i=1}^m|\sum_{j=1}^na_{ij}x_j|}{\sum_{j=1}^n|x_j| }\\&\leqslant \frac{\sum_{i=1}^m\sum_{j=1}^n|a_{ij}||x_j|}{\sum_{j=1}^n|x_j|}\\&=\frac{\sum_{j=1}^n\sum_{i=1}^m|a_{ij}||x_j|}{\sum_{j=1}^n|x_j|}\\&\leqslant \frac{max_j\sum_{i=1}^m|a_{ij}|\sum_{j=1}^n|x_j|}{\sum_{j=1}^n|x_j|}\\&=\max_j \sum_{i=1}^m |a_{ij}| \end{aligned} x1Ax1=j=1nxji=1mj=1naijxjj=1nxji=1mj=1naijxj=j=1nxjj=1ni=1maijxjj=1nxjmaxji=1maijj=1nxj=jmaxi=1maij这说明 max ⁡ j ∑ i = 1 m ∣ a i j ∣ \max_j \sum_{i=1}^m |a_{ij}| maxji=1maij ∣ ∣ A x ∣ ∣ 1 ∣ ∣ x ∣ ∣ 1 \frac{||Ax||_1}{||x||_1} x1Ax1的一个上界。构造如下的向量 x ′ ≠ 0 x'\neq 0 x=0,使得 ∣ ∣ A x ′ ∣ ∣ 1 ∣ ∣ x ′ ∣ ∣ 1 = max ⁡ j ∑ i = 1 m ∣ a i j ∣ \frac{||Ax'||_1}{||x'||_1}=\max_j \sum_{i=1}^m |a_{ij}| x1Ax1=maxji=1maij
      设当 j = k j=k j=k ∑ i = 1 m ∣ a i j ∣ \sum_{i=1}^m |a_{ij}| i=1maij取得最大值,令 x ′ x' x的第k个分量为1,其他分量为0,则易验证 ∣ ∣ A x ′ ∣ ∣ 1 ∣ ∣ x ′ ∣ ∣ 1 = max ⁡ j ∑ i = 1 m ∣ a i j ∣ \frac{||Ax'||_1}{||x'||_1}=\max_j \sum_{i=1}^m |a_{ij}| x1Ax1=maxji=1maij。这就证明了 ∣ ∣ A ∣ ∣ 1 = max ⁡ j ∑ i = 1 m ∣ a i j ∣ , j = 1 , 2 , . . . , n ||A||_1=\max_j \sum_{i=1}^m |a_{ij}|,j=1,2,...,n A1=maxji=1maij,j=1,2,...,n
    • 定理8:2范数 ∣ ∣ A ∣ ∣ 2 = σ m a x ||A||_2=\sigma_{max} A2=σmax(又叫谱范数),其中 σ m a x \sigma_{max} σmax是A的最大奇异值
      证明:(请参考矩阵的正定性中矩阵不等式部分的内容)
      根据定义, ∣ ∣ A ∣ ∣ 2 = max ⁡ x ≠ 0 ∣ ∣ A x ∣ ∣ 2 ∣ ∣ x ∣ ∣ 2 = max ⁡ x ≠ 0 x H A H A x x H x ||A||_2=\max_{x\neq 0} \frac{||Ax||_2}{||x||_2}=\max_{x\neq 0}\sqrt{\frac{x^HA^HAx}{x^Hx}} A2=maxx=0x2Ax2=maxx=0xHxxHAHAx 。考虑半正定矩阵 A H A A^HA AHA的一个谱分解 A H A = U Σ U H A^HA=U\Sigma U^H AHA=UΣUH,其中 Σ = d i a g ( λ 1 , λ 2 , . . . λ n ) \Sigma = diag(\lambda_1, \lambda_2,...\lambda_n) Σ=diag(λ1,λ2,...λn)满足 λ 1 ⩾ λ 2 ⩾ . . . ⩾ λ n ⩾ 0 \lambda_1\geqslant\lambda_2\geqslant...\geqslant\lambda_n\geqslant 0 λ1λ2...λn0,则有矩阵不等式 Σ ⩽ λ 1 I \Sigma\leqslant\lambda_1I Σλ1I成立。于是 x H A H A x x H x = x H U Σ U H x x H x = ( U H x ) H Σ ( U H x ) ( U H x ) H ( U H x ) ⩽ ( U H x ) H λ 1 I ( U H x ) ( U H x ) H ( U H x ) = λ 1 = σ m a x \begin{aligned}\sqrt{\frac{x^HA^HAx}{x^Hx}}&=\sqrt{\frac{x^HU\Sigma U^Hx}{x^Hx}}\\&=\sqrt{\frac{(U^Hx)^H\Sigma(U^Hx)}{(U^Hx)^H(U^Hx)}}\\&\leqslant\sqrt{\frac{(U^Hx)^H\lambda_1I(U^Hx)}{(U^Hx)^H(U^Hx)}}\\&=\sqrt{\lambda_1}=\sigma_{max}\end{aligned} xHxxHAHAx =xHxxHUΣUHx =(UHx)H(UHx)(UHx)HΣ(UHx) (UHx)H(UHx)(UHx)Hλ1I(UHx) =λ1 =σmax现构造向量 x ′ ≠ 0 x'\neq 0 x=0使得 ∣ ∣ A x ′ ∣ ∣ 2 ∣ ∣ x ′ ∣ ∣ 2 = σ m a x \frac{||Ax'||_2}{||x'||_2}=\sigma_{max} x2Ax2=σmax
      显然只要 U H x ′ = ( 1 , 0 , . . , 0 ) T U^Hx'=(1,0,..,0)^T UHx=(1,0,..,0)T就有 ( U H x ′ ) H Σ ( U H x ′ ) = λ 1 (U^Hx')^H\Sigma(U^Hx')=\lambda_1 (UHx)HΣ(UHx)=λ1 ( x ′ ) H x ′ = 1 (x')^Hx'=1 (x)Hx=1,故构造 x ′ = U ( 1 , 0 , . . , 0 ) T x'=U(1,0,..,0)^T x=U(1,0,..,0)T,就有 ∣ ∣ A x ′ ∣ ∣ 2 ∣ ∣ x ′ ∣ ∣ 2 = σ m a x \frac{||Ax'||_2}{||x'||_2}=\sigma_{max} x2Ax2=σmax。这就证明了 ∣ ∣ A ∣ ∣ 2 = σ m a x ||A||_2=\sigma_{max} A2=σmax
      【推论1】若A可逆,则 ∣ ∣ A − 1 ∣ ∣ 2 = 1 / σ m i n ||A^{-1}||_2=1/\sigma_{min} A12=1/σmin,其中 σ m i n \sigma_{min} σmin是A的最小奇异值
      证明:(请参考链接中逆矩阵的奇异值部分)
      A A A的最小奇异值为 σ m i n \sigma_{min} σmin,由 A − 1 A^{-1} A1 A A A的奇异值的关系知, 1 / σ m i n 1/\sigma_{min} 1/σmin A − 1 A^{-1} A1的最大奇异值。故 ∣ ∣ A − 1 ∣ ∣ 2 = 1 / σ m i n ||A^{-1}||_2=1/\sigma_{min} A12=1/σmin
      【推论2】若A是正规矩阵,则 ∣ ∣ A ∣ ∣ 2 = ∣ λ ∣ ||A||_2=|\lambda| A2=λ,其中 λ \lambda λ是A的模最大的特征值;若A还可逆,则 ∣ ∣ A − 1 ∣ ∣ 2 = 1 / ∣ λ ′ ∣ ||A^{-1}||_2=1/|\lambda'| A12=1/λ,其中 λ ′ \lambda' λ是A的模最小的特征值。
      证明:由正规矩阵的特征值与奇异值的关系即证(见链接)。
    • 定理9: ∞ \infty 范数 ∣ ∣ A ∣ ∣ ∞ = max ⁡ i ∑ j = 1 n ∣ a i j ∣ , i = 1 , 2 , . . . , m ||A||_{\infty}=\max_i \sum_{j=1}^n |a_{ij}|,i=1,2,...,m A=maxij=1naij,i=1,2,...,m(又叫行和范数)
      证明:
      A = O A=O A=O,则结论显然成立。下面证明 A ≠ O A\neq O A=O的情况:
      根据定义, ∣ ∣ A ∣ ∣ ∞ = max ⁡ x ≠ 0 ∣ ∣ A x ∣ ∣ ∞ ∣ ∣ x ∣ ∣ ∞ ||A||_{\infty}=\max_{x\neq 0} \frac{||Ax||_{\infty}}{||x||_{\infty}} A=maxx=0xAx ∣ ∣ A x ∣ ∣ ∞ ∣ ∣ x ∣ ∣ ∞ = max ⁡ i ∣ ∑ j = 1 n a i j x j ∣ max ⁡ j ∣ x j ∣ ⩽ max ⁡ i ∑ j = 1 n ∣ a i j ∣ ∣ x j ∣ max ⁡ j ∣ x j ∣ ⩽ max ⁡ i ∑ j = 1 n ∣ a i j ∣ max ⁡ j ∣ x j ∣ max ⁡ j ∣ x j ∣ = max ⁡ i ∑ j = 1 n ∣ a i j ∣ \begin{aligned}\frac{||Ax||_{\infty}}{||x||_{\infty}}&=\frac{\max_i|\sum_{j=1}^na_{ij}x_j|}{\max_j|x_j|}\\&\leqslant \frac{\max_i\sum_{j=1}^n|a_{ij}||x_j|}{\max_j|x_j|}\\&\leqslant \frac{\max_i\sum_{j=1}^n|a_{ij}|\max_j|x_j|}{\max_j|x_j|}\\&=\max_i\sum_{j=1}^n|a_{ij}|\end{aligned} xAx=maxjxjmaxij=1naijxjmaxjxjmaxij=1naijxjmaxjxjmaxij=1naijmaxjxj=imaxj=1naij现构造列向量 x ′ ≠ 0 x'\neq 0 x=0使得 ∣ ∣ A x ′ ∣ ∣ ∞ ∣ ∣ x ′ ∣ ∣ ∞ = max ⁡ i ∑ j = 1 n ∣ a i j ∣ \frac{||Ax'||_{\infty}}{||x'||_{\infty}}=\max_i\sum_{j=1}^n|a_{ij}| xAx=maxij=1naij
      设当 i = k i=k i=k ∑ j = 1 n ∣ a i j ∣ \sum_{j=1}^n|a_{ij}| j=1naij取得最大值,令 x ′ x' x满足 x j ′ = { a k j ‾ ∣ a k j ∣ a k j ≠ 0 0 a k j = 0 x'_j=\begin{cases}\frac{\overline{a_{kj}}}{|a_{kj}|}&a_{kj}\neq 0\\0&a_{kj}=0\end{cases} xj={akjakj0akj=0akj=0(注意,因为 A ≠ O A\neq O A=O,所以至少存在一个 j j j使得 a k j ≠ 0 a_{kj}\neq 0 akj=0)则 a k x ′ = ∑ j = 1 n ∣ a k j ∣ = max ⁡ i ∑ j = 1 n ∣ a i j ∣ a_kx'=\sum_{j=1}^n|a_{kj}|=\max_i\sum_{j=1}^n|a_{ij}| akx=j=1nakj=maxij=1naij ∣ ∣ x ′ ∣ ∣ ∞ = 1 ||x'||_{\infty}=1 x=1。因为 ∣ a i x ′ ∣ = ∣ ∑ a k j ≠ 0 a i j a k j ‾ ∣ a k j ∣ ∣ ⩽ ∑ a k j ≠ 0 ∣ a i j ∣ ∣ a k j ∣ ∣ a k j ∣ − 1 = ∑ a k j ≠ 0 ∣ a i j ∣ ⩽ ∑ j = 1 n ∣ a i j ∣ ⩽ ∑ j = 1 n ∣ a k j ∣ = ∣ a k x ′ ∣ \begin{aligned}|a_ix'|&=|\sum_{a_{kj}\neq 0}a_{ij}\frac{\overline{a_{kj}}}{|a_{kj}|}|\\&\leqslant\sum_{a_{kj}\neq 0}|a_{ij}||a_{kj}||a_{kj}|^{-1}\\&=\sum_{a_{kj}\neq 0}|a_{ij}|\\&\leqslant\sum_{j=1}^n|a_{ij}|\\&\leqslant\sum_{j=1}^n|a_{kj}|\\&=|a_kx'|\end{aligned} aix=akj=0aijakjakjakj=0aijakjakj1=akj=0aijj=1naijj=1nakj=akx所以 ∣ ∣ A x ′ ∣ ∣ ∞ = ∣ a k x ′ ∣ ||Ax'||_{\infty}=|a_kx'| Ax=akx ∣ ∣ A x ′ ∣ ∣ ∞ ∣ ∣ x ′ ∣ ∣ ∞ = ∣ a k x ′ ∣ = max ⁡ i ∑ j = 1 n ∣ a i j ∣ \frac{||Ax'||_{\infty}}{||x'||_{\infty}}=|a_kx'|=\max_i\sum_{j=1}^n|a_{ij}| xAx=akx=maxij=1naij
      这就证明了 ∣ ∣ A ∣ ∣ ∞ = max ⁡ i ∑ j = 1 n ∣ a i j ∣ , i = 1 , 2 , . . . , m ||A||_{\infty}=\max_i \sum_{j=1}^n |a_{ij}|,i=1,2,...,m A=maxij=1naij,i=1,2,...,m
  • 其它范数

    • 定义6:Mahalanobis范数 ∣ ∣ A ∣ ∣ Ω = t r ( A H Ω A ) ||A||_{\Omega}=\sqrt{tr(A^H\Omega A)} AΩ=tr(AHΩA) 其中 Ω \Omega Ω是一个正定矩阵,有点类似于向量的二次范数。

矩阵的条件数

  • 定义7:设 A ∈ F n n × n A\in{F^{n\times n}_n} AFnn×n,A的条件数定义为 c o n d ( A ) = ∣ ∣ A ∣ ∣ ∣ ∣ A − 1 ∣ ∣ cond(A)=||A||||A^{-1}|| cond(A)=AA1,其中 ∣ ∣ ∙ ∣ ∣ ||\bullet|| 是定义在 F n × n F^{n\times n} Fn×n上的矩阵范数

根据定义来看,任意一种矩阵范数都可以用来定义条件数。矩阵的条件数具有如下性质:(以下均设A,B是同阶可逆矩阵)

  • 定理10:
    (1) c o n d ( A ) ⩾ 1 cond(A)\geqslant 1 cond(A)1
    证明: c o n d ( A ) = ∣ ∣ A ∣ ∣ ∣ ∣ A − 1 ∣ ∣ ⩾ ∣ ∣ I ∣ ∣ ⩾ 1 cond(A)=||A||||A^{-1}||\geqslant ||I||\geqslant 1 cond(A)=AA1I1
    (2) c o n d ( A ) = c o n d ( A − 1 ) cond(A)=cond(A^{-1}) cond(A)=cond(A1)
    (3) c o n d ( k A ) = c o n d ( A ) , k ≠ 0 , k ∈ F cond(kA)=cond(A),k\neq 0,k\in F cond(kA)=cond(A),k=0,kF
    (4) c o n d ( A B ) ⩽ c o n d ( A ) c o n d ( B ) cond(AB)\leqslant cond(A)cond(B) cond(AB)cond(A)cond(B)
    证明: c o n d ( A B ) = ∣ ∣ A B ∣ ∣ ∣ ∣ B − 1 A − 1 ∣ ∣ ⩽ ∣ ∣ A ∣ ∣ ∣ ∣ B ∣ ∣ ∣ ∣ B − 1 ∣ ∣ ∣ ∣ A − 1 ∣ ∣ = c o n d ( A ) c o n d ( B ) cond(AB)=||AB||||B^{-1}A^{-1}||\leqslant ||A||||B||||B^{-1}||||A^{-1}||=cond(A)cond(B) cond(AB)=ABB1A1ABB1A1=cond(A)cond(B)

下面是四种常用的条件数(分别对应上面介绍的四种矩阵范数):

  • 定义8:
    (1) c o n d 1 ( A ) = ∣ ∣ A ∣ ∣ 1 ∣ ∣ A − 1 ∣ ∣ 1 cond_1(A)=||A||_1||A^{-1}||_1 cond1(A)=A1A11(1-条件数)
    (2) c o n d 2 ( A ) = ∣ ∣ A ∣ ∣ 2 ∣ ∣ A − 1 ∣ ∣ 2 cond_2(A)=||A||_2||A^{-1}||_2 cond2(A)=A2A12(2-条件数)
    (3) c o n d ∞ ( A ) = ∣ ∣ A ∣ ∣ ∞ ∣ ∣ A − 1 ∣ ∣ ∞ cond_{\infty}(A)=||A||_{\infty}||A^{-1}||_{\infty} cond(A)=AA1 ∞ \infty -条件数)
    (4) c o n d F ( A ) = ∣ ∣ A ∣ ∣ F ∣ ∣ A − 1 ∣ ∣ F cond_F(A)=||A||_F||A^{-1}||_F condF(A)=AFA1F(Frobenius范数的条件数)
    上面四种条件数在matlab中的调用分别为cond(A,1),cond(A,2),cond(A,inf),cond(A,‘fro’)

2-条件数可以通过矩阵的奇异值分解计算得到,这是因为有如下计算式:

  • 定理11: c o n d 2 ( A ) = σ m a x σ m i n cond_2(A)=\frac{\sigma_{max}}{\sigma_{min}} cond2(A)=σminσmax,其中 σ m a x \sigma_{max} σmax是A的最大奇异值, σ m i n \sigma_{min} σmin是A的最小奇异值
    证明: c o n d 2 ( A ) = ∣ ∣ A ∣ ∣ 2 ∣ ∣ A − 1 ∣ ∣ 2 cond_2(A)=||A||_2||A^{-1}||_2 cond2(A)=A2A12,定理8及其推论已经证明 ∣ ∣ A ∣ ∣ 2 = σ m a x ||A||_2=\sigma_{max} A2=σmax ∣ ∣ A − 1 ∣ ∣ 2 = 1 / σ m i n ||A^{-1}||_2=1/\sigma_{min} A12=1/σmin,所以 c o n d 2 ( A ) = σ m a x σ m i n cond_2(A)=\frac{\sigma_{max}}{\sigma_{min}} cond2(A)=σminσmax

当A是正规矩阵时,还有如下计算式:

  • 定理12: c o n d 2 ( A ) = ∣ λ m a x ∣ ∣ λ m i n ∣ cond_2(A)=\frac{|\lambda_{max}|}{|\lambda_{min}|} cond2(A)=λminλmax,其中 λ m a x \lambda_{max} λmax是A的模最大的特征值, λ m i n \lambda_{min} λmin是A的模最小的特征值。
    (由正规矩阵的特征值与奇异值的关系可知 σ m a x = ∣ λ m a x ∣ \sigma_{max}=|\lambda_{max}| σmax=λmax σ m i n = ∣ λ m i n ∣ \sigma_{min}=|\lambda_{min}| σmin=λmin,证明参考链接

由上面的计算式可以导出2-条件数的如下性质:

  • 定理13:若U为酋矩阵,则 c o n d 2 ( U ) = 1 cond_2(U)=1 cond2(U)=1
    c o n d 2 ( A U ) = c o n d 2 ( U A ) = c o n d 2 ( A ) cond_2(AU)=cond_2(UA)=cond_2(A) cond2(AU)=cond2(UA)=cond2(A)
    证明:由于酋矩阵都是正规矩阵,故 c o n d 2 ( U ) = ∣ λ m a x ∣ ∣ λ m i n ∣ cond_2(U)=\frac{|\lambda_{max}|}{|\lambda_{min}|} cond2(U)=λminλmax,而酋矩阵的任意特征值的模长为1(定理2),故 c o n d 2 ( U ) = 1 cond_2(U)=1 cond2(U)=1。由于奇异值具有酋不变性(旋转不变性),故 A U AU AU U A UA UA A A A的奇异值相同,所以 c o n d 2 ( A U ) = c o n d 2 ( U A ) = c o n d 2 ( A ) cond_2(AU)=cond_2(UA)=cond_2(A) cond2(AU)=cond2(UA)=cond2(A)

F-条件数也可以根据矩阵的奇异值(或 A H A A^HA AHA的谱分解)计算得出,有如下计算式:

  • 定理14:设 A ∈ C n n × n A\in C^{n\times n}_n ACnn×n σ 1 , σ 2 , ⋯   , σ n \sigma_1,\sigma_2,\cdots,\sigma_n σ1,σ2,,σn A A A的全部奇异值(重奇异值按重数算),则 c o n d F ( A ) = ∑ i σ i 2 ∑ i 1 / σ i 2 cond_F(A)=\sqrt{\sum_i \sigma_i^2\sum_i 1/\sigma_i^2} condF(A)=iσi2i1/σi2
    证明:根据定理4和定理5有 ∣ ∣ A ∣ ∣ F = ∑ i σ i 2 ||A||_F=\sqrt{\sum_i \sigma_i^2} AF=iσi2 以及 ∣ ∣ A − 1 ∣ ∣ F = ∑ i 1 / σ i 2 ||A^{-1}||_F=\sqrt{\sum_i 1/\sigma_i^2} A1F=i1/σi2

误差估计

条件数可以给出误差估计的界,从而能够用于衡量一个问题是良态的还是病态的。下面以两个常见的问题为例(矩阵求逆和线性方程组求解),说明条件数在误差估计方面的作用。
【注】下面出现的条件数均由矩阵的算子范数定义,即 c o n d ( A ) = ∣ ∣ A ∣ ∣ ∣ ∣ A − 1 ∣ ∣ cond(A)=||A||||A^{-1}|| cond(A)=AA1,其中 ∣ ∣ ∙ ∣ ∣ ||\bullet|| 是矩阵的任意算子范数(诱导范数)。

  • 引理:设 ∣ ∣ ∙ ∣ ∣ ||\bullet|| 是矩阵的任意一个诱导范数。若 ∣ ∣ B ∣ ∣ < 1 ||B||\lt 1 B<1,则 I − B I-B IB可逆,且有 ∣ ∣ ( I − B ) − 1 ∣ ∣ ⩽ 1 1 − ∣ ∣ B ∣ ∣ ||(I-B)^{-1}||\leqslant\frac{1}{1-||B||} (IB)11B1
    证明:
    先用反证法证明 I − B I-B IB可逆:假设 I − B I-B IB不可逆,则齐次线性方程组 ( I − B ) x = 0 (I-B)x=0 (IB)x=0有非零解,于是 0 = ∣ ∣ 0 ∣ ∣ = ∣ ∣ ( I − B ) x ∣ ∣ = ∣ ∣ x − B x ∣ ∣ ⩾ ∣ ∣ x ∣ ∣ − ∣ ∣ B x ∣ ∣ ⩾ ∣ ∣ x ∣ ∣ − ∣ ∣ B ∣ ∣ ∣ ∣ x ∣ ∣ = ( 1 − ∣ ∣ B ∣ ∣ ) ∣ ∣ x ∣ ∣ > 0 \begin{aligned}0&=||0||=||(I-B)x||=||x-Bx||\\&\geqslant||x||-||Bx||\geqslant||x||-||B||||x||\\&=(1-||B||)||x||\gt 0\end{aligned} 0=0=(IB)x=xBxxBxxBx=(1B)x>0矛盾,故 I − B I-B IB可逆。
    I − B I-B IB可逆,有 1 = ∣ ∣ I ∣ ∣ = ∣ ∣ ( I − B ) ( I − B ) − 1 ∣ ∣ = ∣ ∣ ( I − B ) − 1 − B ( I − B ) − 1 ∣ ∣ ⩾ ∣ ∣ ( I − B ) − 1 ∣ ∣ − ∣ ∣ B ( I − B ) − 1 ∣ ∣ ⩾ ∣ ∣ ( I − B ) − 1 ∣ ∣ − ∣ ∣ B ∣ ∣ ∣ ∣ ( I − B ) − 1 ∣ ∣ = ( 1 − ∣ ∣ B ∣ ∣ ) ∣ ∣ ( I − B ) − 1 ∣ ∣ \begin{aligned}1&=||I||=||(I-B)(I-B)^{-1}||=||(I-B)^{-1}-B(I-B)^{-1}||\\&\geqslant||(I-B)^{-1}||-||B(I-B)^{-1}||\geqslant||(I-B)^{-1}||-||B||||(I-B)^{-1}||\\&=(1-||B||)||(I-B)^{-1}||\end{aligned} 1=I=(IB)(IB)1=(IB)1B(IB)1(IB)1B(IB)1(IB)1B(IB)1=(1B)(IB)1于是 ∣ ∣ ( I − B ) − 1 ∣ ∣ ⩽ 1 1 − ∣ ∣ B ∣ ∣ ||(I-B)^{-1}||\leqslant\frac{1}{1-||B||} (IB)11B1
条件数对矩阵求逆的误差估计
  • 定理15:设 A ∈ F n n × n A\in F^{n\times n}_n AFnn×n δ A ∈ F n × n \delta A\in F^{n\times n} δAFn×n,若 ∣ ∣ A − 1 δ A ∣ ∣ < 1 ||A^{-1}\delta A||<1 A1δA<1,则 A + δ A A+\delta A A+δA可逆,且下式成立: ∣ ∣ A − 1 − ( A + δ A ) − 1 ∣ ∣ ∣ ∣ A − 1 ∣ ∣ ⩽ ∣ ∣ A − 1 δ A ∣ ∣ 1 − ∣ ∣ A − 1 δ A ∣ ∣ \frac{||A^{-1}-(A+\delta A)^{-1}||}{||A^{-1}||}\leqslant\frac{||A^{-1}\delta A||}{1-||A^{-1}\delta A||} A1A1(A+δA)11A1δAA1δA
    证明:
    因为 ∣ ∣ − A − 1 δ A ∣ ∣ = ∣ ∣ A − 1 δ A ∣ ∣ < 1 ||-A^{-1}\delta A||=||A^{-1}\delta A||<1 A1δA=A1δA<1,故由引理知 I + A − 1 δ A = I − ( − A − 1 δ A ) I+A^{-1}\delta A=I-(-A^{-1}\delta A) I+A1δA=I(A1δA)可逆,且有 ∣ ∣ ( I + A − 1 δ A ) − 1 ∣ ∣ ⩽ 1 1 − ∣ ∣ A − 1 δ A ∣ ∣ ||(I+A^{-1}\delta A)^{-1}||\leqslant\frac{1}{1-||A^{-1}\delta A||} (I+A1δA)11A1δA1
    因为 A + δ A = A ( I + A − 1 δ A ) A+\delta A=A(I+A^{-1}\delta A) A+δA=A(I+A1δA),故 A + δ A A+\delta A A+δA也是可逆的,且 A − 1 − ( A + δ A ) − 1 = A − 1 − ( I + A − 1 δ A ) − 1 A − 1 = ( I − ( I + A − 1 δ A ) − 1 ) A − 1 \begin{aligned}A^{-1}-(A+\delta A)^{-1}&=A^{-1}-(I+A^{-1}\delta A)^{-1}A^{-1}\\&=(I-(I+A^{-1}\delta A)^{-1})A^{-1}\end{aligned} A1(A+δA)1=A1(I+A1δA)1A1=(I(I+A1δA)1)A1注意到 ( I + A − 1 δ A ) ( I − ( I + A − 1 δ A ) − 1 ) = A − 1 δ A (I+A^{-1}\delta A)(I-(I+A^{-1}\delta A)^{-1})=A^{-1}\delta A (I+A1δA)(I(I+A1δA)1)=A1δA,即 I − ( I + A − 1 δ A ) − 1 = ( I + A − 1 δ A ) − 1 A − 1 δ A I-(I+A^{-1}\delta A)^{-1}=(I+A^{-1}\delta A)^{-1}A^{-1}\delta A I(I+A1δA)1=(I+A1δA)1A1δA,于是 ∣ ∣ A − 1 − ( A + δ A ) − 1 ∣ ∣ ∣ ∣ A − 1 ∣ ∣ ⩽ ∣ ∣ I − ( I + A − 1 δ A ) − 1 ∣ ∣ = ∣ ∣ ( I + A − 1 δ A ) − 1 A − 1 δ A ∣ ∣ ⩽ ∣ ∣ ( I + A − 1 δ A ) − 1 ∣ ∣ ∣ ∣ A − 1 δ A ∣ ∣ ⩽ ∣ ∣ A − 1 δ A ∣ ∣ 1 − ∣ ∣ A − 1 δ A ∣ ∣ \begin{aligned}\frac{||A^{-1}-(A+\delta A)^{-1}||}{||A^{-1}||}&\leqslant||I-(I+A^{-1}\delta A)^{-1}||\\&=||(I+A^{-1}\delta A)^{-1}A^{-1}\delta A||\\&\leqslant||(I+A^{-1}\delta A)^{-1}||||A^{-1}\delta A||\\&\leqslant\frac{||A^{-1}\delta A||}{1-||A^{-1}\delta A||}\end{aligned} A1A1(A+δA)1I(I+A1δA)1=(I+A1δA)1A1δA(I+A1δA)1A1δA1A1δAA1δA证毕。
    【注】当矩阵 A A A的误差 δ A \delta A δA足够小,即 ∣ ∣ δ A ∣ ∣ ||\delta A|| δA足够小时,能够满足 ∣ ∣ A − 1 ∣ ∣ ∣ ∣ δ A ∣ ∣ < 1 ||A^{-1}||||\delta A||\lt 1 A1δA<1,则 ∣ ∣ A − 1 δ A ∣ ∣ ⩽ ∣ ∣ A − 1 ∣ ∣ ∣ ∣ δ A ∣ ∣ < 1 ||A^{-1}\delta A||\leqslant||A^{-1}||||\delta A||<1 A1δAA1δA<1,即定理的条件满足。

  • 定理16:设 A ∈ F n n × n A\in F^{n\times n}_n AFnn×n δ A ∈ F n × n \delta A\in F^{n\times n} δAFn×n,若 ∣ ∣ A − 1 δ A ∣ ∣ < 1 ||A^{-1}\delta A||<1 A1δA<1,则下式成立: ∣ ∣ A − 1 − ( A + δ A ) − 1 ∣ ∣ ∣ ∣ A − 1 ∣ ∣ ⩽ c o n d ( A ) 1 − c o n d ( A ) ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ \frac{||A^{-1}-(A+\delta A)^{-1}||}{||A^{-1}||}\leqslant\frac{cond(A)}{1-cond(A)\frac{||\delta A||}{||A||}}\frac{||\delta A||}{||A||} A1A1(A+δA)11cond(A)AδAcond(A)AδA
    证明:
    只需证明 ∣ ∣ A − 1 δ A ∣ ∣ 1 − ∣ ∣ A − 1 δ A ∣ ∣ ⩽ c o n d ( A ) 1 − c o n d ( A ) ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ \frac{||A^{-1}\delta A||}{1-||A^{-1}\delta A||}\leqslant\frac{cond(A)}{1-cond(A)\frac{||\delta A||}{||A||}}\frac{||\delta A||}{||A||} 1A1δAA1δA1cond(A)AδAcond(A)AδA即可。 ∣ ∣ A − 1 δ A ∣ ∣ 1 − ∣ ∣ A − 1 δ A ∣ ∣ ⩽ ∣ ∣ A − 1 ∣ ∣ ∣ ∣ δ A ∣ ∣ 1 − ∣ ∣ A − 1 ∣ ∣ ∣ ∣ δ A ∣ ∣ = ∣ ∣ A − 1 ∣ ∣ ∣ ∣ A ∣ ∣ 1 − ∣ ∣ A − 1 ∣ ∣ ∣ ∣ A ∣ ∣ ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ = c o n d ( A ) 1 − c o n d ( A ) ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ \begin{aligned}\frac{||A^{-1}\delta A||}{1-||A^{-1}\delta A||}&\leqslant\frac{||A^{-1}||||\delta A||}{1-||A^{-1}||||\delta A||}\\&=\frac{||A^{-1}||||A||}{1-||A^{-1}||||A||\frac{||\delta A||}{||A||}}\frac{||\delta A||}{||A||}\\&=\frac{cond(A)}{1-cond(A)\frac{||\delta A||}{||A||}}\frac{||\delta A||}{||A||}\end{aligned} 1A1δAA1δA1A1δAA1δA=1A1AAδAA1AAδA=1cond(A)AδAcond(A)AδA得证。
    【注】显然,当相对误差项 ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ \frac{||\delta A||}{||A||} AδA固定时,矩阵的条件数 c o n d ( A ) cond(A) cond(A)越大,则矩阵求逆的相对误差 ∣ ∣ A − 1 − ( A + δ A ) − 1 ∣ ∣ ∣ ∣ A − 1 ∣ ∣ \frac{||A^{-1}-(A+\delta A)^{-1}||}{||A^{-1}||} A1A1(A+δA)1的上界越大,即该误差越“不可控”。这说明矩阵的条件数越大,则解越不稳定,解的精度受到问题输入的误差的影响越大。

条件数对线性方程组求解的误差估计
  • 定理17:设 A ∈ F n n × n A\in F^{n\times n}_n AFnn×n δ A ∈ F n × n \delta A\in F^{n\times n} δAFn×n b , δ b ∈ F n b,\delta b\in F^n b,δbFn,若 ∣ ∣ A − 1 δ A ∣ ∣ < 1 ||A^{-1}\delta A||<1 A1δA<1 x x x满足 A x = b Ax=b Ax=b x + δ x x+\delta x x+δx满足 ( A + δ A ) ( x + δ x ) = ( b + δ b ) (A+\delta A)(x+\delta x)=(b+\delta b) (A+δA)(x+δx)=(b+δb),则 ∣ ∣ δ x ∣ ∣ ∣ ∣ x ∣ ∣ ⩽ c o n d ( A ) 1 − c o n d ( A ) ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ ( ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ + ∣ ∣ δ b ∣ ∣ ∣ ∣ b ∣ ∣ ) \frac{||\delta x||}{||x||}\leqslant\frac{cond(A)}{1-cond(A)\frac{||\delta A||}{||A||}}(\frac{||\delta A||}{||A||}+\frac{||\delta b||}{||b||}) xδx1cond(A)AδAcond(A)(AδA+bδb)
    证明:
    ∣ ∣ − A − 1 δ A ∣ ∣ = ∣ ∣ A − 1 δ A ∣ ∣ < 1 ||-A^{-1}\delta A||=||A^{-1}\delta A||\lt 1 A1δA=A1δA<1知, I + A − 1 δ A = I − ( − A − 1 δ A ) I+A^{-1}\delta A=I-(-A^{-1}\delta A) I+A1δA=I(A1δA)可逆,且 ∣ ∣ ( I + A − 1 δ A ) − 1 ∣ ∣ ⩽ 1 1 − ∣ ∣ A − 1 δ A ∣ ∣ ⩽ 1 1 − ∣ ∣ A − 1 ∣ ∣ ∣ ∣ δ A ∣ ∣ ||(I+A^{-1}\delta A)^{-1}||\leqslant \frac{1}{1-||A^{-1}\delta A||}\leqslant \frac{1}{1-||A^{-1}||||\delta A||} (I+A1δA)11A1δA11A1δA1
    由已知可得 ( A + δ A ) δ x = δ b − ( δ A ) x (A+\delta A)\delta x=\delta b-(\delta A)x (A+δA)δx=δb(δA)x,用 A − 1 A^{-1} A1左乘两端得 ( I + A − 1 δ A ) δ x = A − 1 ( δ b − ( δ A ) x ) (I+A^{-1}\delta A)\delta x=A^{-1}(\delta b-(\delta A)x) (I+A1δA)δx=A1(δb(δA)x),则 δ x = ( I + A − 1 δ A ) − 1 A − 1 ( δ b − ( δ A ) x ) \delta x=(I+A^{-1}\delta A)^{-1}A^{-1}(\delta b-(\delta A)x) δx=(I+A1δA)1A1(δb(δA)x) ∣ ∣ δ x ∣ ∣ = ∣ ∣ ( I + A − 1 δ A ) − 1 A − 1 ( δ b − ( δ A ) x ) ∣ ∣ ⩽ ∣ ∣ ( I + A − 1 δ A ) − 1 ∣ ∣ ∣ ∣ A − 1 ∣ ∣ ∣ ∣ ( δ b − ( δ A ) x ) ∣ ∣ ⩽ ∣ ∣ A − 1 ∣ ∣ 1 − ∣ ∣ A − 1 ∣ ∣ ∣ ∣ δ A ∣ ∣ ( ∣ ∣ δ b ∣ ∣ + ∣ ∣ δ A ∣ ∣ ∣ ∣ x ∣ ∣ ) = ∣ ∣ A − 1 ∣ ∣ ∣ ∣ A ∣ ∣ ∣ ∣ x ∣ ∣ 1 − ∣ ∣ A − 1 ∣ ∣ ∣ ∣ δ A ∣ ∣ ( ∣ ∣ δ b ∣ ∣ ∣ ∣ A ∣ ∣ ∣ ∣ x ∣ ∣ + ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ ) \begin{aligned}||\delta x||&=||(I+A^{-1}\delta A)^{-1}A^{-1}(\delta b-(\delta A)x)||\\&\leqslant||(I+A^{-1}\delta A)^{-1}||||A^{-1}||||(\delta b-(\delta A)x)||\\&\leqslant\frac{||A^{-1}||}{1-||A^{-1}||||\delta A||}(||\delta b||+||\delta A||||x||)\\&=\frac{||A^{-1}||||A||||x||}{1-||A^{-1}||||\delta A||}(\frac{||\delta b||}{||A||||x||}+\frac{||\delta A||}{||A||})\end{aligned} δx=(I+A1δA)1A1(δb(δA)x)(I+A1δA)1A1(δb(δA)x)1A1δAA1(δb+δAx)=1A1δAA1Ax(Axδb+AδA)因为 A x = b Ax=b Ax=b,所以 ∣ ∣ b ∣ ∣ ⩽ ∣ ∣ A ∣ ∣ ∣ ∣ x ∣ ∣ ||b||\leqslant||A||||x|| bAx ∣ ∣ δ x ∣ ∣ ∣ ∣ x ∣ ∣ ⩽ ∣ ∣ A − 1 ∣ ∣ ∣ ∣ A ∣ ∣ 1 − ∣ ∣ A − 1 ∣ ∣ ∣ ∣ δ A ∣ ∣ ( ∣ ∣ δ b ∣ ∣ ∣ ∣ A ∣ ∣ ∣ ∣ x ∣ ∣ + ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ ) ⩽ ∣ ∣ A − 1 ∣ ∣ ∣ ∣ A ∣ ∣ 1 − ∣ ∣ A − 1 ∣ ∣ ∣ ∣ δ A ∣ ∣ ( ∣ ∣ δ b ∣ ∣ ∣ ∣ b ∣ ∣ + ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ ) = c o n d ( A ) 1 − c o n d ( A ) ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ ( ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ + ∣ ∣ δ b ∣ ∣ ∣ ∣ b ∣ ∣ ) \begin{aligned}\frac{||\delta x||}{||x||}&\leqslant\frac{||A^{-1}||||A||}{1-||A^{-1}||||\delta A||}(\frac{||\delta b||}{||A||||x||}+\frac{||\delta A||}{||A||})\\&\leqslant\frac{||A^{-1}||||A||}{1-||A^{-1}||||\delta A||}(\frac{||\delta b||}{||b||}+\frac{||\delta A||}{||A||})\\&=\frac{cond(A)}{1-cond(A)\frac{||\delta A||}{||A||}}(\frac{||\delta A||}{||A||}+\frac{||\delta b||}{||b||})\end{aligned} xδx1A1δAA1A(Axδb+AδA)1A1δAA1A(bδb+AδA)=1cond(A)AδAcond(A)(AδA+bδb)证毕。
    【注】固定 b b b A A A的相对误差项 ∣ ∣ δ b ∣ ∣ ∣ ∣ b ∣ ∣ \frac{||\delta b||}{||b||} bδb ∣ ∣ δ A ∣ ∣ ∣ ∣ A ∣ ∣ \frac{||\delta A||}{||A||} AδA,当 c o n d ( A ) cond(A) cond(A)增大时,解的相对误差 ∣ ∣ δ x ∣ ∣ ∣ ∣ x ∣ ∣ \frac{||\delta x||}{||x||} xδx的上界增大,故解越不稳定。

  • 定理18:设 A ∈ F n n × n A\in F^{n\times n}_n AFnn×n b , δ b ∈ F n b,\delta b\in F^n b,δbFn x , δ x x,\delta x x,δx满足 A x = b , A ( x + δ x ) = b + δ b Ax=b,A(x+\delta x)=b+\delta b Ax=b,A(x+δx)=b+δb,则下式成立: 1 c o n d ( A ) ∣ ∣ δ b ∣ ∣ ∣ ∣ b ∣ ∣ ⩽ ∣ ∣ δ x ∣ ∣ ∣ ∣ x ∣ ∣ ⩽ c o n d ( A ) ∣ ∣ δ b ∣ ∣ ∣ ∣ b ∣ ∣ \frac{1}{cond(A)}\frac{||\delta b||}{||b||}\leqslant\frac{||\delta x||}{||x||}\leqslant cond(A)\frac{||\delta b||}{||b||} cond(A)1bδbxδxcond(A)bδb
    证明:
    上一条定理中令 δ A = O \delta A=O δA=O,就得到 ∣ ∣ δ x ∣ ∣ ∣ ∣ x ∣ ∣ ⩽ c o n d ( A ) ∣ ∣ δ b ∣ ∣ ∣ ∣ b ∣ ∣ \frac{||\delta x||}{||x||}\leqslant cond(A)\frac{||\delta b||}{||b||} xδxcond(A)bδb
    现证明不等式的左半部分:由已知得 A δ x = δ b A\delta x=\delta b Aδx=δb,故 ∣ ∣ δ b ∣ ∣ ⩽ ∣ ∣ A ∣ ∣ ∣ ∣ δ x ∣ ∣ ||\delta b||\leqslant||A||||\delta x|| δbAδx ∣ ∣ δ x ∣ ∣ ∣ ∣ x ∣ ∣ ⩾ ∣ ∣ δ b ∣ ∣ ∣ ∣ A ∣ ∣ ∣ ∣ x ∣ ∣ \frac{||\delta x||}{||x||}\geqslant\frac{||\delta b||}{||A||||x||} xδxAxδb。由 A x = b Ax=b Ax=b x = A − 1 b x=A^{-1}b x=A1b,故 ∣ ∣ x ∣ ∣ ⩽ ∣ ∣ A − 1 ∣ ∣ ∣ ∣ b ∣ ∣ ||x||\leqslant||A^{-1}||||b|| xA1b,故 ∣ ∣ δ x ∣ ∣ ∣ ∣ x ∣ ∣ ⩾ ∣ ∣ δ b ∣ ∣ ∣ ∣ A ∣ ∣ ∣ ∣ A − 1 ∣ ∣ ∣ ∣ b ∣ ∣ = 1 c o n d ( A ) ∣ ∣ δ b ∣ ∣ ∣ ∣ b ∣ ∣ \frac{||\delta x||}{||x||}\geqslant\frac{||\delta b||}{||A||||A^{-1}||||b||}=\frac{1}{cond(A)}\frac{||\delta b||}{||b||} xδxAA1bδb=cond(A)1bδb。得证。
    【注】当 b b b的相对误差项 ∣ ∣ δ b ∣ ∣ ∣ ∣ b ∣ ∣ \frac{||\delta b||}{||b||} bδb固定时,条件数 c o n d ( A ) cond(A) cond(A)越小,则解的相对误差的下界越大,上界越小。这说明条件数越小,则解的误差越可控。特别地,当 c o n d ( A ) = 1 cond(A)=1 cond(A)=1即取到最小值时,有 ∣ ∣ δ x ∣ ∣ ∣ ∣ x ∣ ∣ = ∣ ∣ δ b ∣ ∣ ∣ ∣ b ∣ ∣ \frac{||\delta x||}{||x||}=\frac{||\delta b||}{||b||} xδx=bδb,此时解的误差完全可控。

上面的这些定理给我们已有的直观感受(条件数越大,数值计算的误差越大)一个严格的数学解释。

思考:什么时候cond(A)最小?

前面定理15-18告诉我们,矩阵的条件数越小,线性方程组求解和矩阵求逆的相对误差的范围就越小,特别地,定理18说明当 c o n d ( A ) cond(A) cond(A)最小(即 c o n d ( A ) = 1 cond(A)=1 cond(A)=1,定理9(1))时,线性方程组解的相对误差与常数项 b b b的相对误差相等。那么自然有疑问,什么时候矩阵的条件数可以取得最小值呢?由于定理15-18的结论都是基于诱导范数,我们可以针对某个诱导范数定义的条件数来考虑。由定理11,2-条件数有十分简洁的公式 c o n d 2 ( A ) = σ m a x σ m i n cond_2(A)=\frac{\sigma_{max}}{\sigma_{min}} cond2(A)=σminσmax,其中 σ m a x , σ m i n \sigma_{max},\sigma_{min} σmax,σmin分别是 A A A的最大奇异值和最小奇异值,根据这个公式很明显可以看出 c o n d 2 ( A ) = 1 cond_2(A)=1 cond2(A)=1的充要条件是 A A A有唯一的奇异值。由此出发可以简便地得到以下结论:

  • 定理19:设 A ∈ C n n × n A\in C_n^{n\times n} ACnn×n,则 c o n d 2 ( A ) = 1 cond_2(A)=1 cond2(A)=1的充要条件为存在常数 k > 0 k>0 k>0使 A H A = k I A^HA=kI AHA=kI
    证:
    必要性:由定理11, c o n d 2 ( A ) = 1 cond_2(A)=1 cond2(A)=1说明 A A A有一个n重奇异值(非零),设为 σ \sigma σ,由奇异值的定义知 A H A A^HA AHA有一个n重特征值 σ 2 \sigma^2 σ2。对 A H A A^HA AHA进行谱分解得到 A H A = U Σ U H = U ( σ 2 I ) U H = σ 2 U U H = σ 2 I A^HA=U\Sigma U^H=U(\sigma^2 I)U^H=\sigma^2 UU^H=\sigma^2 I AHA=UΣUH=U(σ2I)UH=σ2UUH=σ2I,可见存在常数 k = σ 2 > 0 k=\sigma^2>0 k=σ2>0使得 A H A = k I A^HA=kI AHA=kI
    充分性:若存在 k > 0 k>0 k>0使得 A H A = k I A^HA=kI AHA=kI,则 A H A A^HA AHA有一个n重特征值 k k k,由奇异值的定义知 A A A有一个n重奇异值 k \sqrt{k} k ,从而由定理11知 c o n d 2 ( A ) = 1 cond_2(A)=1 cond2(A)=1

分析一下 A H A = k I A^HA=kI AHA=kI这个条件:把 A A A写成按列分块的形式(列向量组) A = [ a 1 a 2 ⋯ a n ] A=\begin{bmatrix}a_1&a_2&\cdots&a_n\end{bmatrix} A=[a1a2an],则 A H A = k I A^HA=kI AHA=kI就是说 a i H a j = { 0 , 若 i ≠ j k , 若 i = j a_i^Ha_j=\begin{cases}0,&若i\neq j\\k,&若i=j\end{cases} aiHaj={0,k,i=ji=j,即 A A A的列是两两正交的( A A A是列正交的)且 A A A的列向量的 l 2 l_2 l2范数均相等。这样的矩阵我们最熟悉的例子应该就是酋矩阵了,酋矩阵是列正交的且每一列的 l 2 l_2 l2范数是1(这恰好验证了定理13, c o n d 2 ( U ) = 1 cond_2(U)=1 cond2(U)=1)。此外,定理19还可换个说法: c o n d 2 ( A ) = 1 cond_2(A)=1 cond2(A)=1的充要条件为 A A A的列向量组是 C n C^n Cn的正交基,其中每个基向量的长度( l 2 l_2 l2范数)相等。

不过,这只是从矩阵的2范数的角度考虑,此时定理18的不等式取等号结果为 ∣ ∣ δ x ∣ ∣ 2 ∣ ∣ x ∣ ∣ 2 = ∣ ∣ δ b ∣ ∣ 2 ∣ ∣ b ∣ ∣ 2 \frac{||\delta x||_2}{||x||_2}=\frac{||\delta b||_2}{||b||_2} x2δx2=b2δb2因为定理15~18对任意诱导范数定义的条件数都成立,而上面只讨论了2范数的情况。对于下面这个 c o n d 1 ( A ) = 1 cond_1(A)=1 cond1(A)=1 c o n d 2 ( A ) > 1 cond_2(A)>1 cond2(A)>1的例子,定理18的不等式也可取到等号,只是式中的范数都应取为1范数(即 ∣ ∣ δ x ∣ ∣ 1 ∣ ∣ x ∣ ∣ 1 = ∣ ∣ δ b ∣ ∣ 1 ∣ ∣ b ∣ ∣ 1 \frac{||\delta x||_1}{||x||_1}=\frac{||\delta b||_1}{||b||_1} x1δx1=b1δb1): A = [ 1 0 0 0 1 0 0 0 0.1 ] A=\begin{bmatrix}1&0&0\\0&1&0\\0&0&0.1\end{bmatrix} A=100010000.1 c o n d 1 ( A ) = 1 cond_1(A)=1 cond1(A)=1 c o n d 2 ( A ) = 10 cond_2(A)=10 cond2(A)=10

  • 83
    点赞
  • 289
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
1. 三元组顺序表表示稀疏矩阵 稀疏矩阵是指矩阵中大部分元素为0的矩阵。为了节省存储空间,可以使用三元组顺序表来表示稀疏矩阵。三元组顺序表包含三个元素:行号、列号和元素值。一个稀疏矩阵可以用一个三元组顺序表来表示。 示例代码: ```c #include <stdio.h> #include <stdlib.h> #define MAX_SIZE 100 // 稀疏矩阵最大元素个 typedef struct { int row; // 行号 int col; // 列号 int val; // 元素值 } Triple; // 三元组 typedef struct { Triple data[MAX_SIZE + 1]; // 存储三元组的组 int row, col, num; // 稀疏矩阵的行、列和非零元素个 } TSMatrix; // 三元组顺序表表示的稀疏矩阵 void CreateMatrix(TSMatrix *M, int row, int col) { M->row = row; M->col = col; M->num = 0; printf("请输入稀疏矩阵的元素:\n"); for (int i = 1; i <= row; i++) { for (int j = 1; j <= col; j++) { int val; scanf("%d", &val); if (val != 0) { M->num++; M->data[M->num].row = i; M->data[M->num].col = j; M->data[M->num].val = val; } } } } void PrintMatrix(TSMatrix M) { printf("稀疏矩阵的三元组表示为:\n"); for (int i = 1; i <= M.num; i++) { printf("(%d, %d, %d)\n", M.data[i].row, M.data[i].col, M.data[i].val); } } int main() { TSMatrix M; int row, col; printf("请输入稀疏矩阵的行和列:"); scanf("%d %d", &row, &col); CreateMatrix(&M, row, col); PrintMatrix(M); return 0; } ``` 2. 矩阵转置 矩阵的转置是指将矩阵的行和列互换得到的新矩阵。对于稀疏矩阵,我们可以通过交换每个非零元素的行号和列号来实现转置。 示例代码: ```c void TransposeMatrix(TSMatrix M, TSMatrix *T) { T->row = M.col; T->col = M.row; T->num = M.num; if (T->num == 0) { return; } int q = 1; for (int col = 1; col <= M.col; col++) { for (int p = 1; p <= M.num; p++) { if (M.data[p].col == col) { T->data[q].row = M.data[p].col; T->data[q].col = M.data[p].row; T->data[q].val = M.data[p].val; q++; } } } } ``` 3. 行逻辑链接存储方式表示稀疏矩阵 行逻辑链接存储方式是指用两个一维组来表示稀疏矩阵。第一个组存储每一行的非零元素个和第一个非零元素的位置,第二个组存储每一个非零元素的列号和元素值。 示例代码: ```c #define MAX_COL 50 // 稀疏矩阵最大列 typedef struct { int col; // 列号 int val; // 元素值 } Node; // 链表结点 typedef struct { Node data[MAX_COL + 1]; int num; // 非零元素个 } Row; // 链表行 typedef struct { Row row[MAX_SIZE + 1]; // 存储每一行的链表 int row_num, col_num; // 稀疏矩阵的行和列 int row_pos[MAX_SIZE + 1]; // 存储每一行的第一个非零元素在 data 组中的位置 } RLSMatrix; // 行逻辑链接存储方式表示的稀疏矩阵 void CreateMatrix(RLSMatrix *M, int row, int col) { M->row_num = row; M->col_num = col; printf("请输入稀疏矩阵的元素:\n"); for (int i = 1; i <= row; i++) { M->row_pos[i] = 0; int num = 0; for (int j = 1; j <= col; j++) { int val; scanf("%d", &val); if (val != 0) { num++; M->row[i].data[num].col = j; M->row[i].data[num].val = val; } } M->row[i].num = num; } for (int i = 2; i <= row; i++) { M->row_pos[i] = M->row_pos[i - 1] + M->row[i - 1].num; } } void PrintMatrix(RLSMatrix M) { printf("稀疏矩阵的行逻辑链接存储方式表示为:\n"); for (int i = 1; i <= M.row_num; i++) { printf("%d ", M.row[i].num); for (int j = 1; j <= M.row[i].num; j++) { printf("(%d, %d) ", M.row[i].data[j].col, M.row[i].data[j].val); } printf("\n"); } } int main() { RLSMatrix M; int row, col; printf("请输入稀疏矩阵的行和列:"); scanf("%d %d", &row, &col); CreateMatrix(&M, row, col); PrintMatrix(M); return 0; } ``` 4. 矩阵相乘 矩阵相乘是指将两个矩阵相乘得到的新矩阵。对于稀疏矩阵,我们可以先将其转换为行逻辑链接存储方式,然后使用一些简单的算法来实现矩阵相乘。 示例代码: ```c void MatrixMultiply(RLSMatrix A, RLSMatrix B, RLSMatrix *C) { if (A.col_num != B.row_num) { printf("矩阵不满足相乘条件!\n"); return; } for (int i = 1; i <= A.row_num; i++) { for (int j = 1; j <= B.col_num; j++) { int sum = 0; for (int k = 1; k <= A.row[i].num; k++) { int col = A.row[i].data[k].col; int val1 = A.row[i].data[k].val; for (int p = 1; p <= B.row[col].num; p++) { if (B.row[col].data[p].col == j) { int val2 = B.row[col].data[p].val; sum += val1 * val2; break; } } } if (sum != 0) { C->row[i].data[++C->row[i].num].col = j; C->row[i].data[C->row[i].num].val = sum; } } if (C->row[i].num != 0) { C->row_pos[i] = C->row_pos[i - 1] + C->row[i - 1].num; } } C->row_num = A.row_num; C->col_num = B.col_num; } ``` 以上是稀疏矩阵的表示和操作的简单介绍,实际上这些操作还有很多细节需要注意。如果想更深入地了解稀疏矩阵的表示和操作,可以参考相关的教材和论文。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值