極分解

**極分解**（きょくぶんかい、）は、線型代数学において、正方実行列または正方複素行列を、2つの直交行列または2つのユニタリ行列を左右から乗ずることによって、半正定値対角行列に対角化する手法である。

対称行列またはエルミート行列の場合は、左右から直交行列またはユニタリ行列と、その転置行列または随伴行列を乗ずることによって対角化可能であり、極分解はこれを対称行列またはエルミート行列でない場合に拡張したものである。

## 極分解定理
Aを階数 r の n次正方行列とする。ただし、行列の要素は体 K の元であり、K は実数体 \mathbb{R}^n または複素数体 \mathbb{C}^n のいずれかであるとする。このとき、
:A = U\Lambda V^*
という A の分解が存在する。
ここで UおよびVはn次の直交行列またはユニタリ行列であり、V^*はVの随伴行列(Vを転置し、さらに各要素をその複素共役で置換えた行列）とする。

K = \mathbb{R}^nの場合は、V^*はVの転置行列 V^Tに等しい。この場合、\Lambdaは実対角行列であり、各対角要素は非負の実数である(つまり 0 の場合もあり得る)。

K = \mathbb{C}^nの場合は、\Lambdaは複素対角行列であり、各対角要素は任意の値を取り得る(つまり 0 の場合もあり得る)。

上式は、
:U^* AV = \Lambda
と書き直すこともできる。これは Aが2つのユニタリ行列によって対角化可能なことを表している。

### 定理の証明
いくつかのケースに分けて証明を行う。

;(1) Aが正則な実n次正方行列の場合 ===
:A A^T = X
と置く。A^TはAの転置行列である。X^T = (A A^T)^T = (A^T)^T A^T = XであるからXは正則な対称行列である。対称行列Xは適当な直交行列U_1によってU_1 X {U_1}^Tが実対角行列となるようにできる。この実対角行列をTと置く。Tも正則行列であり、各対角要素は 0 ではない。
:T = U_1 X {U_1}^T = U_1 A A^T {U_1}^T = (U_1 A) (U_1 A)^T
であるからB = U_1 Aと置けば、
:T = B B^T
である。行列Bは正則な実n次正方行列である。その成分表示を次のように表すことにする。
:B = \begin{bmatrix}
b_{1,1} & \cdots & b_{1,n} \\
\vdots  & \ddots &\vdots \\
b_{n,1} &\cdots &b_{n,n}
\end{bmatrix}
 = \begin{bmatrix}
b_{1} \\
\vdots \\
b_{n}
\end{bmatrix}
ここで b_iはBの第i行が成す行ベクトルとする。つまり、
:b_i = (b_{i,1} \cdots b_{i,j}\cdots b_{i,n})
である。b_iを用いれば、Tは次のように表される。
: T = B B^T = \begin{bmatrix}
 (b_1,b_1)   &   \cdots   &   0   &      \cdots           &   0   \\
 \vdots      &   \ddots   &   \vdots     &                &   \vdots \\
   0         &   \cdots   &   (b_i,b_i)  &       \cdots   &   0  \\
 \vdots      &            &   \vdots     &       \ddots   &   \vdots  \\
   0         &   \cdots   &   0          &       \cdots   &   (b_n,b_n)
\end{bmatrix} 
ここで (b_i,b_j)は行ベクトルb_iとb_jの内積である。Tの各対角成分 (b_i,b_i) \; (1 \le i \le n) は 0 ではないので、b_i \; (1 \le i \le n)も零ベクトルではない。(b_i,b_j) = 0 \; (i \ne j)であるからBの異なる行ベクトルは直交している。ただし、(b_i,b_i) は必ずしも 1 ではないので、B は直交行列ではない。そこで、
: U_2 = \begin{bmatrix}
  b_1 \, / \, |b_1|\\
 \vdots\\
  b_i \, / \, |b_i|\\
 \vdots\\
  b_n \, / \, |b_n|
\end{bmatrix} 
と定義すれば、 U_2  は直交行列になる。ただし |b_i| = \sqrt{(b_i,b_i)} である。
: B {U_2}^T = U_1 A {U_2}^T = \begin{bmatrix}
 |b_1|   &   \cdots   &   0   &      \cdots               &   0   \\
 \vdots      &   \ddots   &   \vdots     &                &   \vdots \\
   0         &   \cdots   &   |b_i|      &       \cdots   &   0  \\
 \vdots      &            &   \vdots     &       \ddots   &   \vdots  \\
   0         &   \cdots   &   0          &       \cdots   &   |b_n|
\end{bmatrix} 
であるから、 B {U_2}^T = U_1 A {U_2}^Tは実対角行列であり、これを\Lambdaと置けば、Aは、直交行列 U_1,\; U_2によって、
:U_1 A {U_2}^T = \Lambda
と対角化できることが分かる。

;(2) Aが正則な複素n次正方行列の場合
:A A^* = X
と置く。A^*はAの随伴行列である。X^* = (A A^*)^* = (A^*)^* A^* = XであるからXは正則なエルミート行列である。エルミート行列Xは適当なユニタリ行列U_1によってU_1 X {U_1}^*が実対角行列となるようにできる。この実対角行列をTと置く。Tも正則行列であり、各対角要素は 0 ではない。
:T = U_1 X {U_1}^* = U_1 A A^* {U_1}^* = (U_1 A) (U_1 A)^*
であるからB = U_1 Aと置けば、
:T = B B^*
である。行列Bは正則な複素n次正方行列である。その成分表示を次のように表すことにする。
:B = \begin{bmatrix}
b_{1,1} & \cdots & b_{1,n} \\
\vdots  & \ddots &\vdots \\
b_{n,1} &\cdots &b_{n,n}
\end{bmatrix}
 = \begin{bmatrix}
b_{1} \\
\vdots \\
b_{n}
\end{bmatrix}
ここで b_iはBの第i行が成す行ベクトルとする。つまり、
:b_i = (b_{i,1} \cdots b_{i,j}\cdots b_{i,n})
である。b_iを用いれば、Tは次のように表される。
: T = B B^* = \begin{bmatrix}
 (b_1,b_1)   &   \cdots   &   0   &      \cdots           &   0   \\
 \vdots      &   \ddots   &   \vdots     &                &   \vdots \\
   0         &   \cdots   &   (b_i,b_i)  &       \cdots   &   0  \\
 \vdots      &            &   \vdots     &       \ddots   &   \vdots  \\
   0         &   \cdots   &   0          &       \cdots   &   (b_n,b_n)
\end{bmatrix} 
Tの各対角成分 (b_i,b_i) \; (1 \le i \le n) は 0 ではないので、b_i \; (1 \le i \le n)も零ベクトルではない。(b_i,b_j) = 0 \; (i \ne j)であるからBの異なる行ベクトルは直交している。ただし、(b_i,b_i) は必ずしも 1 ではないので、B はユニタリ行列ではない。そこで、
: U_2 = \begin{bmatrix}
  b_1 \, / \, |b_1|\\
 \vdots\\
  b_i \, / \, |b_i|\\
 \vdots\\
  b_n \, / \, |b_n|
\end{bmatrix} 
と定義すれば、 U_2  はユニタリ行列になる。
: B {U_2}^* = U_1 A {U_2}^* = \begin{bmatrix}
 |b_1|   &   \cdots   &   0   &      \cdots               &   0   \\
 \vdots      &   \ddots   &   \vdots     &                &   \vdots \\
   0         &   \cdots   &   |b_i|      &       \cdots   &   0  \\
 \vdots      &            &   \vdots     &       \ddots   &   \vdots  \\
   0         &   \cdots   &   0          &       \cdots   &   |b_n|
\end{bmatrix} 
であるから、 B {U_2}^* = U_1 A {U_2}^*は実対角行列であり、これを\Lambdaと置けば、Aは、ユニタリ行列 U_1,\; U_2によって、
:U_1 A {U_2}^* = \Lambda
と対角化できることが分かる。
: U_3 = \begin{bmatrix}
  e^{i\, \theta_1}   &   \cdots   &   0   &      \cdots               &   0   \\
 \vdots      &   \ddots   &   \vdots     &                &   \vdots \\
   0         &   \cdots   &    e^{i\, \theta_i}      &       \cdots   &   0  \\
 \vdots      &            &   \vdots     &       \ddots   &   \vdots  \\
   0         &   \cdots   &   0          &       \cdots   &    e^{i\, \theta_n}
\end{bmatrix} 
と置けば、 U_3 はユニタリ行列である。ただし、各\theta_iは複素数の位相を表す実数であり、0 \le \theta_i とする。
:U_1 A {U_2}^* U_3 = U_1 A ({U_3}^* U_2)^*  = \Lambda U_3
と置けば、{U_3}^* U_2 はユニタリ行列であり、\Lambda U_3 は複素対角行列である。これらを、それぞれ改めて U_2、\Lambda と書き直すことにすれば、
:U_1 A {U_2}^* = \Lambda
と複素対角行列に対角化できることが分かる。

;(3) Aが階数rの複素n次正方行列の場合
階数rがnに等しい場合は、(2)と同じになるので、r \, の場合とする。
:A A^* = X
と置く。X^* = (A A^*)^* = (A^*)^* A^* = XであるからXはエルミート行列であり、その階数はAと同じくrとなる(証明略)。エルミート行列Xは適当なユニタリ行列U_1によってU_1 X {U_1}^*が実対角行列となるようにできる。この実対角行列をTと置く。正則行列を乗じても行列の階数は変わらないので、Tも階数rの行列であり、各対角要素のうち 0 ではないものは r個である。行列の基本変形のうち、2つの行を入換える変形は、ユニタリ行列P_{i,j}を左から乗ずる操作であるから、U_1を適切に選べば Tは次の形式にできる。
: T = \begin{bmatrix}
 t_1         &   \cdots   &   0          &   &      \cdots            &     0       \\
 \vdots      &   \ddots   &   \vdots     &          &                 &     \vdots  \\
   0         &   \cdots   &   t_r   &    0   &      \cdots            &     0       \\
   0         &   \cdots   &   0     &    0          &        \cdots   &     0       \\
 \vdots      &            &   \vdots     &          &        \ddots   &     \vdots  \\
   0         &   \cdots   &   0          &          &        \cdots   &     0
\end{bmatrix}
対角要素t_1 ～ t_rは 0 ではなく、値の降順に並んでいるものとする。
:T = U_1 X {U_1}^* = U_1 A A^* {U_1}^* = (U_1 A) (U_1 A)^*
であるからB = U_1 Aと置けば、
:T = B B^*
である。行列Bの成分表示を次のように表すことにする。
:B = \begin{bmatrix}
b_{1,1} & \cdots & b_{1,n} \\
\vdots  & \ddots &\vdots \\
b_{n,1} &\cdots &b_{n,n}
\end{bmatrix}
 = \begin{bmatrix}
b_{1} \\
\vdots \\
b_{n}
\end{bmatrix}
ここで b_iはBの第i行が成す行ベクトルとする。つまり、
:b_i = (b_{i,1} \cdots b_{i,j}\cdots b_{i,n})
である。b_iを用いれば、Tは次のように表される。
: T = B B^* = \begin{bmatrix}
 (b_1,b_1)   &   \cdots   &   0          &   &      \cdots            &     0       \\
 \vdots      &   \ddots   &   \vdots     &          &                 &     \vdots  \\
   0         &   \cdots   &   (b_r,b_r)  &    0   &      \cdots            &     0       \\
   0         &   \cdots   &   0     &    0          &        \cdots   &     0       \\
 \vdots      &            &   \vdots     &          &        \ddots   &     \vdots  \\
   0         &   \cdots   &   0          &          &        \cdots   &     0
\end{bmatrix}
Tの対角成分 (b_i,b_i) \; (1 \le i \le r) は 0 ではないので、b_i \; (1 \le i \le r)も零ベクトルではない。
一方、(b_i,b_i) \; (r+1 \le i \le n) は 0 であるので、b_i \; (r+1 \le i \le n)は零ベクトルでなければならない。

b_1 ～ b_rの異なる行ベクトルは直交している。これらはn次元ベクトルであるから、これらと直交し、さらに互いに直交するn-r個のn次元ベクトルが存在する。これらをc_1 ～ c_{n-r}とする。なお、これらは(c_i,c_i) = 1と規格化されているものとする(グラム・シュミットの正規直交化法参照)。

: U_2 = \begin{bmatrix}
  b_1 \, / \, |b_1|\\
 \vdots\\
  b_r \, / \, |b_r|\\
  c_1 \\
 \vdots\\
  c_{n-r}
\end{bmatrix} 
と定義すれば、 U_2  はユニタリ行列になる。
: B {U_2}^* = U_1 A {U_2}^* = \begin{bmatrix}
 |b_1|       &   \cdots   &   0          &   &      \cdots            &     0       \\
 \vdots      &   \ddots   &   \vdots     &          &                 &     \vdots  \\
   0         &   \cdots   &   |b_r| &    0   &      \cdots            &     0       \\
   0         &   \cdots   &   0     &    0          &        \cdots   &     0       \\
 \vdots      &            &   \vdots     &          &        \ddots   &     \vdots  \\
   0         &   \cdots   &   0          &          &        \cdots   &     0
\end{bmatrix} 
であるから、 B {U_2}^* = U_1 A {U_2}^*は実対角行列であり、これを\Lambdaと置けば、Aは、ユニタリ行列 U_1,\; U_2によって、
:U_1 A {U_2}^* = \Lambda
と対角化できることが分かる。(2)と同様の方法で、\Lambdaを複素対角行列とすることもできる。

## 正規行列、スペクトル定理、固有値との関係
複素n次正方行列Aが正規であるとは、
:AA^* = A^*A
が成り立つことを言い、この場合Aを正規行列と呼ぶ。X = AA^* = A^*A と置けば、
:X^*=(AA^*)^* = (A^*)^* A^* = X
であるから、X はエルミート行列である。
また、Aがエルミート行列であれば、
:A=A^*
であるから、Aは正規行列である。

正規行列に関しては、次のスペクトル定理が成り立つ。

;スペクトル定理
行列Aが正規行列であるための必要十分条件は、それが対角行列 \Lambda とユニタリ行列U により、A = U \Lambda U^*なる形に書けることである。ただし、対角行列\Lambdaの各成分 \lambdaは Aの固有値であり、Uの各列はAの固有ベクトルで与えられ、\Lambdaの対角線上に並ぶ固有値の順番とUの列に並ぶ固有ベクトルの順番は対応する。

### 極分解定理を用いたスペクトル定理の証明
;(1) 十分性
A = U \Lambda U^*であれば、
:AA^* = U \Lambda U^* (U \Lambda U^*)^* = U \Lambda U^* U {\Lambda}^* U^*
 = U \Lambda {\Lambda}^* U^*
:A^*A = (U \Lambda U^*)^* U \Lambda U^* = U {\Lambda}^* U^* U \Lambda U^*
 = U {\Lambda}^* \Lambda U^*
従ってAA^* = A^* AであるからAは正規行列である。

;(2) 必要性
極分解定理の証明(3)で示したように、Aは、適当なユニタリ行列 U_1,\; U_2によって、
:U_1 A {U_2}^* = \Lambda
と対角化できる。\Lambdaは複素n次対角行列である。

:A = {U_1}^* \Lambda {U_2}
であるから、Aは正規行列であるとすれば、
:AA^* = {U_1}^* \Lambda {U_2} ({U_1}^* \Lambda {U_2})^*
=  {U_1}^* \Lambda {U_2} {U_2}^* {\Lambda}^* {U_1}
=  {U_1}^* \Lambda {\Lambda}^* {U_1} = {U_1}^* T {U_1}

:A^*A = ({U_1}^* \Lambda {U_2})^* {U_1}^* \Lambda {U_2}
=  {U_2}^* {\Lambda}^* {U_1} {U_1}^* {\Lambda} {U_2}
=  {U_2}^* {\Lambda}^* \Lambda {U_2} = {U_2}^* T {U_2} 
ただし、 T = \Lambda {\Lambda}^* = {\Lambda}^* \Lambda である。
:X = {U_1}^* T {U_1} = {U_2}^* T {U_2}
であるから、
:T = {U_1} {U_2}^* T {U_2} {U_1}^*
U_3 = {U_1} {U_2}^* と置けば、
:T = {U_3} T {U_3}^*
つまり、U_3はTを変えないユニタリ行列である。
Tの対角要素が全て異なる値を持つ場合は、このようなU_3は恒等変換I以外にはない。従って、
:U_3 = {U_1} {U_2}^* = I
:{U_1} = {U_2}
となって、
:A = {U_1}^* \Lambda {U_1}
が成り立つ。

## 特異値分解との関係
極分解を必ずしも正方行列ではない実m \times n行列または複素m \times n行列の場合まで拡張したものが特異値分解である。この場合、一般に、行列の階数 rがmまたはnより小さくても、この分解は存在する。

## その他の性質
K = \mathbb{C}^nの場合、Aが正則行列であれば、\Lambdaの各対角要素は 0 を含まない。その場合、\Lambdaの対数行列が存在することになり、これを\log \Lambdaとすれば、\log \Lambdaも対角行列である。その場合、
:A = U e^{\log \Lambda} V^*
という形で表すことができる。この式を
:A = (U V^*) (V e^{\log \Lambda} V^*) = (U V^*) e^{V \log \Lambda V^*}
と変形すれば、U V^*はユニタリ行列であり、V e^{\log \Lambda} V^*およびV \log \Lambda V^*はエルミート行列となる
。
この分解は(行列)リー群の基本群を計算する上で有用である
。

極分解は、複素数zの極形式z = |z| e^{i \theta}を行列に拡張したアナロジーと考えることもできる。ここで|z|はzの絶対値であり、これが極分解の対角行列\Lambdaに相当し、\thetaはzの位相を表す実数(0 \le  \theta )であり、e^{i \theta}がユニタリ行列Uに相当する。

また、実n \times n行列Aをn次元空間\mathbb{R}^nの線型写像として解釈する場合、極分解はAを\mathbb{R}^nの回転または鏡映変換の合成であるUと、\mathbb{R}^nの各直交軸ごとのスケール変換に分離する手法であるとも言える。

## 参考文献

* 
* 
* 
* 

## 関連項目
* 対角化
* 特異値分解
* 固有値分解