【入門】グラム行列【数値計算】

【入門】グラム行列【数値計算】 数値計算
【入門】グラム行列【数値計算】

MATLAB、Python、Scilab、Julia比較ページはこちら
https://www.simulationroom999.com/blog/comparison-of-matlab-python-scilab/

はじめに

の、
MATLAB,Python,Scilab,Julia比較 第2章 その44【グラム行列①】
MATLAB,Python,Scilab,Julia比較 第2章 その45【グラム行列②】

を書き直したもの。

正規方程式を導出するまでの説明。
グラム行列について説明とその証明を行う。

ロードマップ&数式【再掲】

今回はグラム行列について。
ロードマップで位置づけを確認しておくとよいだろう。

正規方程式に至る道、二次形式、対称行列、二次形式の微分、グラム行列、二乗和誤差、正規方程式

グラム行列の定義

まずはグラム行列の定義から。
複雑な話は無く、行列\(A\)と\(A\)の転置行列を掛けたものがグラム行列。
数式で表現すると以下になる。

\(
G=A^TA
\)

これだけなので定義ってほどの話ではないが、
重要なのは性質の方。

グラム行列の性質

グラム行列は対称行列になるという性質がある。
試しに計算してみよう。

\(
\begin{eqnarray}
A&=&
\begin{bmatrix}
1 & 2 \\
3 & 4 \\
5 & 6 \\
\end{bmatrix}\\
A^TA&=&
\begin{bmatrix}
1 & 2 \\
3 & 4 \\
5 & 6 \\
\end{bmatrix}^T
\begin{bmatrix}
1 & 2 \\
3 & 4 \\
5 & 6 \\
\end{bmatrix}=
\begin{bmatrix}
35 & 44 \\
44 & 56 \\
\end{bmatrix}\\
AA^T&=&
\begin{bmatrix}
1 & 2 \\
3 & 4 \\
5 & 6 \\
\end{bmatrix}
\begin{bmatrix}
1 & 2 \\
3 & 4 \\
5 & 6 \\
\end{bmatrix}^T=
\begin{bmatrix}
5 & 11 & 17 \\
11 & 25 & 39 \\
17 & 39 & 61 \\
\end{bmatrix}
\end{eqnarray}
\)

このように対称行列になる。

グラム行列が対称行列であることの証明

グラム行列が対称行列であることを証明してみる。
まず、以下の行列\(A\)があるとする。

\(
A=
\begin{bmatrix}
a_{11} & a_{12} & \dots & a_{1n} \\
a_{21} & a_{22} & \dots & a_{2n} \\
\vdots & \vdots & \ddots & \vdots \\
a_{m1} & a_{m2} & \dots & a_{mn} \\
\end{bmatrix}
\)

m×nの行列であり、つまり、つまりどんな行列でも当てはまる。
この行列を行ベクトルに分解する。

\(
\begin{eqnarray}
a_1&=&
\begin{bmatrix}
a_{11} & a_{12} & \dots &a_{1n}\\
\end{bmatrix}\\
a_2&=&
\begin{bmatrix}
a_{21} & a_{22} & \dots &a_{2n}\\
\end{bmatrix}\\
\vdots \\
a_2&=&
\begin{bmatrix}
a_{m1} & a_{m2} & \dots &a_{mn}\\
\end{bmatrix}\\
\end{eqnarray}
\)

これを前提に\(AA^T\)の式を組むと以下になる。

\(
\begin{eqnarray}
AA^T&=&
\begin{bmatrix}
a_1 \\ a_2 \\ \vdots \\ a_{m}\\
\end{bmatrix}
\begin{bmatrix}
a_1^T & a_2^T & \dots & a_{m}^T\\
\end{bmatrix}\\&=&
\begin{bmatrix}
a_1a_1^T & \color{red}{a_1a_2^T} & \dots & a_1a_m^T\\
\color{red}{a_2a_1^T} & a_2a_2^T & \dots & a_2a_m^T\\
\vdots & \vdots & \ddots & \vdots \\
a_ma_1^T & a_ma_2^T & \dots & a_ma_m^T\\
\end{bmatrix}
\end{eqnarray}
\)

対称行列であれば、
赤文字で書いた\(\color{red}{a_1a_2^T}\)と\(\color{red}{a_2a_1^T}\)が等しいはず。
さらにそこで等しいことが証明できれば、他の対称位置の要素も等しいはず。

\(
\begin{eqnarray}
a_1a_2^T&=&
\begin{bmatrix}
a_{11} & a_{12} & \dots a_{1n}
\end{bmatrix}
\begin{bmatrix}
a_{21} & a_{22} & \dots a_{2n}
\end{bmatrix}^T\\&=&
a_{11}a_{21}+a_{12}a_{22}+\dots+a_{1n}a_{2n}\\
a_2a_1^T&=&
\begin{bmatrix}
a_{21} & a_{22} & \dots a_{2n}
\end{bmatrix}
\begin{bmatrix}
a_{11} & a_{12} & \dots a_{1n}
\end{bmatrix}^T\\&=&
a_{11}a_{21}+a_{12}a_{22}+\dots+a_{1n}a_{2n}\\
∴ a_1a_2^T&=&a_2a_1^T
\end{eqnarray}
\)

というわけでグラム行列は対称行列になる。

まとめ

  • グラム行列の定義について説明。
  • グラム行列の性質について説明。
    • 対称行列になる。
  • グラム行列が対称行列になることの証明。

MATLAB、Python、Scilab、Julia比較ページはこちら

コメント

タイトルとURLをコピーしました