機械学習に詳しくなりたいブログ

機械学習や数学について勉強した内容を中心に書きます。100%趣味です。記事は数学的に厳密でなかったり誤りを含んでいるかもしれません。ご指摘頂ければ幸いです。

対称行列の対角化

対称行列は直交行列を使って対角化できることを確認します。

対称行列\mathbf{A}の異なる固有値\lambda_1,\lambda_2に対して、対応する固有ベクトルを\mathbf{u}_1,\mathbf{u}_2とすると、固有値、固有ベクトルの定義(参考:固有値と固有ベクトル)より


\begin{eqnarray*}
\mathbf{A} \mathbf{u}_1 &=& \lambda_1 \mathbf{u}_1 \tag{1} \\
\mathbf{A} \mathbf{u}_2 &=& \lambda_2 \mathbf{u}_2 \tag{2}
\end{eqnarray*}

です。ここで、式(1)の両辺の転置をとると、転置行列の定理より


\mathbf{u}_1^{T} \mathbf{A}^{T} = \lambda_1 \mathbf{u}_1^{T} \tag{3}

となるので、両辺に\mathbf{u}_2をかければ


\mathbf{u}_1^{T} \mathbf{A}^{T}\mathbf{u}_2  = \lambda_1 \mathbf{u}_1^{T} \mathbf{u}_2 \tag{4}

となります。いま、\mathbf{A}は対称行列ですから、


\begin{eqnarray*}
\mathbf{u}_1^{T} \mathbf{A}^{T}\mathbf{u}_2  &=&  \mathbf{u}_1^{T} \mathbf{A}\mathbf{u}_2 \tag{5} \\
&=& \mathbf{u}_1^{T} \lambda_2 \mathbf{u}_2 \tag{6} \\
&=&  \lambda_2 \mathbf{u}_1^{T} \mathbf{u}_2 \tag{7}
\end{eqnarray*}

となります。式(4)、(7)より、


(\lambda_1 - \lambda_2) \mathbf{u}_1^{T} \mathbf{u}_2 = 0 \tag{8}

となりますが、\lambda_1 \ne \lambda_2としていますから、\mathbf{u}_1^{T} \mathbf{u}_2 = 0、つまり\mathbf{u}_1\mathbf{u}_2は直交します。よって、\mathbf{A}の固有値が全て異なれば、対応する固有ベクトルは互いに直交していることになります。ここで、


\begin{eqnarray*}
\mathbf{\Lambda} &=&  \left(
    \begin{array}{cccc}
      \lambda_1 &  & & 0 \\
       & \lambda_2 &  & \\
       &  & \ddots &  \\
       0 &  &  & \lambda_{n}
    \end{array}
  \right) \tag{9} \\
\mathbf{U} &=&(\mathbf{u}_1, \cdots, \mathbf{u}_n) \tag{10}
\end{eqnarray*}

として、式(1)、(2)を行列でまとめて書けば、


\mathbf{A} \mathbf{U} = \mathbf{U} \mathbf{\Lambda} \tag{11}

となります。\mathbf{U}は直交行列ですから、\mathbf{U}^{T}\mathbf{U}=\mathbf{I}より、


\mathbf{U}^{T} \mathbf{A} \mathbf{U} =  \mathbf{\Lambda} \tag{12}

となります。以上より、対称行列\mathbf{A}の固有ベクトルは直交し、固有ベクトルを並べた直交行列\mathbf{U}により\mathbf{A}を対角化できることが確認できました。