求解矩阵特征值
特征值的条件数
Weilandt-Hoffman定理:设A与B是两个n阶正规矩阵,它们的特征值分别是li和mj,则存在一个排列p(n),使得
$\sqrt {\sum_i \left | \pi(i)-\lambda_i \right |^2}\leqslant \left \| B-A \right \|_F$
Weilandt-Hoffman定理表明Hermite矩阵和正规矩阵的特征值是良态的,因此在此主要讨论非正规矩阵对扰动的敏感程度的数据标准。
假定n阶方阵A的Jordan分解为Q-1AQ=J,p是J中最大块阶数,利用广义Bauer-Fike定理可证:
$\forall E\in C^{N\times N}\left \| QEQ^{-1} \right \|_2\leqslant 2^{1-p}\Rightarrow $
$\forall \mu\in(A+E)\exists \lambda\in \lambda(A) \left | \mu-\lambda \right |\leqslant 2^{1-\frac{1}{p}}(\left \| Q \right \|_2\left \| Q^{-1} \right \|_2)^{\frac{1}{p}}(\left \| E \right \|_2)^{\frac{1}{p}}$
因此称v(A)为A的谱条件数,其中
$\nu(A)\leqslant \inf_{Q \in D_A} \left \| Q \right \|_2\left \| Q^{-1} \right \|_2, D_A=\left \{ Q \in C^{n \times n}\right | Q^{-1}AQ=J \}$
v(A)是对全部特征值整体而言的,实际还需要针对每个特征值的条件数。
设$\lambda$是矩阵A的单特征值,x和y是A属于$\lambda$的右,左特征向量,称$s(\lambda)=|y^Tx|$是$\lambda$ 的条件数。存在解析函数$\lambda(\varepsilon)$是$A+\varepsilon E$的单特征值,有
$\left | \lambda(\varepsilon )-\lambda\right |=\left \| \lambda'(0)+O(\varepsilon)^2 \right \| \leqslant \frac{\left |\varepsilon\right |}{s(\lambda)}+O(\varepsilon)^2$
不变子空间的条件数
对于特征向量的敏感性问题,利用函数论的某些结果,可以得到
$(A+\varepsilon E)x_i(\varepsilon )=\lambda_i(\varepsilon )x_i(\varepsilon )$
$x_i(\varepsilon )=x_i+\varepsilon \sum_{j\neq i}\frac{y_j^TEx_i}{(\lambda_i-\lambda_j)s(\lambda_j)}x_j+O(\varepsilon )^2$
可以看出,当特征值分离不明显时,特征向量对扰动会十分敏感。但是如果把敏感的特征向量放在一起形成A的不变子空间,则可以是不敏感的。因此可以定义不变子空间的条件数,一般采用分离度的倒数。
$sep(B,C)=\inf_{\left \| P \right \|_2=1}\left \| PB-CP \right \|_2\,where\, B\in C^{l \times l},C\in C^{m \times m},P\in C^{m \times l}$
QR算法
QR算法是数值计算的重大进展之一,其基本迭代格式如下,
$Q_mR_m\Leftarrow A_{m-1},A_m \Leftarrow R_mQ_m$
为了理解这个算法,需要从特征值的乘幂法推广到正交迭代法。
$y_k\Leftarrow Au_{k-1},u_k\Leftarrow \frac{y_k}{\left \| y_k \right \|}$
乘幂法的几何意义是子空间的迭代过程,一般形式为:
$Z_k\Leftarrow AQ_{k-1},Q_kR_k\Leftarrow Z_k$
从此可以导出QR迭代算法。由于复共轭特征值的存在,设计一个实数域算法需要特别地改进这个格式,使得矩阵A逼近其实Schur标准形。
为了节省运算量,需要把矩阵A转换成上Hessenberg形式,然后采用Givens变换来QR分解。同时为了提高收敛速度,对特征值进行位移。
$H_1\Leftarrow Q_0^TAQ_0,Q_kR_k\Leftarrow H_k-\mu I,H_{k+1}\Leftarrow R_kQ_k+\mu I$
位移$\mu$的选取应该靠近特征值,例如Wilkinson位移,即利用矩阵右下角的二阶子矩阵来计算特征值。
$\mu=\alpha_n+\delta-sign\,\delta\sqrt{\delta^2+\beta^2},\delta=\frac{\alpha_{n-1}-\alpha_n}{2}$,子矩阵为$\begin{bmatrix} \alpha_{n-1} & \beta_{n-1} \\ \beta_{n-1} & \alpha_n \end{bmatrix}$
为了避免对于复特征值引入复运算,需要进行双重步位移,确保得到实数矩阵H。实际算法中为了节省运算,只根据M的第一列来确定作用在矩阵H上的正交变换。
$M\Leftarrow H^2-sH+tI,QR\Leftarrow M,H_2\Leftarrow Q^THQ\, where\, s=\mu_1+\mu_2,t=\mu_1\mu_2$
对称矩阵只有实特征值,因此只需要一步位移,而且其上Hessenberg矩阵为三对角形式,利用这一点可以进一步减少运算量。然而需要注意在迭代过程中保证矩阵的对称性,确保特征值保持为实数。
$H=I-\beta\nu\nu^T,HAH=A-\nu\omega^T-\omega\nu^T,\omega=u-\frac{1}{2}\beta(\nu u)\mu, u=\beta A \nu$
奇异值分解可从实对称矩阵ATA的Schur分解算法导出。然而计算实对称矩阵ATA容易引入比较大的误差,因此隐含矩阵ATA的Schur分解算法成为奇异值分解的稳定、有效的标准算法。对应于实对称矩阵的QR算法,三对角阵ATA隐含表示为二对角阵的乘积,带Wilkinson位移的对称QR算法也隐含表示为在二对角阵上的Givens变换。
二对角化:$U_1^TAV_1=\begin{bmatrix} B \\ 0 \end{bmatrix}$
计算特征向量是求解特征值的附加问题,虽然可以在QR迭代中同时计算特征向量,但是利用反幂法更稳定、更有效,其基本迭代格式如下。
$(A-\mu I)\nu_k=z_{k-1}, z_k=\frac{\nu_k}{\left \| \nu_k \right \|_2}$