第4章 行列の固有値問題

4.1 固有値と固有ベクトル

4.1.1 固有値と固有ベクトル

nn 次正方行列 AA が与えられているとき、

Ax=λx(4.1)A x = \lambda x \tag{4.1}

を満たす λ\lambdaAA の固有値 (eigen value)、 xx を固有ベクトル (eigen vector) という。 固有値と固有ベクトルを求める問題を固有値問題 (eigen value problem) という。

行列の固有値と固有ベクトルは、行列 AA の特徴を表す重要な量である。 第3章ではスペクトル半径が反復法の収束性に重要な意味をもっていた。 特に SOR 法においては、固有値の大きさを正しく推定しないと加速されないことを知った。 理工学においては、よい精度で固有値を求めることを要求される例は枚挙にいとまがない。 行列 AA は1次変換を表現するが、 nn 次元ベクトル xx を1次変換してえられた AxA x は1つのベクトルである。 AxA x は、一般にはもとのベクトル xx と方向も大きさも違っている。 ところで、 (4.1)(4.1) の関係は次のことを示している。 すなわち、ある特別なベクトルはその1次変換に対して方向を変えないで、大きさだけが λ\lambda 倍されて λx\lambda x となったとすると、その特別なベクトル xxAA の固有ベクトルであり、大きさの倍率が固有値 λ\lambda である。 もとのベクトルが x=0x = 0 であれば、 Ax=λx(=0)A x = \lambda x (= 0) であるが、 x=0x = 0 はあまりに自明であり、何の情報も持たないから、固有ベクトルとは考えない。

固有値および固有ベクトルの定義は (4.1)(4.1) で与えられる。 (4.1)(4.1) より、

(AλI)x=0(I は単位行列)(4.2)(A - \lambda I) x = 0 \qquad (I \text{ は単位行列}) \tag{4.2}

である。 この式は xx を未知数ベクトルとする連立1次方程式と見なすことが出来る。 x0x \neq 0 の解をもつためには係数行列 AλIA - \lambda I の行列式は、

det(AλI)=0特性方程式(4.3)\det(A - \lambda I) = 0 \qquad \text{特性方程式} \tag{4.3}

を満たさねばならない。 もし det(AλI)0\det(A - \lambda I) \neq 0 ならば、連立1次方程式の右辺=0\text{右辺} = 0 だから、 x=0x = 0 以外の解はもたないからである。 行列式 det(AλI)\det(A - \lambda I) を特性多項式といい、 (4.3)(4.3) を特性方程式という。 特性多項式は λ\lambda についての nn 次多項式であるから、特性方程式 (4.3)(4.3)λ\lambda についての nn 次代数方程式である。 この方程式は、等根を含めて nn 個の解があるので、固有値は nn 個ある。 この nn 個の固有値は (たとえ AA が実数行列であっても) 一般には複素数である。 こうして、行列 AA の固有値を求めることは、特性方程式の nn 個の複素解を求めることと同等である。

[例 4.1]

2次正方実行列の固有値

A=(abcd)(a,b,c,d は実数)A = \begin{pmatrix} a & b \cr c & d \cr \end{pmatrix} \qquad (a, b, c, d \text{ は実数})

とすると、特性方程式は

det(AλI)=det(aλbcdλ)=λ2(a+d)λ+adbc=0\det(A - \lambda I) = \det \begin{pmatrix} a - \lambda & b \cr c & d - \lambda \cr \end{pmatrix} = \lambda^2 - (a + d) \lambda + a d - b c = 0 λ1=12[(a+d)+D],λ2=12[(a+d)D]\therefore \quad \lambda_1 = \frac{1}{2} [ (a + d) + \sqrt{D} ], \quad \lambda_2 = \frac{1}{2} [ (a + d) - \sqrt{D} ]

故に固有値は2つあり、判別式 D=(ad)2+4bcD = (a - d)^2 + 4bc の値により、2つの固有値は共役複素数 (D<0)(D < 0) 、等しい実数 (D=0)(D = 0) 、2つの実数 (D>0)(D > 0) である。 この例のように、実行列であっても固有値は一般に複素数である。

固有値が得られると、これを (4.1)(4.1) または (4.2)(4.2) に代入した連立1次方程式を解くことにより固有ベクトルを求めることが出来る。 固有値は nn 個あるから、これを λi(1in)\lambda_i (1 \leqq i \leqq n) とすると、その一つ一つの固有値に対応して固有ベクトル xi(1in)x_i (1 \leqq i \leqq n) がある。 すなわち、 nn 個のの固有値と nn 個の固有ベクトルは

Axi=λixi1in(4.4)A x_i = \lambda_i x_i \qquad 1 \leqq i \leqq n \tag{4.4}

を満たす。 xix_i を 固有値 λi\lambda_i に属する (または対応する) 固有ベクトルという。

ところで、 (4.4)(4.4) を、与えられた AA と各々の λi\lambda_i について xix_i を求める連立1次方程式と見なすと、 det(AλiI)=0\det(A - \lambda_i I) = 0 であるから、 xix_i はただ一つにはきまらない。

行列式が 00 となるような連立1次方程式は、ベクトル xix_i の成分の中のいくつかを与えれば他の成分はきまる。 正確に言えば、 AλiIA - \lambda_i I のランク (1次独立な列ベクトルの数) を rr とすれば、 (nr)(n - r) 個の成分を与えれば、他の rr 個の成分はきまる。 そして、必ず r<nr < n である。 すなわち、少なくとも1つの成分は任意である。

その1つの例は、一般に xix_i(4.4)(4.4) の解とすると、 cxic x_i もまた (4.4)(4.4) も解であることである:

A(cxi)=cAxi=cλixi=λi(cxi)A(c x_i) = c A x_i = c \lambda_i x_i = \lambda_i (c x_i)

xi=1\vert x_i \vert = 1 となるように cc を選ぶことを規格化 (normalization) という。

本章では、特性方程式 (4.3)(4.3) を数値的に解いて固有値 λi\lambda_i を求め、この λi\lambda_i を連立1次方程式 (4.4)(4.4) に代入してこれを解いて、固有ベクトル xix_i を求める方法について考える。

[例 4.2]

2次正方行列の固有ベクトルを求めてみよう。 前例 [例 4.1] により2次正方行列の2つの固有値が与えられる。 2つの固有値 λ1\lambda_1λ2\lambda_2 に属する固有ベクトルを

xi=(xiyi)(i=1,2)x_i = \begin{pmatrix} x_i \cr y_i \cr \end{pmatrix} \qquad (i = 1, 2)

と置くと、 xix_i を求める方程式 (4.4)(4.4)

(aλi)xi+byi=0cxi+(dλi)yi=0}(i=1,2)\left. \begin{aligned} (a - \lambda_i) x_i + b y_i = 0 \cr c x_i + (d - \lambda_i) y_i = 0 \cr \end{aligned} \right\} \qquad (i = 1, 2)

である。

(1)(1) D0D \neq 0 のとき、2つの固有値は λ1λ2\lambda_1 \neq \lambda_2 である。 固有ベクトルは、 bc0bc \neq 0 なら

xi=(xiaλibxi)=(xicdλixi)(xi0 は任意、 i=1,2)x_i = \begin{pmatrix} x_i \cr - \displaystyle\frac{a - \lambda_i}{b} x_i \cr \end{pmatrix} = \begin{pmatrix} x_i \cr - \displaystyle\frac{c}{d - \lambda_i} x_i \end{pmatrix} \qquad (x_i \neq 0 \text{ は任意、 } i = 1, 2)

det(AλiI)=(aλi)(dλi)bc=0\det(A - \lambda_i I) = (a - \lambda_i)(d - \lambda_i) - bc = 0 より、この2つの表現は等しい。

bc=0bc = 0 (したがって ada \neq d ) なら、 λ1=a, λ2=d\lambda_1 = a,\ \lambda_2 = d 。 固有ベクトルは

(a)(a) b0, c=0b \neq 0,\ c = 0 のとき

x1=(x10),x2=(x2adbx2)(x1,x20 は任意)x_1 = \begin{pmatrix} x_1 \cr 0 \cr \end{pmatrix}, \quad x_2 = \begin{pmatrix} x_2 \cr - \displaystyle\frac{a - d}{b} x_2 \cr \end{pmatrix} \quad (x_1, x_2 \neq 0 \text{ は任意})

(b)(b) b=0, c0b = 0,\ c \neq 0 のとき

x1=(x1cadx1),x2=(0y2)(x1,y20 は任意)x_1 = \begin{pmatrix} x_1 \cr \displaystyle\frac{c}{a - d} x_1 \cr \end{pmatrix}, \quad x_2 = \begin{pmatrix} 0 \cr y_2 \cr \end{pmatrix} \quad (x_1, y_2 \neq 0 \text{ は任意})

(c)(c) b=c=0b = c = 0 のとき

x1=(x10),x2=(0y2)(x1,y20 は任意)x_1 = \begin{pmatrix} x_1 \cr 0 \cr \end{pmatrix}, \quad x_2 = \begin{pmatrix} 0 \cr y_2 \cr \end{pmatrix} \quad (x_1, y_2 \neq 0 \text{ は任意})

このように、 λ1λ2(D0)\lambda_1 \neq \lambda_2 (D \neq 0) のときは、 x1x_1x2x_2 は1次独立である。

(2)(2) D=0D = 0 のとき、 λ1=λ2=12(a+d)\lambda_1 = \lambda_2 = \frac{1}{2} (a + d) であり、 bc0bc \neq 0 (故に ada \neq d ) なら

xi=(xiad2bxi)=(xi2cadxi)(xi0 は任意、 i=1,2)x_i = \begin{pmatrix} x_i \cr - \displaystyle\frac{a - d}{2b} x_i \cr \end{pmatrix} = \begin{pmatrix} x_i \cr \displaystyle\frac{2c}{a - d} x_i \cr \end{pmatrix} \quad ( x_i \neq 0 \text{ は任意、 } i = 1, 2)

この2つの表現は、 det(AλI)=14(ad)2bc=0\det(A - \lambda I) = - \frac{1}{4} (a - d)^2 - bc = 0 より等しい。

そして、 x1x_1x2x_2 は比例して1次従属である。

bc=0bc = 0 (故に a=da = d ) なら

(a)(a) b0, c=0b \neq 0,\ c = 0 のとき

x1=(x10),x2=(x20)(x1,x20は任意)x_1 = \begin{pmatrix} x_1 \cr 0 \cr \end{pmatrix}, \quad x_2 = \begin{pmatrix} x_2 \cr 0 \cr \end{pmatrix} (x_1, x_2 \neq 0 \text{は任意})

(b)(b) b=0, c0b = 0,\ c \neq 0 のとき

x1=(0y1),x2=(0y2)(y1,y20は任意)x_1 = \begin{pmatrix} 0 \cr y_1 \cr \end{pmatrix}, \quad x_2 = \begin{pmatrix} 0 \cr y_2 \cr \end{pmatrix} (y_1, y_2 \neq 0 \text{は任意})

(c)(c) b=c=0b = c = 0 のとき ( AA は単位行列の aa 倍のとき!)、方程式 (4.4)(4.4)0=00=0 であり、 xix_iyiy_i も任意である。 つまり、このときは、任意の2次元ベクトルは固有ベクトルであり、 x1x_1x2x_2 は1次独立になるように選ぶことが可能になる。

このように λ1=λ2(D=0)\lambda_1 = \lambda_2 (D = 0) の場合、 (c)(c) の単位行列の固有値倍である特別な場合を除いて x1x_1x2x_2 は1次従属である。

この簡単な例は、固有値と固有ベクトルの特徴をほとんど尽くしている。 すなわち、相異なった固有値に属する固有ベクトルは、すべて1次独立である ( (1)(1) の場合)。 重複固有値に属する固有ベクトルは、1次独立に選ぶことができる場合 ( (2)(c)(2)(c) の場合) と出来ない場合 ( (2)(a)(2)(a) および (2)(b)(2)(b) ) がある。

4.1.2 相似変換と固有値・固有ベクトル

任意の行列 AA に対して、ある行列 PP を使って

A=P1AP(4.5)A^\prime = P^{-1} A P \tag{4.5}

をつくることを相似変換という。 相似変換された行列 AA^\prime の固有値は、特性方程式

det(P1APλI)=0\det(P^{-1} A P - \lambda I) = 0

から定まる。 ところが1)1)

1)^{1)} det(AB)=detAdetB\det(AB) = \det A \cdot \det B 。これより、 detA1detA=1\det A^{-1} \cdot \det A = 1

det(P1APλI)=det[P1(AλI)P]=detP1det(AλI)detP=det(AλI)\begin{aligned} \det(P^{-1} A P - \lambda I) & = \det[ P^{-1} (A - \lambda I) P ] \cr & = \det P^{-1} \cdot \det(A - \lambda I) \cdot \det P = \det(A - \lambda I) \cr \end{aligned}

であるから、 P1APP^{-1} A P の固有値は AA の固有値と同じである。 一般の大行列の行列式の数値計算は困難であるが、相似変換によって固有値が変わらないことを利用して、与えられた行列 AA を相似変換によって行列式を計算し易い形の行列に相似変換すれば、固有値を容易に求めることが出来る。

一方、固有ベクトルは相似変換によって変換されてしまい、不変ではない。 P1APP^{-1} A P の固有値 λ\lambda に属する固有ベクトルを yy とすると

P1APy=λyP^{-1} A P y = \lambda y

である。 両辺に PP を乗じて

APy=λPyすなわちA(Py)=λ(Py)A P y = \lambda P y \qquad \text{すなわち} \qquad A(P y) = \lambda (P y)

となるが (4.1)(4.1) と比べると、 AA の固有ベクトル xx

x=Py(4.6)x = P y \tag{4.6}

である。 したがって、 P1APP^{-1} A P の固有ベクトル yy を求めたら、 (4.6)(4.6) によって AA の固有ベクトル xx を求めることが出来る。

こうして、固有値と固有ベクトルを求め易い行列に相似変換して、固有値問題を解くことが以下の問題になる。

4.1.3 三角行列への相似変換

線形代数の基本定理に、次のような定理がある。


シュールの定理\text{シュールの定理}

任意の複素正方行列 AA は、ユニタリ行列 UU によって三角行列 SS に相似変換出来る2)2)

U1AU=S(4.7)U^{-1} A U = S \tag{4.7}

この定理をシュール (Schur) の定理という。 行列の固有値問題にとって重要なので、問題 4-1 で証明されている。

2)^{2)} ユニタリ行列とは、 UHU=UUH=IU^\text{H} U = U U^\text{H} = I であるような行列である。 ただし、 UHU^\text{H}UU のエルミート共役行列 (転置して複素共役をとった行列) である。 ユニタリ行列の逆行列は、そのエルミート共役行列である: U1=UHU^{-1} = U^\text{H} 。 また、実ユニタリ行列は直交行列である。 エルミート行列とは HH=HH H = H であるような行列である。 対称行列は実エルミート行列である。


例題 4.1

次を証明せよ。

(1)(1) エルミート行列 HH は、ユニタリ行列 UU によって対角化出来る:

UHHU=DD=diag(λ1,λ2,λn)U^\text{H} H U = D \qquad D = \text{diag}(\lambda_1, \lambda_2, \cdots \lambda_n)

(2)(2) 実対称行列 SS は、直交行列 RR によって対角化出来る:

RSR=D,D=diag(λ1,λ2,,λn)R^\top S R = D, \qquad D = \text{diag}(\lambda_1, \lambda_2, \cdots , \lambda_n)

ここに、 λ1,λ2,,λn\lambda_1, \lambda_2, \cdots , \lambda_nHH または SS の固有値で、全部実数である。

[解]

(4.7)(4.7) より

(1)(1) SS を三角行列として UHHU=SU^\text{H} H U = S と置くと

SH=(UHHU)H=UHHHU=UHHU=SS^\text{H} = (U^\text{H} H U)^\text{H} = U^\text{H} H^\text{H} U = U^\text{H} H U = S

故に三角行列 SS は実は実数を対角要素とする対角行列 DD である。 相似変換によって固有値は変わらず、対角行列の固有値は対角要素であるから、

S=D=diag(λ1,λ2,,λn)S = D = \text{diag}(\lambda_1, \lambda_2, \cdots , \lambda_n)

である。

(2)(2) 実対称行列は実エルミート行列であり、直交行列は実ユニタリ行列であることから明かである。


特に (2)(2) は、4.3 節ヤコビ法の理論的根拠である。

シュールの定理によれば、任意の行列はユニタリ変換によって三角行列に相似変換できる。 三角行列の固有値は対角要素そのものであるから、ユニタリ変換さえ見つかれば固有値は求められる。 ただし、ユニタリ変換を見つけるときに注意しなければならないことは、代数学の定理3)3) によると、5次以上の代数方程式は有限回の代数演算 (加減乗除とベキ乗根の演算) では解けないことが知られている。 このことは、5次以上の行列のユニタリ変換を見つけるには、理論的には無限回演算が必要であること、数値計算上は無限回反復を意味する4)4)

3)^{3)} ガロア (Galois) の理論またはアベル (Abel) の定理

4)^{4)} 数値計算上では、数値がある許容誤差以内に納まれば、反復を停止すればよいが。

次に注意しなければならないことは、理工学に現れる行列の多くは実行列であり、本書でも固有値問題を解くべき行列を実行列に限ることである。 このとき、特性方程式の係数は実数である。 しかし、実数係数の特性方程式の解である固有値は、実数または複素共役な複素数の組である5)5) 。 また、シュールの定理のユニタリ行列 UU は一般に複素行列であるが、直交行列 (実ユニタリ行列) に限定すれば、直交変換によっては三角行列に変換できなくて、対角線上に1次または2次小行列が並ぶブロック三角行列 (4.8 節図 4.14 参照) に変換される。 このことは、後の 4.8 節の QR\text{QR} 法、ダブル QR\text{QR} 法でもふれる。

5)^{5)} 実数係数の多項式を f(x)f(x) とすると、 f(x)=0f(x) = 0 ならば f(x)=0f(x^\ast) = 0 である。 ただし、 xx^\astxx の複素共役。

4.1.4 対角化可能な行列

P1APP^{-1} A P が対角行列であるような PP が存在するとき、 AA は対角化可能であるという。 一方、例題 4.1 で示したように、実行列の中でも実対称行列は、固有値も固有ベクトルも全部実数である。 そして、理論的には無限回反復が必要であるが、対角化可能である。 実対称行列か否かは、その行列を見ればすぐわかる。 実数の範囲の演算で対角化可能な実行列には、実対称行列の他に、固有値がすべて実数でかつ相異なるような行列がある。 しかし、この場合は、固有値がすべて異なる実数であることがわかっていなければならない。 また、問題 4-2 に示したように、正規行列6)6) は対角化可能である。

6)^{6)} AHA=AAHA^\text{H} A = A A^\text{H} である行列 AA を正規行列という。 エルミート行列、ユニタリ行列、実対称行列、直交行列は正規行列である。

行列を見ただけではわかりにくいが、 nn 個すべての固有ベクトル xi(1in)x_i (1 \leqq i \leqq n) が1次独立である時は、 AA は対角化可能である7)7) 。 このことは、次のようにしてわかる。 nn 個の固有ベクトル (列ベクトル) xix_i を並べて、

P=( x1 x2  xn )(4.8)P = (\ x_1\ x_2\ \cdots\ x_n\ ) \tag{4.8}

と置く。 そうすると

AP=A( x1 x2  xn )=( Ax1 Ax2  Axn )=( λ1x1λ2x2 λnxn )=( x1 x2  xn )Λ=PΛ\begin{aligned} A P & = A (\ x_1\ x_2\ \cdots\ x_n\ ) \cr & = (\ A x_1\ A x_2\ \cdots\ A x_n\ ) \cr & = (\ \lambda_1 x_1 \lambda_2 x_2 \cdots\ \lambda_n x_n\ ) \cr & = (\ x_1\ x_2\ \cdots\ x_n\ ) \varLambda \cr & = P \varLambda \cr \end{aligned}

ただし、 Λ=diagλ1,λ2,,λn\varLambda = \text{diag} { \lambda_1, \lambda_2, \cdots , \lambda_n } は、 λ1,λ2,,λn\lambda_1, \lambda_2, \cdots , \lambda_n を対角要素とする対角行列である。 x1,x2,,xnx_1, x_2, \cdots , x_n は1次独立であるから detP0\det P \neq 0 であり、 P1P^{-1} が存在する。 したがって、 P1AP=ΛP^{-1} A P = \varLambda であり、対角化可能である。

7)^{7)} 逆に、対角化可能な行列には 1 次独立な固有ベクトルが存在する。

[例 4.3]

[例 4.2] の2行2列の行列の例で、2つの1次独立な固有ベクトルが存在するとき、相似変換行列 PPP=( x1 x2 )P = (\ x_1\ x_2\ ) とおけば、対角化可能である。 例えば、 a=1a = 1b=2b = 2c=3c = 3d=4d = 4 としたとき、 (D=330(D = 33 \neq 0bc=60)bc = 6 \neq 0)

det(AλI)=λ25λ2=0,λ1=12(5+33),λ2=12(533)P=( x1 x2 )=(443+33333),P1=(3+3383312333+338331233)P1AP=(12(5+33)0012(533))=(λ100λ2)=Λ\begin{aligned} & \det(A - \lambda I) = \lambda^2 - 5 \lambda - 2 = 0, \quad \therefore \quad \lambda_1 = \frac{1}{2} (5 + \sqrt{33}), \quad \lambda_2 = \frac{1}{2} (5 - \sqrt{33}) \cr & P = (\ x_1\ x_2\ ) = \begin{pmatrix} 4 & 4 \cr 3 + \sqrt{33} & 3 - \sqrt{33} \cr \end{pmatrix}, \quad P^{-1} = \begin{pmatrix} \displaystyle\frac{-3 + \sqrt{33}}{8 \sqrt{33}} & \displaystyle\frac{1}{2 \sqrt{33}} \cr \displaystyle\frac{3 + \sqrt{33}}{8 \sqrt{33}} & \displaystyle\frac{-1}{2 \sqrt{33}} \cr \end{pmatrix} \cr & \therefore \quad P^{-1} A P = \begin{pmatrix} \frac{1}{2} (5 + \sqrt{33}) & 0 \cr 0 & \frac{1}{2} (5 - \sqrt{33}) \cr \end{pmatrix} = \begin{pmatrix} \lambda_1 & 0 \cr 0 & \lambda_2 \cr \end{pmatrix} = \varLambda \end{aligned}

4.1.5 ジョルダンの標準形

nn 個の固有ベクトルが1次独立でないことがおこるのは、 nn 個の固有値の中に重複固有値が存在する時のみである ([例 4.2] 参照)。 一方、シュールの定理によれば、任意の正方行列はユニタリ変換によって三角行列に変換できる。 対角行列に最も近い三角行列としては、ジョルダン (Jorda_n) の標準形と呼ばれる次の三角行列がある。

J=(J1J20Ji0Jr),Ji=(λi1λi10λi01λi)(4.9)J = \begin{pmatrix} J_1 \cr & J_2 & & & \Large{0} \cr & & \ddots \cr & & & J_i \cr & \Large{0} & & & \ddots \cr & & & & & J_r \cr \end{pmatrix}, \quad J_i = \begin{pmatrix} \lambda_i & 1 \cr & \lambda_i & 1 & \Large{0} \cr & & \lambda_i & \ddots \cr & \Large{0} & & \ddots & 1 \cr & & & & \lambda_i \cr \end{pmatrix} \tag{4.9}

ここに、 Ji(1ir)J_i (1 \leqq i \leqq r) は、ジョルダン細胞と呼ばれ、対角要素が固有値 λi\lambda_i 、上副対角要素が 11 である nin_i 次小行列である。 もちろん、 n1+n2++nr=nn_1 + n_2 + \cdots + n_r = n である。 特に、 ni=1n_i = 1 の時は JiJ_i は対角要素のみの1行1列の行列と見なし、したがって、すべての ni=1n_i = 1 なら JJ は対角行列である。 このとき、次の定理がある。


定理 (ジョルダンの標準形)\text{定理 (ジョルダンの標準形)}

すべての nn 次正方行列 AA は、ある PP によって P1AP=JP^{-1} A P = J とジョルダンの標準形に相似変換できる。


ただし、この定理の PP は、一般には複素数行列であるが、ユニタリ行列とは限らない。 また、固有値は一般には複素数で、複数のジョルダン細胞の固有値が等しいこともある。 この定理の証明は、線形代数学の教科書を参照されたい8)8) 。 ここでは、対角化できない行列の実例を示す。

8)^{8)} 例えば 川上一郎「ジョルダン標準形」 http://www7.ocn.ne.jp/~kawa1/difform.pdf

[例 4.4]

[例 4.2] の重複固有値 ( λ1=λ2=a=d, b0, c=0 )(\ \lambda_1 = \lambda_2 = a = d,\ b \neq 0,\ c = 0\ ) の場合、固有ベクトル x1x_1x2x_2 は1次従属であるから、 P=( x1 x2 )P = (\ x_1\ x_2\ ) とすると、 detP=0\det P = 0 となって P1P^{-1} は存在しない。 そこで、1つの固有ベクトルを x1=( 1 0 )x_1 = (\ 1\ 0\ )^\top ととって、 x2x_2x1x_1 とは1次独立なベクトルであるように、 x2=( x y )x_2 = (\ x\ y\ )^\top と置く( xxyy は以下決める )。 このとき、

P=( x1 x2 )=(1x0y)P1=(1xy01y)(y0)P = (\ x_1\ x_2\ ) = \begin{pmatrix} 1 & x \cr 0 & y \cr \end{pmatrix} \qquad \therefore \quad P^{-1} = \begin{pmatrix} 1 & - \frac{x}{y} \cr 0 & \frac{1}{y} \cr \end{pmatrix} \qquad (y \neq 0)

故に

P1AP=(aby0a)P^{-1} A P = \begin{pmatrix} a & b y \cr 0 & a \cr \end{pmatrix}

である。 detP=y0\det P = y \neq 0 より y0y \neq 0 であるから、 b0b \neq 0 より P1APP^{-1} A P は対角行列ではない。 とくに、 y=1/by = 1 / b とおけば、 P1APP^{-1} A P は、ジョルダン細胞である。 ( なお、 xx は任意だから、 x=0x = 0 としてもよい。)

4.1.6 固有値問題の数値解法

以上の考察から、実行列の固有値問題の数値解法の方針は、次のようになる。

(1)(1) 実対称行列については、直交変換で対角化して固有値と固有ベクトルを求める方法を考察する。 これは、最も古典的な方法であるヤコビ法 (4.3 節) である。

(2)(2) 一般の実行列 (実対称行列を含む) に対しては、三重対角行列またはヘッセンベルグ行列への直交行列を用いた相似変換を行って、簡単化された行列の固有値問題に直して、それを解く。

まず、準備として、対角行列、三重対角行列、ヘッセンベルグ行列の行列式の求め方について述べる。 その後で、相似変換のための直交行列を求め、簡単化された固有値問題を解く。

4.2 簡単な行列の固有値計算

4.2.1 対角行列・三角行列の行列式

固有値を求めることは、代数方程式である特性方程式 (4.3)(4.3) の解を求めることである。 そのためには、 nn 次行列式を計算する必要がある。 一般に nn が大きい nn 次行列式を数値計算することは非常に手間がかかり、しかも精度が悪い。

行列が簡単な形の場合には、行列式の計算も簡単である。 行列式が求めやすい行列の形としては、非対角要素が全部 00 である対角行列 (diagonal matrix) がある。 対角行列 DD の対角要素 (diagonal element) を a11,a22,,anna_{11}, a_{22}, \cdots , a_{nn} とすると、対角行列は

D=(a11a220a330ann)対角行列(4.10)D = \begin{pmatrix} a_{11} \cr & a_{22} & & & \Large{0} \cr & & a_{33} \cr & & & \ddots \cr & \Large{0} & & & \ddots \cr & & & & & a_{nn} \cr \end{pmatrix} \qquad \text{対角行列} \tag{4.10}

であり、対角行列 DD の特性方程式は、

det(DλI)=(a11λ)(a22λ)(annλ)=0\det(D - \lambda I) = (a_{11} - \lambda)(a_{22} - \lambda) \cdots (a_{nn} - \lambda) = 0

であるから、固有値は

λ1=a11,λ2=a22,,λn=ann\lambda_1 = a_{11}, \lambda_2 = a_{22}, \cdots , \lambda_n = a_{nn}

と立ちどころに求めることができる。 すなわち、対角行列の固有値は対角要素である。

もう少し一般的で固有値の求め易い行列は、対角要素の下の要素が 00 である上三角行列 (upper tria_ngular matrix)、対角要素の上の要素が 00 である下三角行列 (lower tria_ngular matrix) である。 これらの三角行列 SS

S=(a11a12a13a1na22a23a2na33a3n0ann)上三角行列(4.11)S = \begin{pmatrix} a_{11} & a_{12} & a_{13} & \cdots & a_{1n} \cr & a_{22} & a_{23} & \cdots & a_{2n} \cr & & a_{33} & \cdots & a_{3n} \cr & \Large{0} & & \ddots & \vdots \cr & & & & a_{nn} \cr \end{pmatrix} \qquad \text{上三角行列} \tag{4.11} S=(a11a21a220a31a32a33an1an2an3ann)下三角行列(4.12)S = \begin{pmatrix} a_{11} \cr a_{21} & a_{22} & & \Large{0} \cr a_{31} & a_{32} & a_{33} \cr \vdots & \vdots & \vdots & \ddots \cr a_{n1} & a_{n2} & a_{n3} & \cdots & a_{nn} \cr \end{pmatrix} \qquad \text{下三角行列} \tag{4.12}

の形をしている。 特性方程式は上三角行列も下三角行列も同じで、

det(SλI)=(a11λ)(a22λ)(annλ)=0\det(S - \lambda I) = (a_{11} - \lambda)(a_{22} - \lambda) \cdots (a_{nn} - \lambda) = 0

であり、対角行列の時と同じく、固有値は対角要素である。 なお対称な三角行列は対角行列である。

以上の対角行列と三角行列は、行列式の計算も容易どころか、行列式の計算はするまでもなく固有値が求められてしまっている。

4.2.2 三重対角行列の行列式

次にもう少し一般的で、行列式の計算が容易な行列は

T=(a11a12a21a22a230a32a33a43an2 n10an1 n1an1 nan n1an n)(4.13)T = \begin{pmatrix} a_{11} & a_{12} \cr a_{21} & a_{22} & a_{23} & & \Large{0} \cr & a_{32} & a_{33} & \ddots \cr & & a_{43} & \ddots & a_{n-2\ n-1} \cr & \Large{0} & & \ddots & a_{n-1\ n-1} & a_{n-1\ n} \cr & & & &a_{n\ n-1} & a_{n\ n} \cr \end{pmatrix} \tag{4.13}

という形をしている三重対角行列 (tridiagonal matrix) である。 三重対角行列は、対角要素とその隣の要素以外は 00 であるような行列である。 対角要素の隣の要素を副対角要素 (subdiagonal element) という。

三重対角行列の特性方程式は、対角行列や三角行列のようには簡単ではないが、うまい計算方法がある。 三重対角行列を TT とすると、 TλIT - \lambda I も三重対角行列である。 まず1次行列 T1λIT_1 - \lambda I から出発して、2次、3次、 \cdots の小行列を図 4.1 のようにつくる。 それぞれの行列を T1λI,T2λI,,TnλIT_1 - \lambda I, T_2 - \lambda I, \cdots , T_n - \lambda I と書く9)9) 。 さらに、各行列式を

d1=det(T1λI)=a11λd2=det(T2λI)dn1=det(Tn1λI)dn=det(TnλI)=det(TλI)\begin{array}{ll} d_1 & = \det(T_1 - \lambda I) = a_{11} - \lambda \cr d_2 & = \det(T_2 - \lambda I) \cr & \quad \cdots \, \cdots \cr d_{n-1} & = \det(T_{n-1} - \lambda I) \cr d_n & = \det(T_n - \lambda I) = \det(T - \lambda I) \cr \end{array}

と書くと、次の関係があることは図 4.1 からすぐ わかる。

d0=1d1=(a11λ)d2=(a22λ)d1a12a21d0dk=(akkλ)dk1ak1 kak k1dk2dn1=(an1 n1λ)dn2an2 n1an1 n2dn3dn=(annλ)dn1an1 nan n1dn2(4.14)\begin{array}{ll} d_0 & = 1 \cr d_1 & = (a_{11} - \lambda) \cr d_2 & = (a_{22} - \lambda) d_1 - a_{12} a_{21} d_0 \cr & \quad \cdots \, \cdots \cr d_k & = (a_{kk} - \lambda) d_{k-1} - a_{k-1\ k} a_{k\ k-1} d_{k-2} \cr & \quad \cdots \, \cdots \cr d_{n-1} & = (a_{n-1\ n-1} - \lambda) d_{n-2} - a_{n-2\ n-1} a_{n-1\ n-2} d_{n-3} \cr d_n & = (a_{nn} - \lambda) d_{n-1} - a_{n-1\ n} a_{n\ n-1} d_{n-2} \cr \end{array} \tag{4.14}

この関係を順にたどって行けば、目的とする dn=det(TλI)d_n = \det(T - \lambda I) が求められる。

9)^{9)} ここで単位行列 II は1次、2次、 \cdots であるから I1,I2,I_1 , I_2 , \cdots と次数を明示すべきであろうが、混乱することもないので、全部 II と書く。 I1=1I_1 = 1 である。

4.2.3 スツルムの定理

実対称行列の固有値は実数である。 さらに実対称行列が三重対角であれば、固有値はすべて異なる10)10) 。 そして、行列式が上のように簡単に求められるだけではなく、固有値自身も容易に求められる。 それは、 d0,d1,d2,d3,,(1)ndnd_0, - d_1, d_2, - d_3, \cdots , (-1)^n d_n を固有値 λ\lambda の関数の列と見なしたとき、スツルムの関数列と呼ばれる関数列になっているからである。

10)^{10)} ここでは、副対角要素は ak k+1=ak+1 k0a_{k\ k+1} = a_{k+1\ k} \neq 0 とする。 副対角要素が 00 のときは行列 TT は小行列に直和分解され、それぞれの小行列ごとにスツルムの定理が成り立つ。 例えば、2つの同じ三重対角実対称行列に直和分解されたときは、2組の同じ固有値を持つ。

λ\lambda の関数の列 (f0(λ),f1(λ),fn1(λ),fn(λ))( f_0 (\lambda), f_1 (\lambda), \cdots f_{n-1} (\lambda), f_n (\lambda) ) が次の4つの条件を満足するとき、スツルムの関数列という:


(1)(1) f0(λ)f_0 (\lambda) の符号は一定である。

(2)(2) ある λ\lambda に対して、連続した2つの関数 (fk(λ),fk+1(λ))(f_k (\lambda), f_{k+1} (\lambda)) は同時には 00 にならない。

(3)(3) ある λ\lambdafk(λ)=0f_k (\lambda) = 0 ならば、 fk1(λ)f_{k-1} (\lambda)fk+1(λ)f_{k+1} (\lambda) は逆符号である。

(4)(4) fk(λ)=0f_k (\lambda) = 0 ならば、 fk(λ)f_k^{\prime} (\lambda)fk1(λ)f_{k-1} (\lambda) の符号は同じである。


ところで、実対称3重対角行列の場合、 fk(λ)=(1)kdkf_k (\lambda) = (-1)^k d_k と置けば、 fk(λ)(k=0,1,2,3,,n1,n)f_k (\lambda) (k = 0, 1, 2, 3, \cdots , n - 1, n) は、

f0=1,f1=λa11,f2=(λa22)f1a212f0,fk1=(λak1 k1)fk2ak1 k22fk3,fk=(λakk)fk1ak k12fk2,fk+1=(λak+1 k+1)fkak+1 k2fk1,fn1=(λan1 n1)fn2an1 n22fn3,fn=(λann)fn1an n12fn2(4.15)\begin{array}{ll} f_0 & = 1, \cr f_1 & = \lambda - a_{11}, \cr f_2 & = (\lambda - a_{22}) f_1 - a_{21}^2 f_0, \cr \cdots & \quad \cdots \cr f_{k-1} & = (\lambda - a_{k-1\ k-1}) f_{k-2} - a_{k-1\ k-2}^2 f_{k-3}, \cr f_k & = (\lambda - a_{kk}) f_{k-1} - a_{k\ k-1}^2 f_{k-2}, \cr f_{k+1} & = (\lambda - a_{k+1\ k+1}) f_k - a_{k+1\ k}^2 f_{k-1}, \cr \cdots & \quad \cdots \cr f_{n-1} & = (\lambda - a_{n-1\ n-1}) f_{n-2} - a_{n-1\ n-2}^2 f_{n-3}, \cr fn & = (\lambda - a_{nn}) f_{n-1} - a_{n\ n-1}^2 f_{n-2} \cr \end{array} \tag{4.15}

であるが、これがスツルムの関数列をなすことは、次のようにして示される。


(1)(1) f0(λ)=1f_0 (\lambda) = 1 は定符号である。

(2)(2) もしある λ\lambda に対して fk(λ)f_k (\lambda)fk1(λ)f_{k-1} (\lambda)00 になったら、 fk2(λ)f_{k-2} (\lambda)00 である。 これを繰り返すと f0(λ)f_0 (\lambda)00 となり、 f0(λ)=1f_0 (\lambda) = 1 と矛盾する。

(3)(3) fk(λ)=0f_k (\lambda) = 0 ならば、 fk+1(λ)=ak+1 k2fk1(λ)f_{k+1} (\lambda) = -a_{k+1\ k}^2 f_{k-1} (\lambda) であるから、 fk+1(λ)f_{k+1} (\lambda)fk1(λ)f_{k-1} (\lambda) はお互いに逆符号である。

(4)(4) まず、 fk(λ)f_k (\lambda) とその微分は

fk=(λakk)fk1ak k12fk2fk=(λakk)fk1+fk1ak k12fk2\begin{aligned} & f_k = (\lambda - a_{kk}) f_{k-1} - a_{k\ k-1}^2 f_{k-2} \cr & f_k^{\prime} = (\lambda - a_{kk}) f_{k-1}^{\prime} + f_{k-1} - a_{k\ k-1}^2 f_{k-2}^{\prime} \end{aligned}

この2式の右辺第1項を消去して

fk1fkfk1fk=fk12+ak k12{fk2fk1fk2fk1}f_{k-1}f_k^{\prime} - f_{k-1}^{\prime} f_k = f_{k-1}^2 + a_{k\ k-1}^2 \{ f_{k-2} f_{k-1}^{\prime} - f_{k-2}^{\prime} f_{k-1} \}

kkk1,k2,,3,2k - 1, k - 2, \cdots , 3, 2 と繰り返せば、 k=2k = 2 のとき

f1f2f1f2=f12+a212{f0f1f0f1}=(λa11)2+a212>0f_1 f_2^{\prime} - f_1^{\prime} f_2 = f_1^2 + a_{21}^2 \{ f_0 f_1^{\prime} - f_0^{\prime} f_1 \} = (\lambda - a_{11})^2 + a_{21}^2 > 0

これを k=3,4,k = 3, 4, \cdots と逆に繰り返せば、

fk1fkfk1fk>0f_{k-1} f_k^{\prime} - f_{k-1}^{\prime} f_k > 0

このとき、 fk(λ)=0f_k(\lambda) = 0 ならば

fk1fk>0f_{k-1} f_k^{\prime} > 0

すなわち、 fk(λ)=0f_k(\lambda) = 0 ならば fk(λ)f_k^{\prime} (\lambda)fk1(λ)f_{k-1} (\lambda) と同符号である。


ある λ\lambda について、スツルムの関数列の符号変化の回数を NCS(λ)\text{NCS}(\lambda) とする。 例えば n=5,λ=3n = 5, \lambda = 3 としたとき、

f0(3)=1,f1(3)=4,f2(3)=0,f3(3)=3,f4(3)=2,f5(3)=7f_0 (3) = 1, f_1 (3) = -4, f_2 (3) = 0, f_3 (3) = 3, f_4 (3) = -2, f_5 (3) = -7

ならば、符号変化 +0++ - 0 + - - の回数は NCS(3)=3\text{NCS}(3) = 3 である。 なお、 0+-0++0+0- の符号変化の回数はどちらも1回と数える。 このとき、符号変化回数 NCS(λ)\text{NCS}(\lambda)fn(λ)=0f_n (\lambda) = 0 の実数解の個数の間に次のスツルム (Sturm) の定理がある。


スツルムの定理\text{スツルムの定理}

fn(a)0f_n (a) \neq 0fn(b)0f_n (b) \neq 0 とする。 範囲 a<λ<ba < \lambda < b における fn(λ)=0f_n (\lambda) = 0 の実数解の個数は NCS(a)NCS(b)\text{NCS}(a) - \text{NCS}(b) である。


もちろん、 fn(a)=0f_n(a) = 0 ならば aa は解であり、 fn(b)=0f_n(b) = 0 ならば bb は解である。 次に例を示す。

[例 4.5]

対角要素が 22 で、副対角要素が 11 である nn 次三重対角実対称行列の固有値は

λk=4cos2[kπ2(n+1)]k=1,2,,n\lambda_k = 4 \cos^2 \left[ \frac{k\pi}{2(n + 1)} \right] \qquad k = 1, 2, \cdots , n

である (問題 4-15 参照)。 ここでは、 n=5n = 5 とする。 このときの固有値は

λ1=3.732050, λ2=3, λ3=2, λ4=1, λ5=0.267949192\lambda_1 = 3.732050 \cdots ,\ \lambda_2 = 3,\ \lambda_3 = 2,\ \lambda_4 = 1,\ \lambda_5 = 0.267949192 \cdots

である。 一方、行列式の特性方程式から作ったスツルム関数列の符号変化回数を求てみると表のようになる。 (小数点以下2桁目を4捨5入)

λ\lambda 0.0 0.5 1.0 2.0 3.0 3.5 4.0
f0=1f_0 = 1 1.0 1.0 1.0 1.0 1.0 1.0 1.0
f1=λ2f_1 = \lambda - 2 -2.0 -1.5 -1.0 0.0 1.0 1.5 2.0
f2=(λ2)f1f0f_2 = (\lambda - 2)f_1 - f_0 3.0 1.3 0.0 -1.0 0.0 1.3 3.0
f3=(λ2)f2f1f_3 = (\lambda - 2)f_2 - f_1 -4.0 -0.4 1.0 0.0 -1.0 0.4 4.0
f4=(λ2)f3f2f_4 = (\lambda - 2)f_3 - f_2 5.0 -0.7 -1.0 1.0 -1.0 -0.7 5.0
f5=(λ2)f4f3f_5 = (\lambda - 2)f_4 - f_3 -6.0 1.4 0.0 0.0 0.0 -1.4 6.0
符号変化回数 (NCS)\text{符号変化回数 (NCS)} 5 4 (3) (2) (1) 1 0
固有値の数\text{固有値の数} 1 1 1 1 1    

この表から、固有値は 0<λ<0.50 < \lambda < 0.5 の間に1個、 λ=1,λ=2,λ=3\lambda = 1, \lambda = 2, \lambda = 3f5=0f_5 = 0 であるから固有値、 3.5<λ<43.5 < \lambda < 4 の間に1個あることがわかる。 この数は固有値の数と一致している。 なお、 λ=1,2,3\lambda = 1, 2, 3 のときの符号変化の回数はここでは問題にしない。

この場合、 (f0,f1,,f5)(f_0, f_1, \cdots , f_5) は図 4.2 の通りである。 実際、この図の場合スツルムの定理の成り立つことを示す。 以下、 fk(λ)=0f_k(\lambda) = 0 の解を α1(k),α2(k),\alpha_1^{(k)} , \alpha_2^{(k)} , \cdots と書く。


(a)(a) スツルムの関数列の性質 (1)(1)f0(λ)=1f_0(\lambda) = 1 は定符号であることより明らかである。

(b)(b) f0(λ)=1>0f_0(\lambda) = 1 > 0f1(λ)=1>0f_1^{\prime}(\lambda) = 1 > 0 であるから、性質 (4)(4) は満たされている。 そうして、 f1(λ)=λa11=0f_1(\lambda) = \lambda - a_{11} = 0 の解は λ=a11=α(1)\lambda = a_{11} = \alpha^{(1)} であるから、関数列 (f0,f1)(f_0 , f_1) の符号変化回数は、解の左側 (λ<α(1))(\lambda < \alpha^{(1)}) では1回、右側 (λα(1))(\lambda \geqq \alpha^{(1)}) では0回である。

(c)(c) f2(λ)=0f_2(\lambda) = 0 の解は、性質 (2)(2) より f1(λ)=0f_1(\lambda) = 0 の解と一致することはない。 そして、 f2(λ)f_2^{\prime}(\lambda) の符号は f1(λ)f_1(\lambda) の符号と同じであるから、 f2(λ)f_2(\lambda)α1(1)\alpha_1^{(1)} の左では減少関数、右では増加関数である。 したがって、解 α1(2)\alpha_1^{(2)}α1(1)\alpha_1^{(1)} の左側にあり、 α2(2)\alpha_2^{(2)} は右側にあることになる。 すなわち、 α1(2)<α1(1)<α2(2)\alpha_1^{(2)} < \alpha_1^{(1)} < \alpha_2^{(2)} である。 また符号変化の回数は、 α1(2)\alpha_1^{(2)}α2(2)\alpha_2^{(2)} それぞれの左側では1回増加し右側では変わらず、その結果、 (f0,f1,f2)(f_0, f_1, f_2) の符号変化回数は λ<α1(2)\lambda < \alpha_1^{(2)} では2回、 α1(2)λ<α2(2)\alpha_1^{(2)} \leqq \lambda < \alpha_2^{(2)} では1回、 α2(2)λ\alpha_2^{(2)} \leqq \lambdaでは0回である。

(d)(d) 同様に f3(λ)=0f_3(\lambda) = 0 の解と f2(λ)=0f_2(\lambda) = 0 の解は、交互に並び、

α1(3)<α1(2)<α2(3)<α2(2)<α3(3)\alpha_1^{(3)} < \alpha_1^{(2)} < \alpha_2^{(3)} < \alpha_2^{(2)} < \alpha_3^{(3)}

となる。 符号変化の回数は、最左側では3回、解と解の2つの間ではそれぞれ2回と1回、最右側では0回である。

(e)(e) 同様に、 k=n=5k = n = 5 のとき、最左端、 f5(λ)=0f_5(\lambda) = 0 の5つの解の間および最右端の (f0,f1,f2,f3,f4,f5)(f_0, f_1, f_2, f_3, f_4, f_5) の符号変化の回数は、それぞれ5回、4回、3回、2回、1回、0回である。


一般に、 (f0,f1,f2,,fk1)(f_0, f_1, f_2, \cdots , f_{k-1}) についてスツルムの定理が成立していると仮定する。 fk(λ)=0f_k (\lambda) = 0kk 個の解 α1(k)<α2(k)<<αk(k)\alpha_1^{(k)} < \alpha_2^{(k)} < \cdots < \alpha_k^{(k)} はスツルム関数列の性質 (2)(2) より fk1(λ)=0f_{k-1}(\lambda) = 0 の解と一致することはなく、また、性質 (3)(3)(4)(4) より fk1(λ)=0f_{k-1}(\lambda) = 0 の解の外側と間に1個づつ存在するから、

α1(k)<α1(k1)<α2(k)<α2(k1)<<αk1(k1)<αk(k)\alpha_1^{(k)} < \alpha_1^{(k-1)} < \alpha_2^{(k)} < \alpha_2^{(k-1)} < \cdots < \alpha_{k-1}^{(k-1)} < \alpha_k^{(k)}

のように、 αi(k)\alpha_i^{(k)}αi1(k1)\alpha_{i-1}^{(k-1)}αi(k1)\alpha_i^{(k-1)} の間にある。 そうして、 (f0,f1,,fk1,fk)(f_0, f_1, \cdots , f_{k-1}, f_k) の符号変化の回数は αi(k)\alpha_i^{(k)} の左側 (αi1(k1)<λ<αi(k))(\alpha_{i-1}^{(k-1)} < \lambda < \alpha_i^{(k)}) では1回増えて ki+1k - i + 1 回となり、右側 (αi(k)λ<αi(k1))(\alpha_i^{(k)} \leqq\lambda < \alpha_i^{(k-1)}) では変化せず kik - i 回のままである。 同様に、 αi+1(k)\alpha_{i+1}^{(k)} の左側は1回増えて kik - i 回、右側は ki1k - i - 1 回のまま変化がない。 その結果、 αi(k)λ<αi+1(k)\alpha_i^{(k)} \leqq \lambda < \alpha_{i+1}^{(k)} では kik - i 回となる。 こうして、 (f0,f1,,fk1,fk)(f_0, f_1, \cdots , f_{k-1}, f_k) の各区間における符号変化回数は

 λ<α1(k)ではk 回α1(k) λ<α2(k)ではk1 回α2(k) λ<α3(k)ではk2 回αi1(k) λ<αi(k)ではki+1 回αk1(k) λ<αk(k)では1 回αk(k) λでは0 回\begin{alignedat}{4} & \ \lambda & & < \alpha_1^{(k)} & \qquad & \text{では} & \quad & k \text{ 回} \cr \alpha_1^{(k)} \leqq & \ \lambda && < \alpha_2^{(k)} && \text{では} && k - 1 \text{ 回} \cr \alpha_2^{(k)} \leqq & \ \lambda && < \alpha_3^{(k)} && \text{では} && k - 2 \text{ 回} \cr \cdots & && \cdots && \cdots \cr \alpha_{i-1}^{(k)} \leqq & \ \lambda && < \alpha_i^{(k)} && \text{では} && k - i + 1 \text{ 回} \cr \cdots & && \cdots && \cdots \cr \alpha_{k-1}^{(k)} \leqq & \ \lambda && < \alpha_k^{(k)} && \text{では} && 1 \text{ 回} \cr \alpha_k^{(k)} \leqq & \ \lambda && && \text{では} && 0 \text{ 回} \cr \end{alignedat}

となる。

この関係は、 k=nk = n に対しても成立する。 すなわち、スツルムの定理が証明された。

4.2.4 三重対角実対称行列の固有値

区間 a<λ<ba < \lambda < b の中の fn(λ)=0f_n(\lambda) = 0 の解の個数は NCS(a)NCS(b)\text{NCS}(a) - \text{NCS}(b) だから、区間の幅を小さくしていけば、実の固有値 λ\lambda を必要な精度で求められる。 区間の幅を半分にして行って解を求める方法を2分法 (bisection method) と言う。

まず、三重対角実行列の固有値の存在する範囲は、後で述べるゲルシュゴリンの 定理 (図 4.4 および 問題 4-5 参照) より、

a=mini{aiiai i1ai i+1}下限b=maxi{aii+ai i1+ai i+1}上限}(4.16)\begin{rcases} a = \displaystyle\min_i \{ a_{ii} - \vert a_{i\ i-1} \vert - \vert a_{i\ i+1} \vert \} & \text{下限} \cr b = \displaystyle\max_i \{ a_{ii} + \vert a_{i\ i-1} \vert + \vert a_{i\ i+1} \vert \} & \text{上限} \cr \end{rcases} \tag{4.16}

である。

大型行列で次数 nn が大きいとき、また λ\lambda が大きいときには、 fk(λ)f_k (\lambda) の計算中にオーバーフローを起こすことがある。 オーバーフローを避けるためには、

gk(λ)=fk(λ)fk1(λ)(4.17)g_k(\lambda) = \frac{f_k (\lambda)}{f_{k-1} (\lambda)} \tag{4.17}

なる関数を定義すれば、 (4.15)(4.15) より

g1=λa11gk=(λakk)ak k12gk1(2kn)\begin{align*} & g_1 = \lambda - a_{11} \cr & g_k = (\lambda - a_{kk}) - \frac{a_{k\ k-1}^2}{g_{k-1}} \qquad (2 \leqq k \leqq n) \tag{4.18} \cr \end{align*}

によって関数列 gk(λ)g_k(\lambda) が求められるから、スツルム関数列の符号変化回数の代わりに

gk(λ)<0(1kn)g_k(\lambda) < 0 \qquad (1 \leqq k \leqq n)

となる回数を数えればよい。 gk1(λ)=0g_{k-1}(\lambda) = 0 となる恐れがあるが、そのときには gk1(λ)g_{k-1}(\lambda) に小さな正数 (例えば 101010^{-10} ) を代入しておく。 こうしても符号変化回数には影響を与えない。

図 4.3 に 2 分法の手順の PAD を示す。 範囲を2分割して行き、小区間を増やすごとに変数 pp11 増やす。 固有値が1つになり、かつ幅が十分狭くなった小区間では、初期値を小区間の中点とするニュートン法により固有値をを求め、 p11 減らす。 全部の固有値が求められたら p = 0 になるから、 p > 0 の間手順を続ける。 各小区間の下限と上限は、配列要素 Xsl(p)Xsr(p) に記憶しておく。 また下限と上限における符号変化回数は、 Nsl(p)Nsr(p) に記憶しておく。

4.2.5 ヘッセンベルグ行列の行列式

三角行列をやや一般化した形の行列

H=(a11a12a13a1na21a22a23a2na32a33a3na430an n1ann)上ヘッセンベルグ行列(4.19)H = \begin{pmatrix} a_{11} & a_{12} & a_{13} & \cdots & \cdots & a_{1n} & \cr a_{21} & a_{22} & a_{23} & \cdots & \cdots & a_{2n} & \cr & a_{32} & a_{33} & \cdots & \cdots & a_{3n} & \cr & & a_{43} & \ddots & & \vdots \cr & \Large{0} & & \ddots & \ddots & \vdots \cr & & & & a_{n\ n-1} & a_{nn} \cr \end{pmatrix} \quad \text{上ヘッセンベルグ行列} \tag{4.19} H=(a11a12a21a22a230a31a32a33an1 nan1an2an3ann)下ヘッセンベルグ行列(4.20)H = \begin{pmatrix} a_{11} & a_{12} \cr a_{21} & a_{22} & a_{23} & & \Large{0} \cr a_{31} & a_{32} & a_{33} & \ddots \cr \vdots & \vdots & \vdots & \ddots & \ddots \cr \vdots & \vdots & \vdots & & \ddots & a_{n-1\ n} \cr a_{n1} & a_{n2} & a_{n3} & \cdots & \cdots & a_{nn} \cr \end{pmatrix} \quad \text{下ヘッセンベルグ行列} \tag{4.20}

ヘッセンベルグ (Hessenberg) 行列 という。 ヘッセンベルグ行列の行列式の値は次のようにして求める。 HH を上ヘッセンベルグ行列とすれば、 HλIH - \lambda I も上ヘッセンベルグ行列である。 固有値方程式 (HλI)x=0(H - \lambda I)x = 0 を成分で書き下すと

(a11λ)x1+a12x2++a1nxn=F(λ)a21x1+(a22λ)x2++a2nxn=0an n1xn1+(annλ)xn=0}(4.21)\left. \begin{aligned} (a_{11} - \lambda) x_1 + a_{12} x_2 + \cdots + a_{1n} x_n & = -F (\lambda) \cr a_{21} x_1 + (a_{22} - \lambda) x_2 + \cdots + a_{2n} x_n & = 0 \cr \cdots \, \cdots \, \cdots \, \cdots & \cr a_{n\ n-1} x_{n-1} + (a_{nn} - \lambda) x_n & = 0 \cr \end{aligned} \right\} \tag{4.21}

第1式の右辺は F(λ)-F (\lambda) と記した11)11)xn=1x_n = 1 として、最後の式より $x_{n-1} を求め、

xn1=(λann)xn/an n1x_{n-1} = (\lambda - a_{nn}) x_n / a_{n\ n-1}

次に i=n1,n2,,2i = n - 1, n - 2, \cdots , 2 の順に後の方から xix_i

xi1=[(λaii)xij=i+1naijxj]/ai i1=[λxij=inaijxj]/ai i1(n1i2)\begin{aligned} x_{i-1} & = \left. \left[ (\lambda - a_{ii}) x_i - \sum_{j=i+1}^n a_{ij} x_j \right] \right/ a_{i\ i-1} \cr & = \left. \left[ \lambda x_i - \sum_{j=i}^n a_{ij} x_j \right] \right/ a_{i\ i-1} \quad (n - 1 \geqq i \geqq 2) \end{aligned}

のように、すでに求めた xjx_j によって求める公式が得られる。 この x1,x2,,xnx_1, x_2, \cdots, x_nF(λ)F (\lambda) (第1式) に代入すると

F(λ)=λx1i=1na1jxj(4.22)F (\lambda) = \lambda x_1 - \sum_{i=1}^n a_{1j} x_j \tag{4.22}

となる。

11)^{11)} λ\lambda が固有値の時は F(λ)=0F (\lambda) = 0 となるはずである。

次に、 F(λ)F (\lambda)det(HλI)\det(H - \lambda I) に比例することを示そう。

det(HλI)=det(a11λa12a13a1na21a22λa23a2na32a33λa3n0an n1annλ)\det(H - \lambda I) = \det \begin{pmatrix} a_{11} - \lambda & a_{12} & a_{13} & \cdots & \cdots & a_{1n} \cr a_{21} & a_{22} - \lambda & a_{23} & \cdots & \cdots & a_{2n} \cr & a_{32} & a_{33} - \lambda & \cdots & \cdots & a_{3n} \cr & & \ddots & \ddots & & \vdots \cr & \Large{0} & & \ddots & \ddots & \vdots \cr & & & & a_{n\ n-1} & a_{nn} - \lambda \cr \end{pmatrix}

第1列に x1x_1 、第2列に x2x_2\cdotsn1n - 1 列に xn1x_{n-1} を乗じて、第 nn 列 (に xn=1x_n = 1 を乗じたもの) に加えると、

det(HλI)=det(a11λa12a13a1n1F(λ)a21a22λa23a2n10a32a33λa3n100an n10)=(1)n+2F(λ)det(a21a22λa2n1a32a3n10an n1)=(1)na21a32a43an n1F(λ)\begin{align*} \det(H - \lambda I) & = \det \begin{pmatrix} a_{11} - \lambda & a_{12} & a_{13} & \cdots & a_{1n-1} & -F (\lambda) \cr a_{21} & a_{22} - \lambda & a_{23} & \cdots & a_{2n-1} & 0 \cr & a_{32} & a_{33} - \lambda & \cdots & a_{3n-1} & 0 \cr & & \ddots & \ddots & & \vdots \cr & \Large{0} & & \ddots & \ddots & \vdots \cr & & & & a_{n\ n-1} & 0 \cr \end{pmatrix} \cr & = (-1)^{n+2} F (\lambda) \det \begin{pmatrix} a_{21} & a_{22} - \lambda & \cdots & a_{2n-1} \cr & a_{32} & \cdots & a_{3n-1} \cr \Large{0} & & \ddots & \vdots \cr & & & a_{n\ n-1} \cr \end{pmatrix} \cr & = (-1)^n a_{21} a_{32} a_{43} \cdots a_{n\ n-1} F (\lambda) \tag{4.23} \cr \end{align*}

下ヘッセンベルグ行列の場合には、 x1=1x_1 = 1 として

xi+1=[λxij=1naijxj]/ai i+1(1in1)x_{i+1} = \left. \left[ \lambda x_i - \sum_{j=1}^n a_{ij} x_j \right] \right/ a_{i\ i+1} \qquad(1 \leqq i \leqq n - 1)

の順に xi+1x_{i+1} を求め、1番下の行 (第 nn 行) から

F(λ)=λxnj=1nanjxjF (\lambda) = \lambda x_n - \sum_{j=1}^n a_{nj} x_j

を計算する。 この F(λ)F (\lambda) を用いて

det(HλI)=(1)na12a23a34an1 nF(λ)(4.24)\det(H - \lambda I) = (-1)^n a_{12} a_{23} a_{34} \cdots a_{n-1\ n} F (\lambda) \tag{4.24}

が得られる。

5重対角行列や7重対角行列についても、その行列式を求める手順をつくることは可能であろうが、加速度的に面倒になる。

4.2.6 DKA 法による固有値の計算

固有値を求めるには、与えられた行列を相似変換によって対角行列、三重対角行列、三角行列またはヘッセンベルグ行列に変換して、 nn 次代数方程式である特性方程式を解く。 nn 次代数方程式の解法は、第2章の非線形方程式の解法 (とくに代数方程式の解法) で学んだのでそれを応用すればよい。 DKA 法 (第 2 章参照) を応用すれば、固有値 λj(j=1,2,,n)\lambda_j (j = 1, 2, \cdots , n) に対して、アーバスの初期値

λj(0)=R0+Rexp[2πni(j34)](j=1,2,,n)(4.25)\lambda_j^{(0)} = R_0 + R \exp \left[ \frac{2\pi}{n} i \left( j - \frac{3}{4} \right) \right] \qquad (j = 1, 2, \cdots, n) \tag{4.25}

から出発して、

λj(k+1)=λj(k)det(λj(k)IA)i=1ijn(λj(k)λi(k))(j=1,2,,n)(4.26)\lambda_j^{(k+1)} = \lambda_j^{(k)} - \frac{\det(\lambda_j^{(k)} I - A^{\prime})}{\displaystyle\prod_{\substack{i = 1 \cr i \neq j}}^n (\lambda_j^{(k)} - \lambda_i^{(k)})} \qquad (j = 1, 2, \cdots , n) \tag{4.26}

により、収束するまで k=1,2,k = 1, 2, \cdots と反復する。 ここに、 R0R_0det(AλI)\det(A^{\prime} - \lambda I)λn\lambda^n の係数 a0a_0λn1\lambda^{n-1} の係数 a1a_1 から求められる nn 個の固有値の複素平面上の重心で、

R0=a1na0=1nTr(A)=1nTr(A)(4.27)R_0 = - \frac{a_1}{n a_0} = \frac{1}{n} \text{Tr}(A^{\prime}) = \frac{1}{n} \text{Tr}(A) \tag{4.27} a0=(1)na1=(1)n1Tr(A)=(1)n1Tr(A)}(4.28)\left. \begin{aligned} a_0 & = (-1)^n \cr a_1 & = (-1)^{n-1} \text{Tr}(A^{\prime}) = (-1)^{n-1} \text{Tr}(A) \cr \end{aligned} \right\} \tag{4.28}

Tr(A)a11+a22++ann\text{Tr}(A) \equiv a_{11} + a_{22} + \cdots + a_{nn} は行列 AA のトレース (対角和) で、 Tr(P1AP)=Tr(A)\text{Tr}(P^{-1} A P) = \text{Tr}(A) である (問題 4-4 参照)。 分子の det(AλI)\det(A^{\prime} - \lambda I) は、前項の手順で計算すればよい。

まだ残っているのは (4.25)(4.25)RR である。 RR は 中心が R0R_0 にあり、全ての解 λj(1jn)\lambda_j (1 \leqq j \leqq n) を含むような複素平面上の円の半径である。 第2章では多項式の係数 a0,a1,,ana_0, a_1, \cdots , a_n を使って RR の推定を行ったが、 det(AλI)\det(A^{\prime} - \lambda I)λ\lambda の各ベキ乗の係数 a0,a1,,ana_0, a_1, \cdots , a_n を全部 AA^{\prime} の要素を使って求めるのは面倒である。 幸いにして固有値の存在する範囲を確定する定理がある。 この定理はゲルシュゴリン (Gerschgorin) の定理と呼ばれ、次の通りである。


ゲルシュゴリンの定理\text{ゲルシュゴリンの定理}

固有値の存在する範囲を定めたい行列を A=( aij )A = (\ a_{ij}\ ) とする。 各行 i=1,2,,ni = 1, 2, \cdots, n について、複素平面上に中心が対角要素 aiia_{ii} であり、半径 rir_i が非対角要素の絶対値の和

ri=ai1+ai2++ai i1+ai i+1++ain=j=1jinaij(4.29)\begin{aligned} r_i & = \vert a_{i1} \vert + \vert a_{i2} \vert + \cdots + \vert a_{i\ i-1} \vert + \vert a_{i\ i+1} \vert + \cdots + \vert a_{in} \vert \cr & = \sum_{\substack{j = 1 \cr j \neq i}}^n \vert a_{ij} \vert \cr \end{aligned} \tag{4.29}

であるような円を画く (図 4.4)。 行列 AA の固有値はこうして画いた nn 個の円のどれかの中にある。


AA^\top の固有値と AA の固有値は等しいことから、 rir_i とし ては各 ii 列の非対角要素の絶対値の和をとってもよい。 (ゲルシュゴリンの定理の証明は 問題 4-5 参照)

[例 4.6]

第2章の連立1次方程式の反復法の解法における収束条件は、ヤコビ法の反復行列 H=D1(L+U)H = -D^{-1} (L + U) のスペクトル半径 ρ\rhoρ<1\rho < 1 であることであった。

HHiijj 列の非対角要素は hij=aij/aiih_{ij} = -a_{ij} / a_{ii} であり、対角要素は hii=0h_{ii} = 0 であるから、ゲルシュゴリンの定理の円は中心が原点にある同心円群である。 したがって、スペクトル半径は、半径 rir_i の最大のものと最小のものの間にあること、すなわち

mini(ri)=mini{j=1jinaijaii}ρmaxi(ri)=maxi{j=1jinaijaii}(4.30)\min_i (r_i) = \min_i \left\{ \sum_{\substack{j = 1 \cr j \neq i}}^n \left\vert \frac{a_{ij}}{a_{ii}} \right\vert \right\} \leqq \rho \leqq \max_i (r_i) = \max_i \left\{ \sum_{\substack{j = 1 \cr j \neq i}}^n \left\vert \frac{a_{ij}}{a_{ii}} \right\vert \right\} \tag{4.30}

になり、スペクトル半径の推定が出来る。

ゲルシュゴリンの定理を A=P1AP=( aij )A^{\prime} = P^{-1} A P = (\ a_{ij}^{\prime}\ ) に適用する。 ゲルシュゴリンの円は aiia_{ii}^{\prime} を中心とする半径 rir_i の円であるから (図 4.5 12)12) )、 R0R_0 から最も遠い円周上の点までの距離は

aiiR0+ri=aiiR0+j=1jinaij\vert a_{ii}^{\prime} - R_0 \vert + r_i = \vert a_{ii}^{\prime} - R0 \vert + \sum_{\substack{j = 1 \cr j \neq i}}^n \vert a_{ij}^{\prime} \vert

である。 したがって、 RR

R=maxi{aiiR0+j=1jinaij}(4.31)R = \max_i \left\{ \vert a_{ii}^{\prime} - R_0 \vert + \sum_{\substack{j = 1 \cr j \neq i}}^n \vert a_{ij}^{\prime} \vert \right\} \tag{4.31}

である。 R0R_0 を中心とする半径 RR の円内にすべての固有値は存在するはずである。

12)^{12)} 実行列においては aija_{ij} は実数であるから各円の中心は実軸上にあり、したがって R0R_0 は実軸上にある。

こうして、固有値を求める手順は、次のようになる。

(1)(1) 任意の行列 AA を相似変換して A=P1APA^{\prime} = P^{-1} A P とする。

(2)(2) 求める固有値の初期値 λj(0)(1jn)\lambda_j^{(0)} ( 1 \leqq j \leqq n )(4.25)(4.25) とし、 (4.26)(4.26) により反復し収束させて求める。

4.3 ヤコビ法

4.3.1 実対称行列の対角化

まず、任意の実対称行列 AA は直交行列 RR によって対角化出来ることに注目する (例題 4.1 参照):

RAR=DDは対角行列(4.32)R^\top A R = D \qquad D \text{は対角行列} \tag{4.32}

直交行列は、 R1=RTR^{-1} = RT であるから、逆行列を単純に転置で求めることが出来る。

さらに、直交変換の積は直交変換である:何故なら

(R1R2Rk)(R1R2Rk)=RkRk1R2R1R1R2Rk1Rk=Rk(Rk1(R2(R1R1)R2)Rk1)Rk=I\begin{aligned} (R_1 R_2 \cdots R_k)^\top (R_1 R_2 \cdots R_k) & = R_k^\top R_{k-1}^\top \cdots R_2^\top R_1^\top R_1 R_2 \cdots R_{k-1} R_k \cr & = R_k^\top (R_{k-1}^\top \cdots (R_2^\top (R_1^\top R_1) R_2) \cdots R_{k-1}) R_k = I \end{aligned}

いま、 A(0)=AA(0) = A として、 k=1,2,k = 1, 2, \cdots なる A(k)A^{(k)}

A(k)=RkA(k1)Rk=Rk(Rk1R2R1AR1R2Rk1)Rk(4.33)\begin{aligned} A^{(k)} & = R_k^\top A^{(k-1)}R_k \cr & = R_k^\top (R_{k-1}^\top \cdots R_2^\top R_1^\top AR_1 R_2 \cdots R_{k-1})R_k \tag{4.33} \end{aligned}

で定義する。 RkR_kA(k1)A^{(k-1)} の対称な位置にある1組の非対角要素 ( aija_{ij}ajia_{ji} ) を 00 にするような直交変換であり、 kk \to \infty で、

R=limkR1R2RkR = \lim_{k \to \infty} R_1 R_2 \cdots R_k

は、 AA 全体を対角化するような直交行列である。 このような R1,R2,R_1, R_2, \cdots を見出そう。

A(k1)A^{(k-1)}iijj 列の要素を aij(k1)a_{ij}^{(k-1)} とすると、 A(k1)A^{(k-1)} は対称行列であるから、 aij(k1)=aji(k1)a_{ij}^{(k-1)} = a_{ji}^{(k-1)} である。 RkR_kppqq 列の要素を rpq(k)r_{pq}^{(k)} とする。 このとき RkR_k の行列要素は次の要素以外は 00 であるとする。

rpp(k)=rqq(k)=cosθ,rpq(k)=rqp(k)=sinθrii(k)=1(ip,q)\begin{aligned} r_{pp}^{(k)} & = r_{qq}^{(k)} = \cos \theta, & r_{pq}^{(k)} = -r_{qp}^{(k)} = \sin \theta \cr r_{ii}^{(k)} & = 1 \qquad (i \neq p, q) \end{aligned}

すなわち RkR_k を次のように取る。

Rk=(11cosθsinθ11sinθcosθ11)(4.34)R_k = \begin{pmatrix} 1 \cr & \ddots \cr & & 1 \cr & & & \cos \theta & & & & \sin \theta \cr & & & & 1 \cr & & & & & \ddots \cr & & & & & & 1 \cr & & & -\sin \theta & & & & \cos \theta \cr & & & & & & & & 1 \cr & & & & & & & & & \ddots \cr & & & & & & & & & & 1 \cr \end{pmatrix} \tag{4.34}

もちろん RkRk=IR_k^\top R_k = I。 これを (4.33)(4.33) に代入すると、 pp 行、 qq 行、 pp 列、 qq 列を除けば A(k)A^{(k)}A(k1)A^{(k-1)} は同じであって、変化する2つの行と2つの列は次のように与えられる。

app(k)= app(k1)cos2θ+aqq(k1)sin2θ2apq(k1)sinθcosθaqq(k)= app(k1)sin2θ+aqq(k1)cos2θ+2apq(k1)sinθcosθapq(k)= aqp(k)=12(app(k1)aqq(k1))sin2θ+apq(k1)cos2θaip(k)=aiq(k)= api(k)=aip(k1)cosθaiq(k1)sinθaqi(k)=aip(k1)sinθ+aiq(k1)cosθ(ip,q)(4.35)\begin{aligned} a_{pp}^{(k)} = &\ a_{pp}^{(k-1)} \cos^2 \theta + a_{qq}^{(k-1)} \sin^2 \theta - 2a_{pq}^{(k-1)} \sin \theta \cos \theta \cr a_{qq}^{(k)} = &\ a_{pp}^{(k-1)} \sin^2 \theta + a_{qq}^{(k-1)} \cos^2 \theta + 2a_{pq}^{(k-1)} \sin \theta \cos \theta \cr a_{pq}^{(k)} = &\ a_{qp}^{(k)} = \frac{1}{2} (a_{pp}^{(k-1)} - a_{qq}^{(k-1)} ) \sin 2\theta + a_{pq}^{(k-1)} \cos 2\theta \cr \begin{aligned} a_{ip}^{(k)} = \cr a_{iq}^{(k)} = \cr \end{aligned} & \ \begin{aligned} a_{pi}^{(k)} = a_{ip}^{(k-1)} \cos \theta - a_{iq}^{(k-1)} \sin \theta \cr a_{qi}^{(k)} = a_{ip}^{(k-1)} \sin \theta + a_{iq}^{(k-1)} \cos \theta \cr \end{aligned} \qquad (i \neq p, q) \cr \end{aligned} \tag{4.35}

RkR_kθ\theta の関数であるが、 RkR_k による相似変換は、 A(k)A^{(k)}ppqq 列 (対称性により qqpp 列) の要素を 00 にするように θ\theta を決める。 このような θ\theta(4.35)(4.35) の第3式より

cot2θ=aqq(k1)app(k1)2apq(k1)α(4.36)\cot 2\theta = \frac{a_{qq}^{(k-1)} - a_{pp}^{(k-1)}}{2a_{pq}^{(k-1)}} \equiv \alpha \tag{4.36}

とえらべばよい。 このように θ\theta をえらんだとき、この α\alpha を用いて、 tanθ\tan \thetacosθ\cos \thetasinθ\sin \thetatan(θ/2)tan(\theta/2) を次の式によって求める。 まず、 cot2θ=(1tan2θ)/(2tanθ)\cot 2\theta = (1 - \tan^2 \theta) / (2 \tan \theta) より

tan2θ+2αtanθ1=0\tan^2 \theta + 2\alpha \tan \theta - 1 = 0

であるが、この2次方程式の2つの根のうち tanθ\vert \tan \theta \vert の小さい方の根 tt

ttanθ=sign(α)α+1+α2(4.37)t \equiv \tan \theta = \frac{\text{sign}(\alpha)}{\vert \alpha \vert + \sqrt{1 + \alpha^2}} \tag{4.37}

で与えられる。 この tt より順に

ccosθ=11+t2ssinθ=t1+t2=tcτtanθ2=sinθ1+cosθ=s1+cht apq(k1)\begin{align*} c & \equiv \cos \theta = \frac{1}{\sqrt{1 + t^2}} \tag{4.38} \cr s & \equiv \sin \theta = \frac{t}{\sqrt{1 + t^2}} = tc \tag{4.39} \cr \tau & \equiv \tan \frac{\theta}{2} = \frac{\sin \theta}{1 + \cos \theta} = \frac{s}{1 + c} \tag{4.40} \cr h & \equiv t\ a_{pq}^{(k-1)} \tag{4.41} \cr \end{align*}

を計算する。 A(k)A^{(k)} の要素の中 A(k1)A^{(k-1)} の要素と異なるものは、 c=1sτc = 1 - s \tau に注意して、

ヤコビ法app(k)= app(k1)haqq(k)= aqq(k1)+hapq(k)= aqp(k)=0aip(k)= api(k)=aip(k1)s(aiq(k1)+τaip(k1))aiq(k)= aqi(k)=aiq(k1)+s(aip(k1)τaiq(k1))ip,q(4.42)\begin{aligned} \text{ヤコビ法} \cr a_{pp}^{(k)} = &\ a_{pp}^{(k-1)} - h \cr a_{qq}^{(k)} = &\ a_{qq}^{(k-1)} + h \cr a_{pq}^{(k)} = &\ a_{qp}^{(k)} = 0 \cr a_{ip}^{(k)} = &\ a_{pi}^{(k)} = a_{ip}^{(k-1)} - s(a_{iq}^{(k-1)} + \tau a_{ip}^{(k-1)}) \cr a_{iq}^{(k)} = &\ a_{qi}^{(k)} = a_{iq}^{(k-1)} + s(a_{ip}^{(k-1)} - \tau a_{iq}^{(k-1)}) \cr & \qquad \qquad \qquad \qquad i \neq p, q \cr \end{aligned} \tag{4.42}

である。 こうして、 A(k)A^{(k)} の非対角要素 apq(k)=aqp(k)a_{pq}^{(k)} = a_{qp}^{(k)} を相似変換によって 00 にすることが出来た。 この直交変換を繰り返して、全部の非対角要素を 00 にすればよい。

ここで心配になるのは、前の段階で 00 にした非対角要素 aip=apia_{ip} = a_{pi}aiq=aqi(ip,q)a_{iq} = a_{qi}(i \neq p, q)RkR_k によってまた 00 でなくなってしまい、いつまでたっても対角化できなのではないだろうかということである。 たしかに、上の (4.42)(4.42) の第4式より、 aip(k1)=api(k1)=0a_{ip}^{(k-1)} = a_{pi}^{(k-1)} = 0 であっても aiq(k1)=aqi(k1)0a_{iq}^{(k-1)} = a_{qi}^{(k-1)} \neq 0 ならば、 aip(k)=api(k)0a_{ip}^{(k)} = a_{pi}^{(k)} \neq 0 となる。 しかし、次のことから十分の多くの回 (理論的には無限回であるが) 相似変換を行えば、非対角要素は小さくなり、その分、対角要素が大きくなって、ついには対角化出来ることが示せる。 少し計算は面倒であるが、 (4.35)(4.35) により、 θ\theta を消去すると

(app(k))2+(aqq(k))2+2(apq(k))2=(app(k1))2+(aqq(k1))2+2(apq(k1))2(aip(k))2+(aiq(k))2=(aip(k1))2+(aiq(k1))2(4.43)\begin{aligned} (a_{pp}^{(k)})^2 + (a_{qq}^{(k)})^2 + 2(a_{pq}^{(k)})^2 & = (a_{pp}^{(k-1)})^2 + (a_{qq}^{(k-1)})^2 + 2(a_{pq}^{(k-1)})^2 \cr (a_{ip}^{(k)})^2 + (a_{iq}^{(k)})^2 & = (a_{ip}^{(k-1)})^2 + (a_{iq}^{(k-1)})^2 \cr \end{aligned} \tag{4.43}

が得られる13)13) 。 ところで apq(k)=0a_{pq}^{(k)} = 0 となるように θ\theta を選んだのであるから、対角要素の2乗和は 2(apq(k1))22(a_{pq}^{(k-1)})^2 だけ増加している。 apq(k1)a_{pq}^{(k-1)} は非対角要素であるから、この分だけ非対角要素の2乗和は減少したことになっている。 こうして、この反復対角化法は収束することが示せた。 この方法をヤコビ法14)14)という。

13)^{13)} 例題 4.2 参照
14)^{14)} 連立1次方程式の反復法であるヤコビ法と同じ名前がであるが、このように呼ばれている。

上の議論から、 00 にする非対角要素は出来るだけ絶対値の大きな要素 apqa_{pq} を選んだ方が早く収束することがわかる。 しかし非対角要素の絶対値の最大の要素を探すのは能率がよくない。 列方向または行方向に順に 00 にして行く方が探す手間が少なくてすむが、絶対値の小さい要素を 00 にしていたのでは収束がおそい。 よく行われるのは、列方向にある値より絶対値の大きい要素だけを 00 にして行く方法である。 全部の非対角要素の絶対値がある値以下になったところで変換を停止する。


例題 4.2

ヤコビ法の収束性の証明のための (4.43)(4.43) の2式のうち一方は、直接 (4.35)(4.35) を使わなくても、相似変換 (4.33)(4.33) と行列のトレース (対角和)

Tr(A)a11+a22++ann(4.44)\text{Tr}(A) \equiv a_{11} + a_{22} + \cdots + a_{nn} \tag{4.44}

( AA は任意の nn 次正方行列) の一般的性質 (問題 4-4 参照)

Tr(AB)=Tr(BA)(4.45)\text{Tr}(AB) = \text{Tr}(BA) \tag{4.45}

から導き出せる。

[解]

Tr(A(k)A(k))=Tr((RkA(k1)Rk)RkA(k1)Rk)=Tr(RkA(k1)RkRkA(k1)Rk)=Tr(RkRkA(k1)A(k1))=Tr(A(k1)A(k1))\begin{aligned} \text{Tr}(A^{(k)\top} A^{(k)}) & = \text{Tr}((R_k^\top A^{(k-1)} R_k)^\top R_k^\top A^{(k-1)} R_k) \cr & = \text{Tr}(R_k^\top A^{(k-1)\top} R_k R_k^\top A^{(k-1)} R_k) \cr & = \text{Tr}(R_k R_k^\top A^{(k-1)\top} A^{(k-1)}) \cr & = \text{Tr}(A^{(k-1)\top} A^{(k-1)}) \cr \end{aligned}

一方、

Tr(A(k)A(k))=i,j(aij(k))2=A(k)F2Tr(A(k1)A(k1))=i,j(aij(k1))2=A(k1)F2\begin{aligned} \text{Tr}(A^{(k)\top} A^{(k)}) & = \sum_{i,j} (a_{ij}^{(k)})^2 = \Vert A^{(k)} \Vert_F^2 \cr \text{Tr}(A^{(k-1)\top} A^{(k-1)}) & = \sum_{i,j}(a_{ij}^{(k-1)})^2 = \Vert A^{(k-1)} \Vert_F^2 \cr \end{aligned}

故に

i,j(aij(k))2=i,j(aij(k1))2\sum_{i,j} (a_{ij}^{(k)})^2 = \sum_{i,j} (a_{ij}^{(k-1)})^2

この両辺の変化しない要素を除き、 (4.43)(4.43) の2式のうち一方を代入すると他方が得られる。

なお、任意の行列 AA の全要素の絶対値の2乗和の平方根を、行列のユークリッド・ノルムまたはフロベニウスのノルムと呼び、 AE\Vert A \Vert_E または AF\Vert A \Vert_F と書く (第 3 章 3-5 節参照)。 この証明は、直交変換によってはこのノルムが不変であることを利用したとも言える。


4.3.2 対称行列の固有値・固有ベクトル

ヤコビ法による反復対角化が終了したときに、もとの対称行列 AA は対角行列 DD に収束している。 固有値は対角行列 DD の対角要素である。

D=(λ1λ20λ30λn)=diag(λ1,λ2,λ3,,λn)(4.46)D = \begin{pmatrix} \lambda_1 \cr & \lambda_2 & & \Large{0} \cr & & \lambda_3 \cr & \Large{0} & & \ddots \cr & & & & \lambda_n \cr \end{pmatrix} = \text{diag}(\lambda_1, \lambda_2, \lambda_3, \cdots , \lambda_n) \tag{4.46}

(4.32)(4.32) により

AR=RD(4.47)AR = RD \tag{4.47}

である。 このような形の直交行列 RR をモード行列という。 直交行列 RR の列ベクトルを x1,x2,,xnx_1, x_2, \cdots , x_n とすると、

R=(x1x2xn)(4.48)R = ( x_1 \quad x_2 \quad \cdots \quad x_n ) \tag{4.48}

と書ける。 RR は直交行列であるから、 RR=IR^\top R = I であるが、この関係を x1,x2,,xnx_1, x_2, \cdots , x_n で書くと

(x1x2xn)(x1 x2  xn)=(x1x1x1x2x1xnx2x1x2x2x2xnxnx1xnx2xnxn)\begin{pmatrix} x_1^\top \cr x_2^\top \cr \vdots \cr x_n^\top \cr \end{pmatrix} ( x_1 \ x_2 \ \cdots \ x_n ) = \begin{pmatrix} x_1^\top x_1 & x_1^\top x_2 & \cdots & x_1^\top x_n \cr x_2^\top x_1 & x_2^\top x_2 & \cdots & x_2^\top x_n \cr \vdots & \vdots & \ddots & \vdots \cr x_n^\top x_1 & x_n^\top x_2 & \cdots & x_n^\top x_n \cr \end{pmatrix}

故に、

xixj=δij(4.49)x_i^\top x_j = \delta_{ij} \tag{4.49}

すなわち、 x1x_1x2x_2\cdotsxnx_n はお互いに直交する規格化されたベクトルである ( δij\delta_{ij} はクロネッカーのデルタ)。 (4.47)(4.47) 式を x1,x2,,xnx_1, x_2, \cdots , x_n で書くと

AR=A(x1 x2  xn)=(Ax1 Ax2  Axn )RD=(x1 x2  xn)(λ1λ20λ30λn)=(λ1x1 λ2x2  λnxn)\begin{aligned} AR & = A ( x_1 \ x_2 \ \cdots \ x_n ) = ( A x_1 \ A x_2 \ \cdots \ A x_n \ ) \cr RD & = ( x_1 \ x_2 \ \cdots \ x_n ) \begin{pmatrix} \lambda_1 \cr & \lambda_2 & & \Large{0} \cr & & \lambda_3 \cr & \Large{0} & & \ddots \cr & & & & \lambda_n \cr \end{pmatrix} \cr & = ( \lambda_1 x_1 \ \lambda_2 x_2 \ \cdots \ \lambda_n x_n ) \end{aligned}

より

Axi=λixi(4.50)A x_i = \lambda_i x_i \tag{4.50}

となる。 すなわち、 xix_i は固有値 λi\lambda_i に属する固有ベクトルである。

つまり、対称行列 AA を対角化するためにつくった直交行列 RR の列ベクトル x1,x2,,xnx_1, x_2, \cdots , x_n は、出来上がった対角行列の対角要素である固有値 λ1,λ2,,λn\lambda_1, \lambda_2, \cdots , \lambda_n に属する規格化された固有ベクトルになっているというわけである。 これは有難い。

固有ベクトルを求めるためには、対角化の各段階の直交行列の積 R1R2RkR_1 R_2 \cdots R_k \cdots が必要である。 kk 段階までの積を

R(k)=R1R2Rk=(x1(k) x2(k)  xn(k))R^{(k)} = R_1 R_2 \cdots R_k = ( x_1^{(k)} \ x_2^{(k)} \ \cdots \ x_n^{(k)} )

とおけば

R(k)=(R1R2Rk1)Rk=R(k1)Rk=(x1(k1) x2(k1)  xn(k1))Rk\begin{aligned} R^{(k)} & = (R_1 R_2 \cdots R_{k-1}) R_k = R^{(k-1)} R_k \cr & = ( x_1^{(k-1)} \ x_2^{(k-1)} \ \cdots \ x_n^{(k-1)} ) R_k \cr \end{aligned}

より

xp(k)=xp(k1)cosθxq(k1)sinθxq(k)=xp(k1)sinθ+xq(k1)cosθ\begin{aligned} x_p^{(k)} & = x_p^{(k-1)} \cos \theta - x_q^{(k-1)} \sin \theta \cr x_q^{(k)} & = x_p^{(k-1)} \sin \theta + x_q^{(k-1)} \cos \theta \cr \end{aligned}

すなわち、 c=1sτc = 1 - s \tau に注意して、

xp(k)=xp(k1)s(xq(k1)+τxp(k1))xq(k)=xq(k1)+s(xp(k1)τxq(k1))xi(k)=xi(k1)(ip,q)(4.51)\begin{aligned} x_p^{(k)} & = x_p^{(k-1)} - s(x_q^{(k-1)} + \tau x_p^{(k-1)} ) \cr x_q^{(k)} & = x_q^{(k-1)} + s(x_p^{(k-1)} - \tau x_q^{(k-1)} ) \cr x_i^{(k)} & = x_i^{(k-1)} \qquad \qquad \quad (i \neq p, q) \cr \end{aligned} \tag{4.51}

として、固有ベクトルが RkR_k によって変化される。 なお R(0)=IR^{(0)} = I (単位ベクトル) だから、 xi(0)(i=1,2,,n)x_i^{(0)} (i = 1, 2, \cdots, n) は第 ii 成分が 11 で他は 00 とする。

xi(0)=(001(第 i 成分)00)(4.52)x_i^{(0)} = ( 0 \quad \cdots \quad 0 \quad 1^{(\text{第} \ i \ \text{成分})} \quad 0 \quad \cdots \quad 0 )^\top \tag{4.52}

ヤコビ 法の PAD を 図 4.6 に示す。

4.3.3 ヤコビ法の利点と欠点

一般に、 nn 次実対称行列の固有値はすべて実数であり、直交変換によって対角化出来る (例題 4.1 参照)。 得られた対角行列の対角要素は固有値そのものである。 対角化変換の直交行列 RR は、 nn 個の規格化された固有ベクトルを並べた行列 (モード行列) である。 すなわち ii 番目の固有値 λi=aii\lambda_i = a_{ii}^\prime に属する固有ベクトル xix_i は、直交行列 RR の第 ii 列である。 しかもこれは規格化されている。 このように直交変換と同時に固有ベクトルも求められてしまう。 ヤコビ法は、このようにきわめて恵まれた性質をもつ行列 (実対称行列) の対角化法である。

ヤコビ法の欠点は、理論的には無限回反復法であることである。 数値計算上は、丸めの誤差以上の精度は要求できないから、有限回で収束したと判定する。 だから、固有値に収束する対角要素に比べて非常に小さな非対角要素は残っている。 実用上は小さな非対角要素は 00 としてよいが、非対角要素が小さくなるとともに、収束はおそくなることはこれまでの議論からわかる。 与えられた実対称行列の固有値が非対角要素に比べて絶対値が小さいときには、しばしば延々と反復をくり返すことがある。

4.4 ギブンス法

4.4.1 ギブンス法

実対称行列といえども理論的には5次以上の行列を有限回の反復で対角化出来る方法は存在しない。 なぜなら、5次以上の代数方程式を有限回の手続き (加減乗除とべき乗根算) によって解くことは不可能であるが、もし有限回の演算で対角化できたとすると、5次以上の代数方程式が、有限回の演算で解けたことになるからである。 このあたりで、対角化による固有値問題の解法を切り上げて、3重対角化による固有値問題の解法に移ろう。

3重対角化は有限回の手続きで可能である。 対角化が完了すれば固有値は求められたことになるが、3重対角化だけでは固有値は求められたことにはならない。 しかし、三重対角行列の固有値問題は比較的容易に解ける。 こうして、一般の実対称行列の固有値問題を、一度3重対角実行列の固有値問題に直してから解こうというわけである。

実対称行列 A(k1)A^{(k-1)}(4.34)(4.34) の直交変換 RkRk で相似変換を行うと、

A(k)=RkA(k1)RkA^{(k)} = R_k^\top A^{(k-1)} R_k

の要素は、 (4.35)(4.35) のように、 pp 行、 pp 列、 qq 行、 qq 列のみ変化する。 ここまではヤコビ法と同じである。 ヤコビ法では、 apq(k)=aqp(k)=0a_{pq}^{(k)} = a_{qp}^{(k)} = 0 としたが、ここでは ap1 q(k)=aq p1(k)=0a_{p-1\ q}^{(k)} = a_{q\ p-1}^{(k)} = 0 となるように θ\theta をえらぶ。 (4.35)(4.35) の最後の式で i=p1i = p - 1 として

ap1 q(k)=aq p1(k)=ap1 p(k1)sinθ+ap1 q(k1)cosθ=0a_{p-1\ q}^{(k)} = a_{q\ p-1}^{(k)} = a_{p-1\ p}^{(k-1)} \sin \theta + a_{p-1\ q}^{(k-1)} \cos \theta = 0

このような θ\theta

d=ap1 p2+ap1 q2s=sinθ=ap1 q(k1)/dc=cosθ=ap1 p(k1)/d(4.53)\begin{aligned} d & = \sqrt{ a_{p-1\ p}^{2} + a_{p-1\ q}^{2} } \cr s & = \sin \theta = - a_{p-1\ q}^{(k-1)} / d \cr c & = \cos \theta = a_{p-1\ p}^{(k-1)} / d \cr \end{aligned} \tag{4.53}

とえらべばよい。 その上で、 (p,q)(p, q)

(2,3)(2,4)(2,5)(2,n1)(2,n)(3,4)(3,5)(3,n1)(3,n)(n2,n1)(n2,n)(n1,n)\begin{matrix} (2, 3) & (2, 4) & (2, 5) & \cdots & (2, n - 1) & (2, n) \cr & (3, 4) & (3, 5) & \cdots & (3, n - 1) & (3, n) \cr & \cdots & \cdots & \cdots & \cdots & \cdots \cr & & & & (n - 2, n - 1) & (n - 2, n) \cr & & & & & (n - 1, n) \cr \end{matrix}

の順に変化させる。 図 4.7 は (p,q)(p, q)(q,p)(q, p) の位置を黒丸 ()(\bullet) で、変化を矢印で示す。 また、要素の値の変化する pp 行、 pp 列、 qq 行、 qq 列は網線でハッチしてある。 まず各 (p,q)(p, q) について ap1 p(k)a_{p-1\ p}^{(k)}00 にするのであるから、図 4.7 の (p,q)(p, q) のすぐ上の (p1,q)(p - 1, q) のところを 00 にするように θ\theta を選ぶ (左下半分ではすぐ左になる)。

はじめに p=2p = 2 のとき ( 図 4.7 の左の図) を考える (すなわち、 p1=1p - 1 = 1 行の要素を 00 にすることを考える)。 q=p+1=3q = p + 1 = 3 列から q=nq = n 列まで動かしていく。

まず、 p=2p = 2q=3q = 3 として、 ap1,q=a13=0a_{p-1,q} = a_{13} = 0 にするように θ\theta を選ぶ。 この変換によって、 22 行、 33 行、 22 列、 33 列のみ変化する。 つぎに、 p=2p = 2q=4q = 4 として、 ap1,q=a14=0a_{p-1,q} = a_{14} = 0 となるように θ\theta を選ぶ。 この変換によって、2行、4行、2列、4列をのみ変化するから、前に 00 にした1行3列の a13a_{13}00 のままである! 同様に q=4,5,q = 4, 5, \cdots と動かしていくとき、1度 00 にした1行目の要素は、 00 のままである!

つぎに p=3p = 3 のとき、すなわち、 p1=p-1 = 2 行の要素を 00 にするように、 q=p+1=4q = p+1 = 4 列より q=nq = n 列まで動かしていく。 このとき、各 qq についての変換で変化するのは p=3p = 3 行と qq 行、 p=3p = 3 列と qq 列である。 θ\thetap1=p - 1 = 2 行、 qq 列の要素が 00 となるように選ぶ。 列番号 qq が増えていくときは、 p1=p - 1 = 2 行の一度 00 になった要素は 00 のままであることは p=2p = 2 のときと同じことである。 ところで、すでに 00 にしたその上の p2=1p - 2 = 1 行の要素は、このときどう変化するであろうか。

この変化は、 (4.54)(4.54) ( (4.35)(4.35) の第4式と第5式) の i=p2i = p - 2 で与えられる:

aip(k)=aip(k1)cosθaiq(k1)sinθaiq(k)=aip(k1)sinθ+aiq(k1)cosθ(1ip2)(4.54)\begin{aligned} a_{ip}^{(k)} & = a_{ip}^{(k-1)} \cos \theta - a_{iq}^{(k-1)} \sin \theta \cr a_{iq}^{(k)} & = a_{ip}^{(k-1)} \sin \theta + a_{iq}^{(k-1)} \cos \theta \cr \end{aligned} \qquad (1 \leqq i \leqq p - 2) \tag{4.54}

aipa_{ip}aiqa_{iq} はペアになって変化を受けるわけである。 ところが前の段階で aip(k1)=aiq(k1)=0a_{ip}^{(k-1)} = a_{iq}^{(k-1)} = 0 であるから、 aip(k)=aiq(k)=0a_{ip}^{(k)} = a_{iq}^{(k)} = 0 である。 こうして、 p=2p = 233 の場合、一度 00 にした要素は、 00 のままである。

p>3p > 3 についても同じように考えられる。 図 4.7 の右の図のように、 (p,q)(p, q) が黒丸 ()(\bullet) の位置にあるとする。 θ\theta を黒丸のすぐ上の ap1 q(k)=0a_{p-1\ q}^{(k)} = 0 となるようにえらんだとき、網線でハッチしてあり 00 と書いてある要素の変化は (4.54)(4.54)i<p1i < p - 1 で与えられる。

こうして、1度 00 にしたすべての要素は 00 のままで変化しない。 (p,q)(p, q) を矢印のように順に動かしながら、 (p,q)(p, q) のすぐ上の要素 (左下半分ではすぐ左の要素) を 00 にして行くと、一通り (p,q)(p, q) を動かしただけで、3重対角化出来ることになる。 00 にした要素が 00 のままであるというこの事情は、ヤコビ法とは対照的である。 こんなことが出来るのは、3重対角化であって、対角化ではないからである。

手順をまとめると、右上半分だけについて( 左下半分は自動的に追随する )、
p=2,3,,n1:q=p+1,p+2,,np = 2, 3, \cdots , n - 1 : q = p + 1, p + 2, \cdots , n の順に各 (p,q)(p, q) について

1)1) d,s,cd, s, c(4.53)(4.53) により求める。

2)2) 次の順に、 τ\taudpqd_{pq}hhgg を求める15)15)

τ=tanθ2=s1+cdpq=12(app(k1)aqq(k1))h=2s(apq(k1)+s(dpqτapq(k1)))g=2s(dpqs(apq(k1)+τdpq))(4.55)\begin{aligned} & \tau && = \tan \frac{\theta}{2} = \frac{s}{1 + c} \cr & d_{pq} && = \frac{1}{2} (a_{pp}^{(k-1)} - a_{qq}^{(k-1)}) \cr & h && = 2s (a_{pq}^{(k-1)} + s(d_{pq} - \tau a_{pq}^{(k-1)})) \cr & g && = 2s (d_{pq} - s(a_{pq}^{(k-1)} + \tau d_{pq})) \cr \end{aligned} \tag{4.55}

3)3) (4.35)(4.35) より

app(k)=app(k1)haqq(k)=aqq(k1)+hapq(k)=apq(k1)+gap1 p(k)=dap1 q(k)=0apj(k)=apj(k1)s(ajq(k1)+τapj(k1))ajq(k)=ajq(k1)+s(apj(k1)τajq(k1))j=p+1,p+2,,q1apj(k)=apj(k1)s(aqj(k1)+τapj(k1))aqj(k)=aqj(k1)+s(apj(k1)τaqj(k1))j=q+1,q+2,,n(4.56)\begin{aligned} & a_{pp}^{(k)} && = a_{pp}^{(k-1)} - h \cr & a_{qq}^{(k)} && = a_{qq}^{(k-1)} + h \cr & a_{pq}^{(k)} && = a_{pq}^{(k-1)} + g \cr & a_{p-1\ p}^{(k)} && = d \cr & a_{p-1\ q}^{(k)} && = 0 \cr & a_{pj}^{(k)} && = a_{pj}^{(k-1)} - s(a_{jq}^{(k-1)} + \tau a_{pj}^{(k-1)} ) \cr & a_{jq}^{(k)} && = a_{jq}^{(k-1)} + s(a_{pj}^{(k-1)} - \tau a_{jq}^{(k-1)} ) \cr & && \qquad \qquad j = p + 1, p + 2, \cdots , q - 1 \cr & a_{pj}^{(k)} && = a_{pj}^{(k-1)} - s(a_{qj}^{(k-1)} + \tau a_{pj}^{(k-1)} ) \cr & a_{qj}^{(k)} && = a_{qj}^{(k-1)} + s(a_{pj}^{(k-1)} - \tau a_{qj}^{(k-1)} ) \cr & && \qquad \qquad j = q + 1, q + 2, \cdots , n \cr \end{aligned} \tag{4.56}

15)^{15)} τ\tau はタウと読む

この3重対角化法をギブンス (Givens) 法という。 3重対角化に要する直交変換の回数は

(n2)+(n3)++2+1=12(n1)(n2)(n - 2) + (n - 3) + \cdots + 2 + 1 = \frac{1}{2} (n - 1)(n - 2) \text{回}

で有限回である。 得られた三重対角行列の固有値 (もとの行列の固有値に等しい) を求めるのは nn 次代数方程式の解法による。 実対称行列の固有値は実数で nn 個あることがわかっているから、スツルムの定理による2分法や DKA 法 (4-2 節) を用いればよい。

固有値 λ\lambda が求まれば、三重対角行列 T\mathbf{T} の固有ベクトル yy

Ty=λy(T=RAR)(4.57)T y = \lambda y \qquad (T = R^\top A R) \tag{4.57}

より求め (後の 4.7 節参照)、もとの行列 AA の固有ベクトルは

x=Ry(4.58)x = Ry \tag{4.58}

により求める。 RR は、 R(0)=IR^{(0)} = I (単位行列) としておいて、 (4.51)(4.51) によって求める。

3重対角化変換行列 TT と変換行列 RR を同時に求める手順を 図 4.8 の PAD にまとめて示す。

ギブンス法は、ヤコビ法と同様に実対称行列についてだけ可能な方法である。 ヤコビ法の無限回反復とは対照的に、ギブンス法は有限回反復でよい。 ただし、対称三重対角行列についての固有値問題を解くという問題が残っている。 しかし、この問題の解法の方がはるかに簡単である。

4.5 ハウスホルダー変換

4.5.1 鏡映変換

ヤコビ法およびギブンス法で用いた直交行列 RR は、回転変換行列である。 たとえば

x=(xyz),x=(xyz),R=(cosθsinθ0sinθcosθ0001)x = \begin{pmatrix} x \cr y \cr z \cr \end{pmatrix}, x^{\prime} = \begin{pmatrix} x^{\prime} \cr y^{\prime} \cr z^{\prime} \cr \end{pmatrix}, R = \begin{pmatrix} \cos \theta & \sin \theta & 0 \cr - \sin \theta & \cos \theta & 0 \cr 0 & 0 & 1 \cr \end{pmatrix}

として、ベクトル xx をベクトル xx^{\prime}x=Rxx^{\prime} = R^\top x と変換したとすると

x=xcosθysinθy=xsinθ+ycosθz=z\begin{aligned} x^{\prime} & = x \cos \theta - y \sin \theta \cr y^{\prime} & = x \sin \theta + y \cos \theta \cr z^{\prime} & = z \cr \end{aligned}

これは、図 4.9 のように zz 軸のまわりにベクトルが xx から xx^{\prime} へ角度 θ\theta だけ回転させたことに対応する。 その時に、ベクトルの長さは変わらない:

xx=(Rx)T(Rx)=(xR)(R1x)=xxx^{\prime \top} x^{\prime} = (R^\top x)T(R^\top x) = (x^\top R)(R^{-1} x) = x^\top x

回転変換の他に鏡映変換という直交変換がある。 もっとも簡単な例は

M=(100010001)M = \begin{pmatrix} 1 & 0 & 0 \cr 0 & 1 & 0 \cr 0 & 0 & -1 \cr \end{pmatrix}

という行列で、この MMMM=M2=IM^\top M = M^2 = I だから、 M=M=M1M = M^\top = M^{-1} で対称な直交行列であるが、前の RRθ\theta をどうとっても MM を得ることは出来ない。 この変換 x=Mxx^{\prime} = M^\top x を成分で書くと

x=xy=yz=z\begin{aligned} x^{\prime} & = x \cr y^{\prime} & = y \cr z^{\prime} & = -z \cr \end{aligned}

となって、 xyxy 面を鏡の面として、 xx を像の位置 xx^{\prime} に移す変換である。 すなわち、鏡の面に垂直なベクトルの成分 ( zz 成分) の符号を変えてしまうような変換である。

このような直交変換を、鏡映変換という。

4.5.2 ハウスホルダー変換

任意のベクトル x\bm{x} を大きさの等しい他のベクトル x\bm{x}^{\prime} に移す ( xx=Px\bm{x}\bm{x}^{\prime} = P \bm{x} ) ハウスホルダー変換と呼ばれる鏡映変換を考えよう。 このハウスホルダー変換とは

P=I2cwwただしc=1/(ww)(4.59)P = I - 2c\bm{ww}^\top \quad \text{ただし} \quad c = 1 / (\bm{w}^\top \bm{w}) \tag{4.59}

と表される。 ここに w\bm{w}

w=xxただしx=x(4.60)\bm{w} = \bm{x} - \bm{x}^{\prime} \quad \text{ただし} \quad \vert \bm{x}^{\prime} \vert = \vert \bm{x} \vert \tag{4.60}

である。 II は単位行列である。 ww\bm{ww}^\top

ww=(w1w2wn)(w1w2wn)=(w12w1w2w1wnw2w1w22w2wnwnw1wnw2wn2)\begin{aligned} \bm{ww}^\top & = \begin{pmatrix} w_1 \cr w_2 \cr \vdots \cr w_n \cr \end{pmatrix} \begin{pmatrix} w_1 & w_2 & \cdots & w_n \end{pmatrix} \cr & = \begin{pmatrix} w_1^2 & w_1 w_2 & \cdots & w_1 w_n \cr w_2 w_1 & w_2^2 & \cdots & w_2 w_n \cr \vdots & \vdots & \ddots & \vdots \cr w_n w_1 & w_n w_2 & \cdots & w_n^2 \cr \end{pmatrix} \end{aligned}

であるから、 ww\bm{ww}^\topnn 次対称正方行列である。 そして

P2=(I2cww)(I2cww)=I4cww+4c2w(ww)w=I4cww+4cww=I(4.61)\begin{aligned} P^2 & = (I - 2c\bm{ww}^\top)(I - 2c\bm{ww}^\top) \cr & = I - 4c\bm{ww}^\top + 4c^2\bm{w}(\bm{w}^\top \bm{w})\bm{w}^\top \cr & = I - 4c\bm{ww}^\top + 4c\bm{ww}^\top = I \tag{4.61} \cr \end{aligned}

より P=P1P = P^{-1} 。 また ww\bm{ww}^\top は対称行列だから PP は対称行列である: P=PP^\top = P 。 すなわち、 PP は直交対称行列である: P=P=P1P = P^\top = P^{-1} 。 また

Pw=(I2cww)w=w2cw(ww)=w2cc1w=w2w=w(4.62)\begin{aligned} P \bm{w} & = (I - 2c\bm{ww}^\top)\bm{w} = \bm{w} - 2c\bm{w}(\bm{w}^\top \bm{w}) \cr & = \bm{w} - 2c \cdot c^{-1} \bm{w} = \bm{w} - 2\bm{w} = -\bm{w} \tag{4.62} \cr \end{aligned}

であるから、 w\bm{w} の符号 (向き) を変える。 w\bm{w} に垂直なベクトルの一つを v\bm{v} とすると

vw=wv=0\bm{v}^\top \bm{w} =\bm{w}^\top \bm{v} = 0

だから

Pv=(I2cww)v=v2cw(wv)=v(4.63)P \bm{v} = (I - 2c\bm{ww}^\top) \bm{v} = \bm{v} - 2c\bm{w}(\bm{w}^\top \bm{v}) = \bm{v} \tag{4.63}

で、 v\bm{v} を不変に保つ。 例えば

w(x+x)=(xx)(x+x)=x2x2=0\bm{w}^\top (\bm{x} + \bm{x}^{\prime}) = (\bm{x} - \bm{x}^{\prime})^\top (\bm{x} + \bm{x}^{\prime}) = \vert \bm{x} \vert^2 - \vert \bm{x}^{\prime} \vert^2 = 0

であるから、 (x+x)(\bm{x} + \bm{x}^{\prime})w\bm{w} に垂直なベクトル v\bm{v} の例である。

いま、

x=12(xx)+12(x+x)=12w+12(x+x)\bm{x} = \frac{1}{2} (\bm{x} - \bm{x}^{\prime}) + \frac{1}{2} (\bm{x} + \bm{x}^{\prime}) = \frac{1}{2} \bm{w} + \frac{1}{2} (\bm{x} + \bm{x}^{\prime})

に注意して、 PxP x を求めると

Px=12Pw+12P(x+x)=12w+12(x+x)=xP \bm{x} = \frac{1}{2} P \bm{w} + \frac{1}{2} P (\bm{x} + \bm{x}^{\prime}) = - \frac{1}{2} \bm{w} + \frac{1}{2} (\bm{x} + \bm{x}^{\prime}) = \bm{x}^{\prime}

すなわち、 PPx\bm{x}x\bm{x}^{\prime} に移す変換である:

x=Px(4.64)\bm{x}^{\prime} = P \bm{x} \tag{4.64}

これらをまとめると、図 4.10 のように書ける。 一口で言えば、ハウスホルダー変換は、 w=xx\bm{w} = \bm{x} - \bm{x}^{\prime} に垂直な面を鏡の面として、鏡の一方の側のベクトル x\bm{x} を他方の側の x\bm{x}^{\prime} に移す変換である。

ハウスホルダー変換は次のようにつくる。 あるベクトル x\bm{x} と、 x\bm{x} と同じ大きさのベクトル x(x=x)\bm{x}^{\prime} ( \vert \bm{x}^{\prime} \vert = \vert \bm{x} \vert ) が与えられたとき、 x\bm{x}x=Px\bm{x}^{\prime} = P x に移す変換 PP

w=xx\bm{w} = \bm{x} - \bm{x}^{\prime}

として、 (4.59)(4.59) によって求められる。 こうして、 x\bm{x}x\bm{x}^{\prime} が与えられていれば、 PP は立ちどころに見つかる。

実対称行列 AA を、列ベクトル a1,a2,,an\bm{a}_ 1, \bm{a}_ 2, \cdots, \bm{a}_ n を列とする行列とする:

A=(a1a2an)A = \begin{pmatrix} \bm{a}_ 1 & \bm{a}_ 2 & \cdots & \bm{a}_ n \end{pmatrix}

AA を3重対角化するようなハウスホルダー変換を求めよう。 まず第一段のハウスホルダー変換は、 a1\bm{a}_ 1 の上の三つ目以下の要素を 00 にするような変換であるようにしたい:

a1a1P1(a11a21a31an1)=(a11a2100)P11=P1\begin{matrix} & \bm{a}_ 1 & & \bm{a}_ 1^{\prime} \cr \cr P_1 & \begin{pmatrix} a_{11} \cr a_{21} \cr a_{31} \cr \vdots \cr a_{n1} \cr \end{pmatrix} & = & \begin{pmatrix} a_{11}^{\prime} \cr a_{21}^{\prime} \cr 0 \cr \vdots \cr 0 \cr \end{pmatrix} & & & P_1^{-1} = P_1 \end{matrix}

ただし a12=a12\vert \bm{a}_ 1 \vert ^2 = \vert \bm{a}_ 1^{\prime} \vert ^2 でなければならないから、

a112+a212=a112+a212++an12a_{11}^{\prime2} + a_{21}^{\prime2} = a_{11}^2 + a_{21}^2 + \cdots + a_{n1}^2

である。 この1つの条件だけでは a11a_{11}^{\prime}a21a_{21}^{\prime} の2つはきめられないから、もう1つの条件

a11=a11a_{11}^{\prime} = a_{11}

をつけ加える。 そうすると a21a_{21}^{\prime}

t=a212+a312++an12t = a_{21}^2 + a_{31}^2 + \cdots + a_{n1}^2

として

a21=±tsa_{21}^{\prime} = \pm \sqrt{t} \equiv -s

ときまる。 故に w=a1a1\bm{w} = \bm{a}_ 1 - \bm{a}_ 1^{\prime}

w=(a11a21a31an1)(a11s00)=(0a21+sa31an1)\bm{w} = \begin{pmatrix} a_{11} \cr a_{21} \cr a_{31} \cr \vdots \cr a_{n1} \cr \end{pmatrix} - \begin{pmatrix} a_{11} \cr -s \cr 0 \cr \vdots \cr 0 \cr \end{pmatrix} = \begin{pmatrix} 0 \cr a_{21} + s \cr a_{31} \cr \vdots \cr a_{n1} \cr \end{pmatrix}

となる。 ss の符号は a21+sa_{21} + s の桁落ちがおこらないように a21a_{21} と同じ符号をとる:

s=sign(a21)ts = \text{sign}(a_{21}) \sqrt{t}

ただし、 sign(a21)\text{sign}(a_{21})a210a_{21} \geqq 0 なら 11a21<0a_{21} < 0 なら 1-1cc

c1=ww=(a21+s)2+a312++an12=s2+2a21s+a212+a312++an12=t+2a21s+t=2(t+a21s)\begin{aligned} c^{-1} & = \bm{w}^\top \bm{w} = (a_{21} + s)2 + a_{31}^2 + \cdots + a_{n1}^2 \cr & = s^2 + 2a_{21}s + a_{21}^2 + a_{31}^2 + \cdots + a_{n1}^2 \cr & = t + 2a_{21}s + t \cr & = 2(t + a_{21}s) \cr \end{aligned}

だから

2c=1t+a21s(4.65)2c = \frac{1}{t + a_{21}s} \tag{4.65}

となる。 こうしてつくった P1=I2cwwP_1 = I - 2c\bm{ww}^\top は、 w\bm{w} の第1成分は a11=a11a_{11}^{\prime} = a_{11} により 00 であるから

P1=(100000000)=P11(0であるとは限らない要素を示す)P_1 = \left( \begin{array}{c|ccccc} 1 & 0 & 0 & \cdots & 0 & 0 \cr \hline 0 & \ast & \ast & \ast & \ast & \ast \cr 0 & \ast & \ast & \ast & \ast & \ast \cr \vdots & \ast & \ast & \ast & \ast & \ast \cr 0 & \ast & \ast & \ast & \ast & \ast \cr 0 & \ast & \ast & \ast & \ast & \ast \cr \end{array} \right) = P_1^{-1} \quad ( \ast \text{は} 0 \text{であるとは限らない要素を示す} )

の形をしている (こうなるように a11=a11a_{11}^{\prime} = a_{11} としたのである)。 P11AP_1^{-1} A の第1列は

P11a1=P1a1=(I2cww)a1=a1w=(a11s00)P_1^{-1} \bm{a}_ 1 = P_1 \bm{a}_ 1 = (I - 2c\bm{ww}^\top) \bm{a}_ 1 = \bm{a}_ 1 - \bm{w} = \begin{pmatrix} a_{11} \cr -s \cr 0 \cr \vdots \cr 0 \cr \end{pmatrix}

である。 P1P_1 の形と AA の対称性より、 P11AP1P_1^{-1} A P_1 の第1行もこの転置したものになる。 他の行と列は、

p=2cAwおよびq=pc(pw)w\bm{p} = 2cA\bm{w} \qquad \text{および} \qquad \bm{q} = \bm{p} - c(\bm{p}^\top \bm{w})\bm{w}

なる中間作業ベクトルを作って、

P11AP1=(I2cww)A(I2cww)=A2cw(Aw)2c(Aw)w+2c2w[(Aw)Tw+w(Aw)]w=Awppw+cw(pw)w+cw(wp)w=Aqwwq(4.66)\begin{aligned} P_1^{-1} A P_1 & = (I - 2c\bm{ww}^\top) A (I - 2c\bm{ww}^\top) \cr & = A - 2c\bm{w}(A \bm{w})^\top - 2c(A \bm{w})\bm{w}^\top \cr & \qquad \quad +2c^2 \bm{w} [ (A\bm{w})T\bm{w} +\bm{w} ^\top(A\bm{w}) ]\bm{w}^\top \cr & = A -\bm{w} \bm{p}^\top - \bm{pw}^\top + c\bm{w}(\bm{p}^\top w)\bm{w}^\top + c\bm{w}(\bm{w}^\top \bm{p})\bm{w}^\top \cr & = A - \bm{qw}^\top -\bm{w} \bm{q}^\top \tag{4.66} \cr \end{aligned}

より計算する。 その結果、 P11AP1P_1^{-1} A P_1

P11AP1=(α1β10β1Awqqw0の第 1 行と第 1 列を除いた要素)α1=a11,β1=sP_1^{-1} A P_1 = \left( \begin{array}{c|cc} \alpha_1 & \beta_1 & \Large{0} \cr \hline \beta_1 & \cr & & A - \bm{w} q^\top - q\bm{w}^\top \cr \Large{0} & & \text{の第 1 行と第 1 列} \cr & & \text{を除いた要素} \cr \end{array} \right) \quad \alpha_1 = a_{11}, \quad \beta_1 = -s

次に第2列に対して、ハウスホルダー変換 P2P_2 を行う。 第2回目のベクトル w\bm{w}P2P_2

w=(00),P2=(10010I2cww第 1, 2 行と0第 1, 2 列を除いた要素)\bm{w} = \begin{pmatrix} 0 \cr 0 \cr \ast \cr \vdots \cr \ast \cr \end{pmatrix} , \quad P_2 = \left( \begin{array}{cc|c} 1 & 0 \cr 0 & 1 & \Large{0} \cr \hline & & I - 2c\bm{ww}^\top \text{の} \cr & & \text{第 1, 2 行と} \cr & \Large{0} & \text{第 1, 2 列を} \cr & & \text{除いた要素} \cr \end{array} \right)

となるから、 P11AP1P_1^{-1} A P_1 の第1, 2行および第1, 2列には影響を与えない。 したがって、第1段の P11AP1P_1^{-1} A P_1 の時と全く同じように (ただし第1行と第1列を除いた (n1)(n - 1) 次の小行列に対して) 変換を行うことになる。

こうして、第 (n2)(n - 2) 回のハウスホルダー変換が完了すると、

T=(α1β1β1α2β20β2α30βn1βn1αn)(4.67)T = \begin{pmatrix} \alpha_1 & \beta_1 \cr \beta_1 & \alpha_2 & \beta_2 & & \Large{0} \cr & \beta_2 & \alpha_3 & \ddots \cr & & \ddots & \ddots & \ddots \cr & \Large{0} & & \ddots & \ddots & \beta_{n-1} \cr & & & & \beta_{n-1} & \alpha_n \cr \end{pmatrix} \tag{4.67}

と三重対角行列を得る。 この後は、ギブンス法と同じように固有値を求める。 固有ベクトルを求める必要があるときには、P1,P2,,Pn2P_1, P_2, \cdots , P_{n-2} を次々と乗じて、

P=P1P2Pn2P = P_1 P_2 \cdots P_{n-2}

を求めておくこともギブンス法と同じである。

ハウスホルダー変換の PAD を 図 4.11 に示す。

ギブンス法の (n1)(n2)/2(n - 1)(n - 2) / 2 回に対して、1回で1つの行および列の非3重対角要素を一挙に 00 にして (n2)(n - 2) 回で完了する。

4.5.3 非対称行列のヘッセンベルグ行列化

ハウスホルダー変換を非対称行列に適用した場合には3重対角化できなくてヘッセンベルグ行列となる。 それは対称性がないために、左下の半分の要素を 00 にする変換では右上の半分の要素は 00 にならないからである。 非対称行列のヘッセンベルグ行列化の具体的手順については 問題 4-6 を参照されたい。 こうして、非対称行列をヘッセンベルグ行列に変換することが出来る。 ヘッセンベルグ行列の行列式計算法については 4.2 節に述べたから、固有値の求め方はすべてわわれは知ったことになる。

非対称行列を3重対角化する方法については、次節に述べるランチョス法がある。

次節のランチョス法においては、まず対称行列の3重対角化について述べ、次いで非対称行列の3重対角化について述べる。

4.6 ランチョス法

4.6.1 実対称行列の3重対角化

AAnn 次実対称行列とし、これを直交行列 VV によって3重対角化し、三重対角行列 TT を得たとする:

T=VAVAV=VT(4.68)T = V^\top AV \qquad \therefore \quad AV = VT \tag{4.68}

VV は直交行列であるから、 V1=VV^{-1} = V^\top である。 AA は実対称行列であるから、三重対角行列 TT も実対称行列である16)16)TT(4.67)(4.67) の三重対角行列とする。 αi(i=1,2,,n)\alpha_i (i = 1, 2, \cdots , n)βi(i=1,2,,n1)\beta_i (i = 1, 2, \cdots, n - 1) とを見出すのがここでの目的である。 VVnn 個の列ベクトルを v1,v2,,vn\bm{v}_ 1, \bm{v}_ 2, \cdots, v_n とすると

V=(v1v2vn)V = \begin{pmatrix} \bm{v}_ 1 & \bm{v}_ 2 & \cdots & v_n \end{pmatrix}

であり、 VV=IV^\top V = I より

vivj=δij(δijはクロネッカーのデルタ)(4.69)v_i^\top v_j = \delta_{ij} \qquad (\delta_{ij} \text{はクロネッカーのデルタ}) \tag{4.69}

である。 (4.68)(4.68)

AV=A(v1v2vn)=(Av1Av2Avn)VT=(v1v2vn)(α1β1β1α2β20β2α3β3βn20αn1βn1βn1αn)=(α1v1+β1v2β1v1+α2v2+β2v3βn1vn1+αnvn)\begin{aligned} AV & = A \begin{pmatrix} \bm{v}_ 1 & \bm{v}_ 2 & \cdots & v_n \end{pmatrix} = \begin{pmatrix} A\bm{v}_ 1 & A\bm{v}_ 2 & \cdots & Av_n \end{pmatrix} \cr VT & = \begin{pmatrix} \bm{v}_ 1 \bm{v}_ 2 \cdots v_n \end{pmatrix} \begin{pmatrix} \alpha_1 & \beta_1 \cr \beta_1 & \alpha_2 &\beta_2 & & \Large{0} \cr &\beta_2 &\alpha_3 & \ddots \cr & &\beta_3 & \ddots &\beta_{n-2} \cr & \Large{0} & & \ddots &\alpha_{n-1} &\beta_{n-1} \cr & & & &\beta_{n-1} &\alpha_n \cr \end{pmatrix} \cr & = \begin{pmatrix}\alpha_1 \bm{v}_ 1 +\beta_1 \bm{v}_ 2 &\beta_1 \bm{v}_ 1 +\alpha_2 \bm{v}_ 2 +\beta_2 \bm{v}_ 3 & \cdots &\beta_{n-1} v_{n-1} +\alpha_n v_n \end{pmatrix} \end{aligned}

より、両辺の各列を等しいとおいて

Av1=α1v1+β1v2Avk=βk1vk1+αkvk+βkvk+1(2kn1)Avn=βn1vn1+αnvn(4.70)\begin{aligned} A\bm{v}_ 1 & = \alpha_1 \bm{v}_ 1 + \beta_1 \bm{v}_ 2 \cr Av_k & = \beta_{k-1} v_{k-1} + \alpha_k v_k + \beta_k v_{k+1} \quad (2 \leqq k \leqq n - 1) \cr Av_n & = \beta_{n-1} v_{n-1} + \alpha_n v_n \cr \end{aligned} \tag{4.70}

という関係がある。 これより vk,αk,βkv_k, \alpha_k, \beta_k を見いだす手順を考える。 まず規格化されたベクトル v1\bm{v}_ 1 を与える (v1v1=1)( \bm{v}_ 1^\top \bm{v}_ 1 = 1 )。 次いで v2\bm{v}_ 2 以下は

β1v2=w1α1v1,ただしw1=Av1βkvk+1=wkαkvk,ただしwk=Avkβk1vk1(2kn1)\begin{array}{llcl} \beta_1 \bm{v}_ 2 & = w_1 - \alpha_1 \bm{v}_ 1 , & \text{ただし} & w_1 = A \bm{v}_ 1 \cr \beta_k v_{k+1} & = w_k - \alpha_k v_k , & \text{ただし} & w_k = A v_k - \beta_{k-1} v_{k-1} \quad (2 \leqq k \leqq n - 1) \cr \end{array}

また、 αk\alpha_kβk\beta_k は、この式と規格直交関係 (4.69)(4.69) を使って

α1=v1w1β1=w1α1v1αk=vkwkβk=wkαkvk(2kn1)αn=vnwn\begin{matrix} \alpha_1 = \bm{v}_ 1^\top w_1 & \beta_1 = \Vert w_1 - \alpha_1 \bm{v}_ 1 \Vert \cr \alpha_k = v_k^\top w_k & \beta_k = \Vert w_k - \alpha_k v_k \Vert & (2 \leqq k \leqq n - 1) \cr \alpha_n = v_n^\top w_n \cr \end{matrix}

ここに v\Vert v \Vert は、 v=vv\Vert v \Vert = \sqrt{v^\top v} で定義されたユークリッド・ノルムである。

まとめると、 v1v1=1\bm{v}_ 1^\top \bm{v}_ 1 = 1 であるような v1\bm{v}_ 1 与えて、 k=1,2,,n1k = 1, 2, \cdots , n - 1 の順に

w1=Av1,α1=v1w1,v^k+1=wkαkvk,βk=v^k+1,vk+1=v^k+1/βk(規格化),wk+1=Avk+1βkvk,αk+1=vk+1wk+1(4.71)\begin{aligned} w_1 & = A\bm{v}_ 1, \quad \alpha_1 = \bm{v}_ 1^\top w_1, \cr \widehat{v}_ {k+1} & = w_k - \alpha_k v_k, \quad \beta_k = \Vert \widehat{v}_ {k+1} \Vert, \quad v_{k+1} = \widehat{v}_ {k+1} / \beta_k (\text{規格化}), \cr w_{k+1} & = Av_{k+1} - \beta_k v_k, \quad \alpha_{k+1} = v_{k+1}^\top w_{k+1} \cr \end{aligned} \tag{4.71}

と計算して行けば、 αk,βk,vk\alpha_k, \beta_k, v_k はすべて求められる (問題 4-9 参照)。 規格直交ベクトル列 vkv_k はランチョスベクトル列と呼ばれており、上の手順をランチョス(Lanczos)法という。 この方法はベクトル反復法の一つであり、行列とベクトル、ベクトルとベクトルの演算のみを含み、行列要素とかベクトル成分の何番目と何番目とを演算すると言うことがないため、わかり易い。

図 4.12 の PAD も見易いように、行列とベクトルは要素や成分に分離せずに書いた。 なお、ベクトル u\bm{u}v\bm{v} のスカラー積 uv=(u,v)=(v,u)\bm{u}^\top \bm{v} = (\bm{u}, \bm{v}) = (\bm{v}, \bm{u})(u,v) と書いた。

なお、図 4.12 においては、 vk+1v_{k+1}uvkv_kvwkw_kw としていて、どの kk についても共通の記憶領域をとっているが、固有ベクトルを求める必要があるときには、 vkv_k は行列 V=(v1v2vn)V = \begin{pmatrix} \bm{v}_ 1 & \bm{v}_ 2 & \cdots & v_n \end{pmatrix} に残しておく必要がある。

ランチョス法は、丸めの誤差に弱いと言われている。 それは、丸めの誤差のために、次々とつくり出される v1,v2,v3,\bm{v}_ 1, \bm{v}_ 2, \bm{v}_ 3, \cdots の規格直交性が破れる (vivjδij)( v_i^\top v_j \neq \delta_{ij} ) ことがあるからである。 そのため、あまり使われていなかったが、倍精度計算を行えばその心配はかなり少なくなる。 また、直交性が破れたときには再直交化する手法などが考えられている。 連立1次方程式の共役勾配法と同じようにベクトル反復法は、スーパーコンピュータ向きの方法である。

16)^{16)} T=(VAV)=VAV=VAV=T T^\top = (V^\top AV )^\top = V^\top A^\top V = V^\top AV = T

4.6.2 非対称行列の3重対角化

上のランチョス法を非対称行列の3重対角化 (ヘッセンベルグ行列化ではない) に拡張したい。 しかし、非対称行列の3重対角化を、直交変換であるような相似変換で実現することは出来そうにない。 そこで、対称行列のときの (4.68)(4.68) の代わりに、非対称行列の3重対角化は2つの異なった (直交行列とは限らない) 行列 UUVV を用いて

VAU=三重対角行列(4.72)V^\top AU = \text{三重対角行列} \tag{4.72}

の形をとるように変換することを考えよう。 AA が与えられたとき、 UUVV および求める三重対角行列を一意的に見いだしていく手順を見出すのがここでの目標である。

ところが (4.72)(4.72) だけではまだ漠然としているから、条件を課していく。 まず、 UUVV はお互いに直交するものとし

VU=Ddiag(d1,d2,,dn)(4.73)V^\top U = D \equiv \text{diag}(d_1, d_2, \cdots , d_n) \tag{4.73}

と置く。 ここに、 DD は対角要素が d1,d2,,dnd_1, d_2, \cdots , d_n である対角行列である。 この関係は、 UUVV を列ベクトルで表して

U=(u1u2un),V=(v1v2vn)U = \begin{pmatrix} \bm{u}_ 1 & \bm{u}_ 2 & \cdots & u_n \end{pmatrix} , \qquad V = \begin{pmatrix} \bm{v}_ 1 & \bm{v}_ 2 & \cdots & v_n \end{pmatrix}

とすれば

viuj=δijdi(4.74)v_i^\top u_j = \delta_{ij} d_i \tag{4.74}

と書ける。 このような viv_iuju_j は双直交 (biorthognal) であるという。 この条件は AA が対称な場合の直交関係 (4.69)(4.69) に対応する。

この UUVV による (直交変換とは限らない) 相似変換によって、 AA

U1AU=TAU=UTV1AV=TVA=TV(4.75)\begin{aligned} U^{-1} A U = T \qquad & \therefore \quad AU = U T \cr V^{-1} A^\top V = T \qquad & \therefore \quad V^\top A = T^\top V^\top \cr \end{aligned} \tag{4.75}

と3重対角化されるものとしよう。 すなわち、 UUAA を、 VVAA^\top を3重対角化する相似変換である。 このように UUVV を選んだとき DDTT はどうなるか調べて見よう。 (4.75)(4.75) の上の式の左より VV^\top を乗じ、また下の式の右より UU を乗じて VAUV^\top A U をつくると、それぞれ

VAU=DTおよびVAU=TD=(DT)V^\top A U = DT \qquad \text{および} \qquad V^\top A U = T^\top D = (D T)^\top

であるから、 DTD T

DT=(DT)(4.76)D T = (D T)^\top \tag{4.76}

のように、三重対角対称行列でなければならない。 この関係は

T=(α1β1γ1α2β20γ2α3γ3βn20αn1βn1γn1αn)T = \begin{pmatrix} \alpha_1 & \beta_1 \cr \gamma_1 & \alpha_2 & \beta_2 & & \Large{0} \cr & \gamma_2 & \alpha_3 & \ddots \cr & & \gamma_3 & \ddots & \beta_{n-2} \cr & \Large{0} & & \ddots & \alpha_{n-1} & \beta_{n-1} \cr & & & & \gamma_{n-1} & \alpha_n \cr \end{pmatrix}

とすると、 DTD T の非対角要素は等しいこと、すなわち

dkβk=dk+1γkd_k \beta_k = d_{k+1} \gamma_k

であることを意味する。 この式は dkd_kβk\beta_k が決まっているとき dk+1d_{k+1}γk\gamma_k を決める式と考えると、 dk+1d_{k+1}γk\gamma_k の一方は決まらない。 そこで、さらに条件 γk=1\gamma_k = 1 をつけ加える。 すなわち、

T=(α1β11α2β201α31βn20αn1βn11αn)(4.77)T = \begin{pmatrix} \alpha_1 & \beta_1 \cr 1 & \alpha_2 & \beta_2 & & \Large{0} \cr & 1 & \alpha_3 & \ddots & \cr & & 1 & \ddots & \beta_{n-2} \cr & \Large{0} & & \ddots & \alpha_{n-1} & \beta_{n-1} \cr & & & & 1 & \alpha_n \cr \end{pmatrix} \tag{4.77}

とする。 まず、 u1\bm{u}_ 1v1\bm{v}_ 1 を任意に (ただし u1v1=d10\bm{u}_ 1^\top \bm{v}_ 1 = d_1 \neq 0 と直交しないように) とれば、 (4.75)(4.75) より次のように u2,v2,u3,v3,,un,vn\bm{u}_ 2, \bm{v}_ 2, \bm{u}_ 3, \bm{v}_ 3, \cdots , u_n, v_n を求める手順が得られる:

u2=Au1α1u1v2=Av1α1v1uk+1=Aukαkukβk1uk1vk+1=Avkαkvkβk1vk1(4.78)\begin{aligned} \bm{u}_ 2 & = A \bm{u}_ 1 - \alpha_1 \bm{u}_ 1 \cr \bm{v}_ 2 & = A^\top \bm{v}_ 1 - \alpha_1 \bm{v}_ 1 \cr u_{k+1} & = A u_k - \alpha_k u_k - \beta_{k-1} u_{k-1} \cr v_{k+1} & = A^\top v_k - \alpha_k v_k - \beta_{k-1} v_{k-1} \cr \end{aligned} \tag{4.78}

ただし、 αk\alpha_kβk\beta_k は双直交性の条件 (4.74)(4.74)(4.78)(4.78) より

αk=vk(Auk)vkuk=vk(Auk)ukvk,βk1=vk1(Auk)vk1uk1=vkukuk1vk1(4.79)\alpha_k = \frac{v_k^\top (A u_k)}{v_k^\top u_k} = \frac{v_k^\top (A u_k)}{u_k^\top v_k} , \qquad \beta_{k-1} = \frac{v_{k-1}^\top (A u_k)}{v_{k-1}^\top u_{k-1}} = \frac{v_k^\top u_k}{u_{k-1}^\top v_{k-1}} \tag{4.79}

である。 第2式の最後の等号が成り立つのは、

vk1(Auk)=(Avk1)uk=(vk+αk1vk1+βk2vk2)uk=vkuk=ukvkdk(4.80)\begin{aligned} v_{k-1}^\top (A u_k) & = (A^\top v_{k-1})^\top u_k \cr & = (v_k + \alpha_{k-1} v_{k-1} + \beta_{k-2} v_{k-2})^\top u_k \cr & = v_k^\top u_k = u_k^\top v_k \equiv d_k \cr \end{aligned} \tag{4.80}

だからである。 こうしたのは、 (k1)(k - 1) 回目に計算した量 dk1=uk1vk1d_{k-1} = u_{k-1}^\top v_{k-1}kk 回目にもまた出来るだけ利用するためである。

非対称行列の3重対角化の手順は、対称行列のランチョス法における作業用ベクトル ww に対応して、二つの作業用ベクトル ppqq を導入して次のように計算する。

p1=Au1,q1=Av1,d1=u1v1,α1=v1p/d1uk+1=pkαkuk,vk+1=qkαkvkdk+1=uk+1vk+1,βk=dk+1/dkpk+1=Auk+1βkuk,qk+1=Avkβkvkαk+1=vk+1pk+1/dk+1(4.81)\begin{array}{ll} p_1 = A \bm{u}_ 1, q_1 = A^\top \bm{v}_ 1, & d_1 = \bm{u}_ 1^\top \bm{v}_ 1, \quad \alpha_1 = \bm{v}_ 1^\top p / d_1 \cr u_{k+1} = p_k - \alpha_k u_k, & v_{k+1} = q_k - \alpha_k v_k \cr d_{k+1} = u_{k+1}^\top v_{k+1}, & \beta_k = d_{k+1} / d_k \cr p_{k+1} = A u_{k+1} - \beta_k u_k , & q_{k+1} = A^\top v_k - \beta_k v_k \cr \alpha_{k+1} = v_{k+1}^\top p_{k+1} / d_{k+1} \cr \end{array} \tag{4.81}

uk+1u_{k+1}uuku_ku1vk+1v_{k+1}vvkv_kv1pkp_kpk+1p_{k+1}pqkq_kqk+1q_{k+1}qdk+1d_{k+1}R2dkd_kR1 と書いた PAD を 図 4.13 に示す。 uku_kvkv_k を固有ベクトルを計算するために保存したいときには、 uku_kvkv_k は各 kk について記憶領域をとっておくことが必要である。

この手順にしたがって uku_kvkv_k をつくって行ったときに双直交性 (4.74)(4.74) が成り立ち、 nn 個の uku_k (1kn)(1 \leqq k \leqq n) は1次独立、また nn 個の vkv_k (1kn)(1 \leqq k \leqq n) は1次独立であることを示すことができる (問題 4-10 参照)。

4.7 固有ベクト ルの計算

4.7.1 絶対値最大の固有値と固有ベクトル

nn 次正方行列 AAnn 個の固有値に属する nn 個の固有ベクトルが1次独立であるとき、任意の nn 次元ベクトル v(0)v^{(0)} は、 nn 個の固有ベクトルの1次結合で表される17)17)

v(0)=c1v1+c2v2++cnvn(4.82)v^{(0)} = c_1 \bm{v}_ 1 + c_2 \bm{v}_ 2 + \cdots + c_n v_n \tag{4.82}

ここに vi(i=1,2,,n)v_i (i = 1, 2, \cdots , n)AA の固有値 λi(i=1,2,,n)\lambda_i (i = 1, 2, \cdots , n) に属する規格化された固有ベクトルで

Avi=λivi,vi=1(i=1,2,,n)(4.83)A v_i = \lambda_i v_i, \qquad \Vert v_i \Vert = 1 (i = 1, 2, \cdots , n) \tag{4.83}

の関係にある。 固有値を絶対値の大きい方から番号をつけて

λ1λ2λn(4.84)\vert \lambda_1 \vert \geqq \vert \lambda_2 \vert \geqq \cdots \geqq \vert \lambda_n \vert \tag{4.84}

とする。 これらの関係より

Av(0)=Ac1v1+Ac2v2++Acnvn=c1λ1v1+c2λ2v2++cnλnvn(4.85)\begin{aligned} A v^{(0)} & = A c_1 v_1 + A c_2 v_2 + \cdots + A c_n v_n \cr & = c_1 \lambda_1 v_1 + c_2 \lambda_2 v_2 + \cdots + c_n \lambda_n v_n \cr \end{aligned} \tag{4.85}

である。 一般に AAkk 回乗じたベクトルを v(k)v^{(k)} とすれば

v(k)=Akv(0)=c1λ1kv1+c2λ2kv2++cnλnkvn=λ1k[c1v1+c2(λ2λ1)kv2++cn(λnλ1)kvn](4.86)\begin{aligned} v^{(k)} = A^k v^{(0)} = c_1 \lambda_1^k v_1 + c_2 \lambda_2^k v_2 + \cdots + c_n \lambda_n^k v_n \cr = \lambda_1^k \left[ c_1 v_1 + c_2 \left( \frac{\lambda_2}{\lambda_1} \right)^k v_2 + \cdots + c_n \left( \frac{\lambda_n}{\lambda_1} \right)^k v_n \right] \cr \end{aligned} \tag{4.86}

λ1>λ2\vert \lambda_1 \vert > \vert \lambda_2 \vert であり、 v(0)v^{(0)}v1v_1 の成分をもっている (c10)( c_1 \neq 0 ) ならば、 AA を乗じる回数を十分大きくすると、 v(k)v^{(k)}c1λ1kv1c_1 \lambda_1^k v_1 に収束する。

v(k)c1λ1kv1v^{(k)} \cong c_1 \lambda_1^k v_1

v1v_1λ1\lambda_1 に属する固有ベクトルなら、 c1λ1kv1c_1 \lambda_1^k v_1λ1\lambda_1 に属する固有ベクトルであるから、絶対値最大の固有値に属する固有ベクトルが求められる。 実際上は、 λ11\vert \lambda_1 \vert \neq 1 の時には kk が大きいとアンダーフロー (λ1<1)( \vert \lambda_1 \vert < 1 ) やオーバーフロー (λ1>1)( \vert \lambda_1 \vert > 1 ) がおこる。 そこで v(k)v^{(k)} をいつも規格化する。

w(k)=Av(k1),v(k)=w(k)/w(k)(4.87)w^{(k)} = A v^{(k-1)}, v^{(k)} = w^{(k)} / \vert \vert w^{(k)} \vert \vert \tag{4.87}

こうすると、 kk が大きくなると v(k)v^{(k)}v1v_1 に収束する。

17)^{17)} このとき、固有ベクトルは完備系をなすという。

この方法の利点は、同時に絶対値最大の固有値 λ1\lambda_1 も求められることである。 v(k)v^{(k)} に直交しない任意のベクトルを uu とすると (もちろん u=v(k)u = v^{(k)} としてもよい)、

uAv(k)uv(k)λ1uv(k)0(4.88)\frac{u^\top A v^{(k)}}{u^\top v^{(k)}} \to \lambda_1 \qquad \qquad u^\top v^{(k)} \neq 0 \tag{4.88}

λ1\lambda_1 に収束するからである。 この式は、十分よく収束した v(k)v^{(k)} を用いて λ1\lambda_1 の改良値を求めるのに使われる。

この最大絶対値の固有値と固有ベクトルを求める方法は、行列 AA を次々と掛けることから、べき乗法 (power method) または累乗法という。

べき乗法の収束の早さは、 λi/λ1(i>1)\vert \lambda_i / \lambda_1 \vert (i > 1) とくに λ2/λ1\vert \lambda_2 / \lambda_1 \vert によってきまる。 λ2/λ1\vert \lambda_2 / \lambda_1 \vertが小さいほど収束は早い。 c10c_1 \neq 0 であることも必要である。 c1c_1 は初期ベクトル v(0)v^{(0)}λ1\lambda_1 に属する固有ベクトル v1v_1 の方に向いているとき c10c_1 \neq 0 である。 たまたま c1=0c_1 = 0 なら、理論的には次に大きい固有値 λ2\lambda_2 と、 λ2\lambda_2 に属する固有値ベクトル v2v_2 に収束する。 しかし実際には、 c1=0c_1 = 0 であっても丸めの誤差のために c10c_1 \neq 0 の項が現れて成長して、 v1v_1 に収束する。 (ただし、反復回数は大きい。) 初期ベクトル v(0)v^{(0)}v1v_1 の方向の成分を含むようにえらばなければならないが、あらかじめ v1v_1 はわかっていないので、 v(0)v^{(0)} のどの成分も 11 であるようにとる。

v(0)=(1111)v^{(0)} = \begin{pmatrix} 1 & 1 & 1 & \cdots & 1 \end{pmatrix}^\top

λ2/λ1=1\vert \lambda_2 / \lambda_1 \vert = 1 であれば、 λ2=λ1\lambda_2 = \lambda_1 のときは v1v_1v2v_2 の1次結合に収束する。 この1次結合も λ1\lambda_1 に属する固有ベクトルである。 λ2=λ1\lambda_2 = - \lambda_1 のときは、 c20c_2 \neq 0 のとき (4.86)(4.86) の第2項は振動し収束しない。 このようなときは、後述の原点移動を行う必要がある。

mm(m>1)(m > 1) の固有値が重複しているとき、この重複固有値に対応する固有ベクトルの mm 個全部は1次独立ではない (完備系でない) ことがある。 このときには、任意の nn 次元ベクトル v(0)v^{(0)} は、 (4.82)(4.82) のようには表せない。 (典型的な例は AA がジョルダン細胞のときである。) このときには、重複固有値 λ\lambda にたいして

(AλI)py=0(p2)(A - \lambda I)^p \bm{y} = 0 \qquad (p \geqq 2)

を満たす y\bm{y} として定義される広義固有ベクトルを本来の固有ベクトル (p=1)(p = 1) の他につけ加えれば、 (4.82)(4.82) の形に表され、 (4.88)(4.88) が得られる。 (次の [例 4.7] を参照)

[例 4.7]

2次のジョルダン細胞 (対角要素が同じで、上副対角要素が 11 、その他の非対角要素は 00 の行列)

A=(2102)A = \begin{pmatrix} 2 & 1 \cr 0 & 2 \cr \end{pmatrix}

の固有値は λ1=λ2=2\lambda_1 = \lambda_2 = 2 で重複している。 固有ベクトルは

(AλI)x=(0100)(xy)=(y0)=0x1=(10)(A - \lambda I) x = \begin{pmatrix} 0 & 1 \cr 0 & 0 \cr \end{pmatrix} \begin{pmatrix} x \cr y \cr \end{pmatrix} = \begin{pmatrix} y \cr 0 \cr \end{pmatrix} = 0 \qquad \therefore \quad x_1 = \begin{pmatrix} 1 \cr 0 \cr \end{pmatrix}

のみであり、任意の2次元ベクトルは固有ベクトルの1次結合では表現し切れない。

広義固有ベクトルを y\bm{y} とすると、固有値の重複度は m=2m = 2 であるから、広義固有ベクトルは

(AλI)2y=(0000)(xy)=(00)=0(A - \lambda I)^2 \bm{y} = \begin{pmatrix} 0 & 0 \cr 0 & 0 \cr \end{pmatrix} \begin{pmatrix} x \cr y \cr \end{pmatrix} = \begin{pmatrix} 0 \cr 0 \cr \end{pmatrix} = 0

より、 yy は任意となり、 x1x_1 と1次独立なベクトルとして

x2=(01)x_2 = \begin{pmatrix} 0 \cr 1 \cr \end{pmatrix}

が選べる。 そうして、固有ベクトル x1x_1 と広義固有ベクトル x2x_2 とを合わせれば、2次元ベクトル空間の完備系をなす。

ちなみに、この x1x_1x2x_2AA との間に

Ax1=λx1Ax2=λx2+x1(AλI)2x2=(AλI)x1=0\begin{aligned} & A \bm{x}_ 1 = \lambda \bm{x}_ 1 \cr & A \bm{x}_ 2 = \lambda \bm{x}_ 2 + \bm{x}_ 1 \qquad \therefore \quad (A - \lambda I)^2 \bm{x}_ 2 = (A - \lambda I) \bm{x}_ 1 = 0 \cr \end{aligned}

の関係がある。 このように、 x2x_2 は本来の固有ベクトルではなく広義固有ベクトルである。 そして、 AA を乗ずるごとに、 x2x_2λ\lambda 倍されると同時に、固有ベクトル x1x_1 が創り出される。

N=AλIN = A - \lambda I と置けば、 N0N \neq 0 であるが、 N2=(AλI)2=0N^2 = (A - \lambda I)^2 = 0 であるから、

Ak=(λI+N)k=λkI+kλk1N=λkI+kλk1(AλI)=(k1)λkI+kλk1AAkx2=(k1)λkx2+kλk1(λx2+x1)=λkx2+kλk1x1\begin{aligned} A^k & = ( \lambda I + N )^k = \lambda^k I + k \lambda^{k-1} N = \lambda^k I + k \lambda^{k-1} (A - \lambda_I) \cr & = - (k - 1) \lambda^k I + k \lambda^{k-1} A \cr & \begin{aligned} \therefore \quad A_k \bm{x}_ 2 & = - (k - 1) \lambda^k \bm{x}_ 2 + k \lambda^{k-1} ( \lambda \bm{x}_ 2 + \bm{x}_ 1) \cr & = \lambda^k \bm{x}_ 2 + k \lambda^{k-1} \bm{x}_ 1 \cr \end{aligned} \cr \end{aligned}

2次元の任意のベクトル x\bm{x} は、 x=c1x1+c2x2\bm{x} = c_1 \bm{x}_ 1 + c_2 \bm{x}_ 2 と表せるから、

Akx=c1λkx1+c2(λkx2+kλk1x1)A^k \bm{x} = c_1 \lambda^k \bm{x}_ 1 + c_2 ( \lambda^k \bm{x}_ 2 + k \lambda^{k-1} \bm{x}_ 1)

kk が大きい (kλ)(k \gg \vert \lambda \vert) ときには、 c2kλk1x1c_2 k \lambda^{k-1} \bm{x}_ 1 の項が主要項となる。 この項は AA の固有値 λ\lambda に属する固有ベクトルである。 すなわち、 AkxA^k \bm{x} はこの固有ベクトルに収束する。 しかし、 λ/k<εR(許容相対誤差)\vert \lambda \vert / k < \varepsilon_R \text{(許容相対誤差)} が必要であり、一般に収束は非常に遅い。

4.7.2 絶対値最小の固有値と固有ベクトル

AA の固有値 λ\lambda と、 λ\lambda に属する固有ベクトル v\bm{v} の間には、定義により

Av=λvA \bm{v} = \lambda \bm{v}

の関係がある。 この両辺に逆行列 A1A^{-1} を乗じ、かつ λ\lambda で割れば

A1v=1λv(4.89)A^{-1}\bm{v} = \frac{1}{\lambda} \bm{v} \tag{4.89}

が得られる。 すなわち、 A1A^{-1} の固有値は λ1\lambda^{-1} で、固有ベクトルは AA の固有値 λ\lambda に属する固有ベクトルと同じである。 このことからべき乗法の AA の代わりに A1A^{-1} を用いることにより絶対値最小の固有値と固有ベクトルを求めることが出来る。 すなわち初期ベクトル v(0)\bm{v}^{(0)} より出発して、

w(k)=A1v(k1),v(k)=w(k)/w(k)(規格化)(4.90)\bm{w}^{(k)} = A^{-1} \bm{v}^{(k-1)}, \quad \bm{v}^{(k)} = \bm{w}^{(k)} / \Vert \bm{w}^{(k)} \Vert \quad \text{(規格化)} \tag{4.90}

により v(1),v(2),\bm{v}^{(1)}, \bm{v}^{(2)}, \cdots をつくって行けば、 v(k)\bm{v}^{(k)} は絶対値最小の固有ベクトルに収束する。 また、

uA1v(k)uv(k)(uv(k)0)(4.91)\frac{u^\top A^{-1} \bm{v}^{(k)}}{u^\top \bm{v}^{(k)}} \qquad (u^\top \bm{v}^{(k)} \neq 0) \tag{4.91}

は、絶対値最小の固有値 λn\lambda_n の逆数 λn1\lambda_n^{-1} に収束する。 この方法を逆べき乗法または逆反復法という。

(4.90)(4.90) を計算するには逆行列 A1A^{-1} が必要であるが、実際には、前回求められてすでにわかっている v(k1)\bm{v}^{(k-1)} を定数項とする連立1次方程式

Aw(k)=v(k1),v(k)=w(k)/w(k)(4.92)A \bm{w}^{(k)} = \bm{v}^{(k-1)}, \quad \bm{v}^{(k)} = \bm{w}^{(k)} / \Vert \bm{w}^{(k)} \Vert \tag{4.92}

を解いて w(k)\bm{w}^{(k)} を求め、次に w(k)\bm{w}^{(k)} より v(k)\bm{v}^{(k)} を求める。 ノルム w(k)\Vert \bm{w}^{(k)} \Vert は、 w(k)2\Vert \bm{w}^{(k)} \Vert_2 あるいは w(k)\Vert \bm{w}^{(k)} \Vert_\infty をとればよい。

連立1次方程式 (4.92)(4.92)AA が三重対角行列の場合には、 AALU\text{LU} 分解する。 AA

A=(α1β1γ1α2β20γ2α3γ3βn20αn1βn1γn1αn)=LU(4.93)A = \begin{pmatrix} \alpha_1 & \beta_1 \cr \gamma_1 & \alpha_2 & \beta_2 & & & \Large{0} & \cr & \gamma_2 & \alpha_3 & \ddots \cr & & \gamma_3 & \ddots & \beta_{n-2} \cr & \Large{0} & & \ddots & \alpha_{n-1} & \beta_{n-1} \cr & & & & \gamma_{n-1} &\alpha_n \cr \end{pmatrix} = LU \tag{4.93}

LU\text{LU} 分解すれば、

L=(1γ1/m110γ2/m201γn1/mn11),U=(m1β1m2β20m30βn1mn)L = \begin{pmatrix} 1 \cr \gamma_1 / m_1 & 1 & & \Large{0} \cr & \gamma_2 / m_2 & \ddots \cr \Large{0} & & \ddots & 1 \cr & & & \gamma_{n-1} / m_{n-1} & 1 \cr \end{pmatrix}, U = \begin{pmatrix} m_1 & \beta_1 \cr & m_2 & \beta_2 & & \Large{0} \cr & & m_3 & \ddots \cr & \Large{0} & & \ddots & \beta_{n-1} \cr & & & & m_n \cr \end{pmatrix}

ただし

m1=α1mi+1=αi+1βiγimii=1,2,,n1\begin{alignat*}{2} & m_1 & & = \alpha_1 \tag{4.94} \cr & m_{i+1} & & = \alpha_{i+1} - \frac{\beta_i \gamma_i}{m_i} \qquad i = 1, 2, \cdots, n - 1 \tag{4.95} \cr \end{alignat*}

であるから、 mi=0m_i = 0 でない限り容易に解ける。 mi\vert m_i \vert は小さいこともあるのでピボット選択が必須であるが、ピボットは対角要素か下副対角要素に限られるので一般の場合より容易である。

逆べき乗法の収束は、 λn/λn1\vert \lambda_n / \lambda_{n-1} \vert が小さいほど早い。 ここに λn\lambda_n は絶対値最小の固有値であり、 λn1\lambda_{n-1} は次に絶対値の小さい固有値である。

4.7.3 三重対角行列の固有ベクトル

ランクのわかっている 三重対角行列の固有ベクトル求めるには、次の簡便な方法がある。 固有値を λi\lambda_i 、固有ベクトルを xix_i とする。 λi\lambda_i が求められたとき、 xi=(x1x2xn)x_i = \begin{pmatrix} x_1 & x_2 & \cdots & x_n \end{pmatrix}^\top を未知数とする連立1次方程式は、 (4.93)(4.93)AA より、

(α1λi)x1+β1x2=0γ1x1+(α2λi)x2+β2x3=0γk1xk1+(αkλi)xk+βkxk+1=0γn2xn2+(αn1λi)xn1+βn1xn=0γn1xn1+(αnλi)xn=0(4.96)\begin{aligned} & & (\alpha_1 - \lambda_i) & x_1 & & + \beta_1 x_2 & & = 0 \cr & \gamma_1 x_1 + & (\alpha_2 - \lambda_i) & x_2 & & + \beta_2 x_3 & & = 0 \cr & \cdots & & \cdots \cr & \gamma_{k-1} x_{k-1} + & (\alpha_k - \lambda_i) & x_k & & + \beta_k x_{k+1} & & = 0 \cr & \cdots & & \cdots \cr & \gamma_{n-2} x_{n-2} + & (\alpha_{n-1} - \lambda_i) & x_{n-1} & & + \beta_{n-1} x_n & & = 0 \cr & \gamma_{n-1} x_{n-1} + & (\alpha_n - \lambda_i) & x_n & & & & = 0 \cr \end{aligned}\tag{4.96}

である。 ところで、この方程式の係数行列 AλiIA - \lambda_i I のランク (階数) rr は、 r<nr < n であり、 xix_inrn - r 個の成分は任意である。 いま r=n1r = n - 1 のときは、 x1=cx_1 = c ( 00 でない定数、例えば x1=1x_1 = 1 ) とおき、 k=1,2,,n1k = 1, 2, \cdots , n - 1 の順に

xk+1=(γk1xk1+(αkλi)xk)/βk(4.97)x_{k+1} = -(\gamma_{k-1} x_{k-1} + (\alpha_k - \lambda_i ) x_k) / \beta_k \tag{4.97}

x2,,xnx_2, \cdots , x_n を求めるれば (ただし、γ0=0\gamma_0 = 0 )、 λi\lambda_i に属する固有ベクトル xix_i が得られる。 一般に、ランクが r=nmr = n - m である時は、 xk(1km)x_k (1 \leqq k \leqq m) を自由に選び (例えば、 xk=1x_k = 1 )、 (4.97)(4.97) より xm+1,xm+2,xnx_{m+1}, x_{m+2}, \cdots x_n を求める。

三重対角行列の固有ベクトルを求め終わったら、三重対角行列化のための相似変換行列を使って、もとの行列の固有ベクトルを求める。

4.7.4 ヘッセンベルグ行列の固有ベクトル

三重対角行列の以上の方法は、ヘッセンベルグ行列に拡張出来る。 ただし、上ヘッセンベルグ行列に対しては、 xnx_n を与えて k=n1,n2,2,1k = n - 1, n - 2, \cdots 2, 1 の順にきめていくし、下ヘッセンベルグ行列のときは、 x1x_1 を与えて k=2,3,,nk = 2, 3, \cdots , n の順に決めていく。

なお、4重対角行列、5重対角行列などの多重対角行列はランクが n1n - 1 のときはこの方法は適用できないことに注意 (何故か)。

4.7.5 一般の固有ベクトル

一般の固有ベクトルは、逆べき乗法に原点移動といわれる操作をほどこして求められる。 まず AA の固有値を λ\lambda 、固有ベクトルを v\bm{v} とすると、

Av=λv(4.98)A \bm{v} = \lambda \bm{v} \tag{4.98}

であるが、これよりある定数 μ\mu を使って両辺から μv\mu \bm{v} を引くと、

(AμI)v=(λμ)v(4.99)(A - \mu I) \bm{v} = (\lambda - \mu) \bm{v} \tag{4.99}

さらに逆べき乗法の形

(AμI)1v=1λμv(4.100)(A - \mu I)^{-1} \bm{v} = \frac{1}{\lambda - \mu} \bm{v} \tag{4.100}

と変形する。 (AμI)1(A - \mu I)^{-1}AμIA - \mu I の逆行列であり、 v\bm{v}AA の固有値 λ\lambda に属する固有値ベクトルである。 ( v\bm{v} はまた AμIA - \mu I の固有値 λμ\lambda - \mu に属する固有ベクトルでもあり、 (AμI)1(A - \mu I)^{-1} の固有値 (λμ)1(\lambda - \mu)^{-1} に属する固有ベクトルでもある。) 原点移動を伴う逆べき乗法は、固有ベクトルが完備系をなすとき

v(k)=(AμI)kv(0)=j=1ncj(λjμ)kvj(4.101)\bm{v}^{(k)} = (A - \mu I)^{-k} \bm{v}^{(0)} = \sum_{j=1}^n c_j (\lambda_j - \mu)^{-k} \bm{v}_ j \tag{4.101}

なる vk\bm{v}^{k} を求めるものである。 収束の速さは λμ\vert \lambda - \mu \vert の最小値 (これを λiμ\vert \lambda_i - \mu \vert と する) とその次の最小値 (これを λjμ\vert \lambda_j - \mu \vert とする) の比によってきまる。

vk=(λiμ)k{civi+(λiμλjμ)kcjvj+}(4.102)\bm{v}^{k} = (\lambda_i - \mu)^{-k} \left\{ c_i \bm{v}_ i + \left( \frac{\lambda_i - \mu}{\lambda_j - \mu} \right)^k c_j \bm{v}_ j + \cdots \right\} \tag{4.102}

いま、一つの固有値 λi\lambda_i の近似値 μ\mu が10桁の精度で求められているとすると、 λiμ<1010\vert \lambda_i - \mu \vert < 10^{-10} である。 また λj\lambda_jλi\lambda_i が3桁程度近接していると λjμλjλi>103\vert \lambda_j - \mu \vert \cong \vert \lambda_j - \lambda_i \vert > 10^{-3} だから v(2)\bm{v}^{(2)} は、固有値 λi\lambda_i に属する固有ベクトル vi\bm{v}_ i(103)×2=14(10 - 3) \times 2 = 14 桁程度一致している。 こうして、 μλ1,λ2,,λn\mu \cong \lambda_1, \lambda_2, \cdots, \lambda_n として逆べき乗法により、 nn 個の固有ベクトル v1,v2,,vn\bm{v}_ 1, \bm{v}_ 2, \cdots, \bm{v}_ n は、連立1次方程式

(AμI)vi(k)=vi(k1)(i=1,2,,n)(4.103)(A - \mu I) \bm{v}_ i^{(k)} = \bm{v}_ i^{(k-1)} \qquad (i = 1, 2, \cdots , n) \tag{4.103}

k=1,2,k = 1, 2, \cdots と解くことによって求められる。 この連立1次方程式は LU\text{LU} 分解

AμI=LU(4.104)A - \mu I = LU \tag{4.104}

により、 LU\text{LU} 分解法によって解く。 このとき、一般にはピボット選択が必要である。

AA 、したがって AμIA - \mu I が三重対角行列であるときは、ピボット選択は、同じ列の次の行の要素と比較して絶対値の大きい方をピボットとする。 他の行はすでに LU\text{LU} 分解がすんでいるか、または 00 である。 AA が一般の行列のときには、 AA を相似変換の行列 PP によって P1APP^{-1} A P と3重対角化し、 LU\text{LU} 分解法によって三重対角行列 P1APP^{-1} A P の固有ベクトル v\bm{v} を求め、 PvP \bm{v} と変換すれば、一般の行列の固有ベクトルが得られる。

固有ベクトルが完備系をなさない場合にも、 [例 4.7] と同様にして、 λμ/k<εR(許容相対誤差)\vert \lambda - \mu \vert / k < \varepsilon_R \text{(許容相対誤差)} なる関係が得られ、これより反復回数 kk は原点移動により大幅に減少する (λμλ)( \vert \lambda - \mu \vert \ll \vert \lambda \vert ) ことがわかる。

4.8 QR\text{QR} 法とダブル QR\text{QR}

4.8.1 QR\text{QR} 分解と QR\text{QR}

任意の nn 次複素正方行列 AA は、あるユニタリ行列 QQ によって複素上三角行列 RR に変換出来る (シュールの定理18)18) )。 これが、これから述べる QR\text{QR} 法とダブル QR\text{QR} 法の出発点である。

18)^{18)} シュールの定理は 問題 4-1 で証明されている。

いま、 nn 次正方行列 AA をユニタリ行列 Q1Q_1 と三角行列 R1R_1 に分解する。 すなわち

A=Q1R1(4.105)A = Q_1 R_1 \tag{4.105}

これを AAQR\text{QR} 分解という。 次に、 Q1Q_1R1R_1 の順をいれかえて掛けた行列を A1A_1 とする:

A1=R1Q1(4.106)A_1 = R_1 Q_1 \tag{4.106}

A1A_1 は、ユニタリ行列 Q1Q_1 による AA(4.147)(4.147) のタイプの相似変換であることは次のようにしてわかる: Q1HQ1=IQ_1^\text{H} Q_1 = I に注意して、 (4.105)(4.105) より R1=Q1HAR_1 = Q_1^\text{H} A であるから、これを (4.106)(4.106) に代入すると、

A1=R1Q1=Q1HAQ1(4.107)A_1 = R_1 Q_1 = Q_1^\text{H} A Q_1 \tag{4.107}

もし A1A_1 が三角行列であるような Q1Q_1 が1回の QR\text{QR} 分解と順番を入れ換えた積で見いだされるならば、三角行列 A1A_1 の対角要素が固有値になっているから、固有値が求められたことになる。 これはアベルの定理に反するから一般的には不可能である。 それで、 QR\text{QR} 分解と順番を入れ換えた積の計算を反復することになる。 すなわち、 A0=AA_0 = A より出発して、 k=1,2,3,k = 1, 2, 3, \cdots の順に

Ak1=QkRk(4.108)A_{k-1} = Q_k R_k \tag{4.108}

QR\text{QR} 分解して、 QkQ_kRkR_k の順をいれかえて

Ak=RkQk(=QkHAk1Qk)(4.109)A_k = R_k Q_k (= Q_k^\text{H} A_{k-1} Q_k ) \tag{4.109}

を求めていく。 kk が大きくなると AkA_k は上三角行列に近づいていき、もとの行列の固有値は対角線上に並ぶであろう。 以上が QR\text{QR} 法の考え方の原理である。

4.8.2 QR\text{QR} 法の収束性

シュールの定理 (4.147)(4.147) は、任意の複素非対称行列 AA について成り立つ。 そして、この定理に現れた行列 UUSS も一般には複素行列である。 したがって、 QR\text{QR} 法の演算も一般には複素演算である。 しかし、本書では固有値問題を解くべき行列は実行列を対象としている。 そして、 QQRR も実行列とする。 すなわち、 QQ は直交行列、 RR は実上三角行列である。 一方、 AA は実行列であっても、固有値は一般には複素数であり、このことが QR\text{QR} 法の収束性に少し 面倒な事情をつけ加える。 もし、 QQRR が実行列である QR\text{QR} 法で三角行列に収束するなら、その三角行列の対角要素に複素数の固有値が現れるはずがない。 すなわち、複素固有値に対応する三角行列は求めることは不可能のはずである。 実際、 AAQQRR も実行列に限定すると、( QQ は直交行列、 RR は三角行列であるが) AkA_k は一般には三角行列ではなく、ブロック三角行列に近づく。 ブロック三角行列とは、対角線上に正方小行列が並らんだ三角行列である (図 4.14 参照)。 その正方小行列の次数 pp は、 p=1p = 1 または 22 である。

p=1p = 1 の正方小行列の要素は実数固有値そのものである。 p=2p = 2 の場合、この小行列の2つの固有値の絶対値は等しい。 したがって、この2次小行列の固有値は、共役複素数のペア ( x±iy )( \ x \pm iy \ ) であるか、絶対値の等しい2つの実数固有値 ( ±x )( \ \pm x \ ) であるかのいづれかである。 このようにして得られる小行列の固有値は、当然、もとの実行列 AA の固有値である。

 
(0)\left( \begin{array}{cccccccccc} \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr & & & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr & & & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr & & & & & \ddots & \ast & \ast & \ast & \ast \cr & & & & & & \ast & \ast & \ast & \ast \cr & & \Large{0} & & & & & \ast & \ast & \ast \cr & & & & & & & & \ast & \ast \cr & & & & & & & & \ast & \ast \cr \end{array} \right)
図 4.14 ブロック三角行列

一般にこのブロック三角行列に収束することの証明は面倒である。 最も簡単な場合は、行列が 00 でない絶対値の相異なる実数の固有値を持っている場合である。 すなわち、

λ1>λ2>>λi>>λn>0(4.110)\vert \lambda_1 \vert > \vert \lambda_2 \vert > \cdots > \vert \lambda_i \vert > \cdots > \vert \lambda_n \vert > 0 \tag{4.110}

このときには、上三角行列に収束するが、その要素について、次のことがわかっている (問題 4-13 参照)。 AkA_k の要素を aija_{ij} と書くと、 kk \to \inftyのとき

aiiλi(対角要素)aij(λi/λj)k0i>j(下三角の要素)aij=振動i<j(上三角の要素)(4.111)\begin{aligned} & a_{ii} \quad \to \quad \lambda_i & & \quad \text{(対角要素)} \cr & a_{ij} \quad \propto \quad (\lambda_i / \lambda_j )^k \to 0 & i > j & \quad \text{(下三角の要素)} \cr & a_{ij} \quad = \quad \text{振動} & i < j & \quad \text{(上三角の要素)} \cr \end{aligned} \tag{4.111}

上三角の要素は振動するから上三角行列に ‘‘\text{‘‘} 収束 ’’\text{’’} するわけではない。 しかし、下三角の要素が 00 に収束し、対角要素が固有値に収束するから、固有値を求めるという目的は達成される。 この意味で、 QR\text{QR} 法は ‘‘\text{‘‘} 本質的に収束する ’’\text{’’} と言われている。 一般の場合も、まず、左下より 00 に近付き、右下の λ\vert \lambda \vert の小さなブロックから収束し、左上の λ\vert \lambda \vert の大きなブロックに至る。 こうして、小さな λ\vert \lambda \vert の固有値 λ\lambda から求められる (後述の [例 4.8 ] 参照)。

4.8.3 ヘッセンベルグ行列の QR\text{QR} 分解

QR\text{QR} 法は、このままでは、たとえ ‘‘\text{‘‘} 本質的に収束 ’’\text{’’} しても、 (4.108)(4.108)QR\text{QR} 分解と (4.109)(4.109) の行列の逆順の積を求める演算量は非常に大きくて使いものにならない。 普通は、ギブンス法やハウスホルダー変換によってもとの行列 AA をあらかじめ上ヘッセンベルグ行列に変換してから、 QR\text{QR} 法を適用する。

ハウスホルダー法によるヘッセンベルグ行列化については、問題 4-6 と図 4.15 の PAD を参照されたい。

ヘッセンベルグ行列 Ak1A_{k-1}QR\text{QR} 分解の直交行列 QkQ_k は、 (4.156)(4.156) と同様に

Pn1Pn2P1Ak1=RkP_{n-1} P_{n-2} \cdots P_1 A_{k-1} = R_k Qk=(Pn1Pn2P1)=P1P2Pn1(4.112)\therefore \quad Q_k = (P_{n-1} P_{n-2} \cdots P_1)^\top = P_1^\top P_2^\top \cdots P_{n-1}^\top \tag{4.112}

とする。 ここの PiP_i は、 Pi1Pi2P1Ak1P_{i-1} P_{i-2} \cdots P_1 A_{k-1} の第 ii 列の副対角要素 ai+1ia_{i+1i}00 にする直交行列である:

Pi=第 i 列第 i+1 列第 i 行第 i+1 行(11cosθsinθsinθcosθ11)(4.113)P_i = \begin{matrix} & \begin{matrix} & \text{第} \ i \ \text{列} & \text{第} \ i + 1 \ \text{列} \end{matrix} \cr \begin{aligned} & \text{第} \ i \ \text{行} \cr & \text{第} \ i + 1 \ \text{行} \end{aligned} & \begin{pmatrix} 1 \cr & \ddots \cr & & 1 \cr & & & \cos \theta & \sin \theta \cr & & & - \sin \theta & \cos \theta \cr & & & & & 1 \cr & & & & & & \ddots \cr & & & & & & & 1 \cr \end{pmatrix} \end{matrix}\tag{4.113}

PiP_i によって変化する要素は、第 ii 行と第 i+1i + 1 行だけで、 jij \geqq i として

aij=aijcosθ+ai+1jsinθai+1j=aijsinθ+ai+1jcosθ(4.114)\begin{aligned} & a_{ij}^\prime & & = a_{ij} \cos \theta + a_{i+1j} \sin \theta \cr & a_{i+1j}^\prime & & = -a_{ij} \sin \theta + a_{i+1j} \cos \theta \cr \end{aligned} \tag{4.114}

である。 ai+1i=0a_{i+1i}^\prime = 0 より

daii2+aii+12ssinθ=ai+1i/dccosθ=aii/d(4.115)\begin{aligned} & d \equiv \sqrt{ \vert a_{ii} \vert ^2 + \vert a_{i\, i+1} \vert ^2} \cr & s \equiv \sin \theta = a_{i+1\, i} / d \cr & c \equiv \cos \theta = a_{ii} / d \cr \end{aligned} \tag{4.115}

これを代入して、

ai+1i=0aii=d(4.116)\begin{aligned} & a_{i+1i}^\prime & = 0 \cr & a_{ii}^\prime & = d \cr \end{aligned} \tag{4.116}

ji+1j \geqq i + 1 の要素は、 (4.115)(4.115)sscc を用いて

τtanθ2=s1+c(4.117)\tau \equiv \tan \frac{\theta}{2} = \frac{s}{1 + c} \tag{4.117}

を求めれば、 c=1sτc = 1 - s \tau だから、 (4.114)(4.114) より

aij=aij+s(ai+1jτaij)ai+1j=ai+1js(aij+τai+1j)(4.118)\begin{aligned} & a_{ij}^\prime & & = a_{ij} + s(a_{i+1\, j} - \tau a_{ij} ) \cr & a_{i+1\, j}^\prime & & = a_{i+1\, j} - s(a_{ij} + \tau a_{i+1\, j} ) \cr \end{aligned} \tag{4.118}

この形はもとの (4.114)(4.114) と比べて一見複雑に見えるが、乗算の回数は同じで精度はよい。

QkQ_k を求めるには、 (4.112)(4.112) より、各 QR\text{QR} 分解の初めに Qk=I(単位行列)Q_k = I \text{(単位行列)} としておいて、 Qk=QkPiQ_k = Q_k P_i^\top なる演算を i=1i = 1 から n1n - 1 まで行なって、 (4.109)(4.109) の逆順の積の計算に備える。 QkQ_k の計算は、

qji=qji+s(qji+1τqji)qji+1=qji+1s(qji+τqji+1)(4.119)\begin{aligned} & q_{ji}^\prime & & = q_{ji} + s(q_{j\, i+1} - \tau q_{ji}) \cr & q_{j\, i+1}^\prime & & = q_{j\, i+1} - s(q_{ji} + \tau q_{j\, i+1}) \cr \end{aligned} \tag{4.119}

として行う。 こうして求められた QkQ_k はヘッセンベルグ行列であることは容易に確かめられる。 また

(上三角行列)×(上ヘッセンベルグ行列)=(上ヘッセンベルグ行列)\text{(上三角行列)} \times \text{(上ヘッセンベルグ行列)} = \text{(上ヘッセンベルグ行列)}

だから、 Ak=RkQkA_k = R_k Q_k もヘッセンベルグ行列である。 したがって最初に A=A0A = A_0 をヘッセンベルグ行列に直しておけば、以後 Ak(k>0)A_k (k > 0) はヘッセンベルグ行列であるから、直交変換 (4.114)(4.114) だけで QR\text{QR} 分解出来る。 また、逆順の積の計算も三角行列とヘッセンベルグ行列であることを考慮すれば簡略化出来る。

4.8.4 原点移動による収束の加速

(4.111)(4.111) より、下三角の要素の 00 への収束は固有値の比によって決まる。 特に絶対値最小の固有値 λn\lambda_n とその次に絶対値の小さい固有値 λn1\lambda_{n-1} の比が重要である。 この比が ±1\pm 1 あるいは ±1\pm 1 に近いときは反復回数は大きくなるか、収束は望めない。 この比を小さくすることを考えよう。

λn\lambda_n の近似値 μ\mu がわかったとしよう。 そのときには、 QR\text{QR} 分解を Ak1A_{k-1} ではなくて、 Ak1μIA_{k-1} - \mu I について行う:

Ak1μI=QkRkAk=RkQk+μI(4.120)\begin{aligned} & A_{k-1} - \mu I = Q_k R_k \cr & A_k = R_k Q_k + \mu I \cr \end{aligned} \tag{4.120}

このときの下三角の要素の大きさは、 [(λnμ)/(λn1μ)]k[ (\lambda_n - \mu) / (\lambda_{n-1} - \mu) ]^k に比例する。 もし μ\muλn\lambda_n のよい近似値なら、この比はほとんど 00 で、収束は加速される。 しかも都合のよいことには、 λn=λn1\vert \lambda_n \vert = \vert \lambda_{n-1} \vert であっても λnλn1\lambda_n \neq \lambda_{n-1} であれば

λnμ<λn1μ\vert \lambda_n - \mu \vert < \vert \lambda_{n-1} - \mu \vert

となって、ブロック三角行列の小行列は対角化される。 AkA_k がヘッセンベルグ行列ならば、対角化されずに残った小行列の次数はたかだか2次である。 μ\mu を原点移動 (shift of origin) という。

QR\text{QR} 法では、行列の対角要素から最も遠い左下の要素から小さくなって行く (ヘッセンベルグ行列では左下は最初から 00 であるが)。 次に 00 に近い値の場所は右下に移動する。 λn\lambda_n の近似値 μ\mu としては、ヘッセンベルグ行列 Ak1A_{k-1} の右下の要素 anna_{nn} をとる:

μ=ann\mu = a_{nn}

もっとよい近似値は、右下の4つの要素

an1n1an1nann1ann\begin{matrix} a_{n-1\, n-1} & a_{n-1\, n} \cr a_{n\, n-1} & a_{nn} \cr \end{matrix}

からなる小行列の2つの固有値が実数ならば、このうち anna_{nn} に近い方をとる。 すなわち

μ=μ1μ1annμ2ann=μ2μ1ann>μ2ann(4.121)\begin{aligned} \mu & = \mu_1 & & \vert \mu_1 - a_{nn} \vert \leqq \vert \mu_2 - a_{nn} \vert \cr & = \mu_2 & \qquad & \vert \mu_1 - a_{nn} \vert > \vert \mu_2 - a_{nn} \vert \cr \end{aligned} \tag{4.121}

ただし

μ1,2=12(an1n1+ann±D)D=(an1n1ann)2+4an1nann1\begin{aligned} \mu_{1,2} & = \frac{1}{2} \left( a_{n-1\, n-1} + a_{nn} \pm \sqrt{D} \right) \cr D & = ( a_{n-1\, n-1} - a_{nn} )^2 + 4 a_{n-1\, n}a_{n\, n-1} \cr \end{aligned}

もし実数でなければ、 μ1\mu_1μ2\mu_2 は共役複素数であるが、 μ\muμ1\mu_1μ2\mu_2 の実部をとる。

ann1a_{n\, n-1} がすでに十分 00 に近くなったら、 λn=ann\lambda_n = a_{nn} として nn 行と nn 列を除いた n1n - 1 次の行列の固有値問題に減次する。 そして、 λn1\lambda_{n-1} を求める。 このように、絶対値の小さい方の固有値から減次しながら求められて行く。

4.8.5 QR\text{QR} 法の手順

QR\text{QR} 法の手順は次のようになる。

1) 与えられた行列がヘッセンベルグ行列でないときには、 ハウスホルダー法によりヘッセンベルグ行列に変換する。 m=nと置く。2) m>0の間以下を反復する。2.1) 原点移動量 (shift) を求める。2.2) QR 分解 QkRk=Ak1μI2.3) 逆順の積 Ak=RkQk+μI2.4) Akがブロック三角行列になっていれば固有値を求め減次する。減次したときにはmを減らす。\begin{aligned} \qquad & 1) \ \text{与えられた行列がヘッセンベルグ行列でないときには、} \cr & \quad \ \text{ハウスホルダー法によりヘッセンベルグ行列に変換する。} \cr & \quad \ m = n \text{と置く。} \cr & 2) \ m > 0 \text{の間以下を反復する。} \cr & 2.1) \ \text{原点移動量 (shift) を求める。} \cr & 2.2) \ \text{QR 分解} \ Q_k R_k = A_{k-1} - \mu I \cr & 2.3) \ \text{逆順の積} \ A_k = R_k Q_k + \mu I \cr & 2.4) \ A_k \text{がブロック三角行列になっていれば固有値を求め減次する。} \cr & \qquad \text{減次したときには} m \text{を減らす。} \cr \end{aligned}

この手順の PAD を 図 4.16, 図 4.17 に示す。

[例 4.8]

次の行列の固有値を QR\text{QR} 法により求めよう。 この行列は対称行列であるから、行列の右上の要素の値の変化にも注意しよう。

(5432144321333212222111111)\begin{pmatrix} 5 & 4 & 3 & 2 & 1 \cr 4 & 4 & 3 & 2 & 1 \cr 3 & 3 & 3 & 2 & 1 \cr 2 & 2 & 2 & 2 & 1 \cr 1 & 1 & 1 & 1 & 1 \cr \end{pmatrix}

まずヘッセンベルグ行列に変換すると

(5.05.477230.00.00.05.477238.200008.124041011.0386010173.0129310170.08.124041011.022221.909871013.4355710170.00.01.909871014.700851015.681151020.00.00.05.681151023.07692101)\left( \begin{aligned} 5&.0 & -5&.47723 & 0&.0 & 0&.0 & 0&.0 \cr -5&.47723 & 8&.20000 & 8&.12404 \footnotesize{\cdot 10^{-1}} & -1&.03860 \footnotesize{\cdot 10^{-17}} & 3&.01293 \footnotesize{\cdot 10^{-17}} \cr 0&.0 & 8&.12404 \footnotesize{\cdot 10^{-1}} & 1&.02222 & 1&.90987 \footnotesize{\cdot 10^{-1}} & -3&.43557 \footnotesize{\cdot 10^{-17}} \cr 0&.0 & 0&.0 & 1&.90987 \footnotesize{\cdot 10^{-1}} & 4&.70085 \footnotesize{\cdot 10^{-1}} & -5&.68115 \footnotesize{\cdot 10^{-2}} \cr 0&.0 & 0&.0 & 0&.0 & -5&.68115 \footnotesize{\cdot 10^{-2}} & 3&.07692 \footnotesize{\cdot 10^{-1}} \cr \end{aligned} \right)

この行列を A=A0A = A_0 として QR\text{QR} 法によって固有値を求める。

m=5m = 5 である。 原点移動は μ=2.89791101\mu = 2.89791 \footnotesize{\cdot 10^{-1}} であり、三角行列 R1R_1

(7.223999.568796.159641017.8746310182.2844010170.01.292158.724121011.200781016.3237310180.00.03.040031012.288171013.569121020.00.00.07.371311024.196081020.00.00.00.02.26592102)\left( \begin{aligned} 7&.22399 & -9&.56879 & -6&.15964 \footnotesize{\cdot 10^{-1}} & 7&.87463 \footnotesize{\cdot 10^{-18}} & -2&.28440 \footnotesize{\cdot 10^{-17}} \cr 0&.0 & 1&.29215 & 8&.72412 \footnotesize{\cdot 10^{-1}} & 1&.20078 \footnotesize{\cdot 10^{-1}} & -6&.32373 \footnotesize{\cdot 10^{-18}} \cr 0&.0 & 0&.0 & 3&.04003 \footnotesize{\cdot 10^{-1}} & 2&.28817 \footnotesize{\cdot 10^{-1}} & -3&.56912 \footnotesize{\cdot 10^{-2}} \cr 0&.0 & 0&.0 & 0&.0 & 7&.37131 \footnotesize{\cdot 10^{-2}} & -4&.19608 \footnotesize{\cdot 10^{-2}} \cr 0&.0 & 0&.0 & 0&.0 & 0&.0 & -2&.26592 \footnotesize{\cdot 10^{-2}} \cr \end{aligned} \right)

直交行列 Q1Q_1

(6.520231015.895971013.708811011.908251012.308131017.581991015.070321013.189441011.641021011.984901010.06.287241016.050111013.112891013.765201010.00.06.282391014.957441015.996281010.00.00.07.707101016.37186101)\left( \begin{aligned} 6&.52023 \footnotesize{\cdot 10^{-1}} & 5&.89597 \footnotesize{\cdot 10^{-1}} & -3&.70881 \footnotesize{\cdot 10^{-1}} & 1&.90825 \footnotesize{\cdot 10^{-1}} & 2&.30813 \footnotesize{\cdot 10^{-1}} \cr -7&.58199 \footnotesize{\cdot 10^{-1}} & 5&.07032 \footnotesize{\cdot 10^{-1}} & -3&.18944 \footnotesize{\cdot 10^{-1}} & 1&.64102 \footnotesize{\cdot 10^{-1}} & 1&.98490 \footnotesize{\cdot 10^{-1}} \cr 0&.0 & 6&.28724 \footnotesize{\cdot 10^{-1}} & 6&.05011 \footnotesize{\cdot 10^{-1}} & -3&.11289 \footnotesize{\cdot 10^{-1}} & -3&.76520 \footnotesize{\cdot 10^{-1}} \cr 0&.0 & 0&.0 & 6&.28239 \footnotesize{\cdot 10^{-1}} & 4&.95744 \footnotesize{\cdot 10^{-1}} & 5&.99628 \footnotesize{\cdot 10^{-1}} \cr 0&.0 & 0&.0 & 0&.0 & -7&.70710 \footnotesize{\cdot 10^{-1}} & 6&.37186 \footnotesize{\cdot 10^{-1}} \cr \end{aligned} \right)

逆順の積によって次の A1=Q1R1+μIA_1 = Q_1 R_1 + \mu I が得られる。

(1.22550109.797051012.7859910163.0166410163.4849810169.797051011.493461.911341015.8419810174.6169210170.01.911341016.174681014.630951023.6232710170.00.04.630951023.586731011.746371020.00.00.01.746371022.75353101)\left( \begin{aligned} 1&.22550 \footnotesize{\cdot 10} & -9&.79705 \footnotesize{\cdot 10^{-1}} & -2&.78599 \footnotesize{\cdot 10^{-16}} & -3&.01664 \footnotesize{\cdot 10^{-16}} & -3&.48498 \footnotesize{\cdot 10^{-16}} \cr -9&.79705 \footnotesize{\cdot 10^{-1}} & 1&.49346 & 1&.91134 \footnotesize{\cdot 10^{-1}} & 5&.84198 \footnotesize{\cdot 10^{-17}} & 4&.61692 \footnotesize{\cdot 10^{-17}} \cr 0&.0 & 1&.91134 \footnotesize{\cdot 10^{-1}} & 6&.17468 \footnotesize{\cdot 10^{-1}} & 4&.63095 \footnotesize{\cdot 10^{-2}} & -3&.62327 \footnotesize{\cdot 10^{-17}} \cr 0&.0 & 0&.0 & 4&.63095 \footnotesize{\cdot 10^{-2}} & 3&.58673 \footnotesize{\cdot 10^{-1}} & 1&.74637 \footnotesize{\cdot 10^{-2}} \cr 0&.0 & 0&.0 & 0&.0 &1&.74637 \footnotesize{\cdot 10^{-2}} & 2&.75353 \footnotesize{\cdot 10^{-1}} \cr \end{aligned} \right)

以下、原点移動 μ\muAkA_k のみ示す。

m=5,μ=2.71840101m = 5, \mu = 2.71840 \footnotesize{\cdot 10^{-1}}

A2=(1.23427109.400601022.4704910163.3575610162.8543710169.400601021.446395.181291025.0386210179.5050410190.05.181291025.854481011.199691023.2588310170.00.01.199691023.538801016.319471050.00.00.06.319471052.71554101)A_2 = \left( \begin{aligned} 1&.23427 \footnotesize{\cdot 10} & -9&.40060 \footnotesize{\cdot 10^{-2}} & -2&.47049 \footnotesize{\cdot 10^{-16}} & -3&.35756 \footnotesize{\cdot 10^{-16}} & -2&.85437 \footnotesize{\cdot 10^{-16}} \cr -9&.40060 \footnotesize{\cdot 10^{-2}} & 1&.44639 & 5&.18129 \footnotesize{\cdot 10^{-2}} & 5&.03862 \footnotesize{\cdot 10^{-17}} & 9&.50504 \footnotesize{\cdot 10^{-19}} \cr 0&.0 & 5&.18129 \footnotesize{\cdot 10^{-2}} & 5&.85448 \footnotesize{\cdot 10^{-1}} & 1&.19969 \footnotesize{\cdot 10^{-2}} & -3&.25883 \footnotesize{\cdot 10^{-17}} \cr 0&.0 & 0&.0 & 1&.19969 \footnotesize{\cdot 10^{-2}} & 3&.53880 \footnotesize{\cdot 10^{-1}} & -6&.31947 \footnotesize{\cdot 10^{-5}} \cr 0&.0 & 0&.0 & 0&.0 & -6&.31947 \footnotesize{\cdot 10^{-5}} & 2&.71554 \footnotesize{\cdot 10^{-1}} \cr \end{aligned} \right)

m=5,μ=2.71554101m = 5, \mu = 2.71554 \footnotesize{\cdot 10^{-1}}

A3=(1.23435109.151861032.3864610163.2701910162.8568910169.151861031.448481.373501025.1673510172.6679010180.01.373501025.831391013.150141033.1443810170.00.03.150141033.532961012.1146210130.00.00.02.1143410132.71554101)A_3 = \left( \begin{aligned} 1&.23435 \footnotesize{\cdot 10} & -9&.15186 \footnotesize{\cdot 10^{-3}} & -2&.38646 \footnotesize{\cdot 10^{-16}} & -3&.27019 \footnotesize{\cdot 10^{-16}} & -2&.85689 \footnotesize{\cdot 10^{-16}} \cr -9&.15186 \footnotesize{\cdot 10^{-3}} & 1&.44848 & 1&.37350 \footnotesize{\cdot 10^{-2}} & 5&.16735 \footnotesize{\cdot 10^{-17}} & -2&.66790 \footnotesize{\cdot 10^{-18}} \cr 0&.0 & 1&.37350 \footnotesize{\cdot 10^{-2}} &5&.83139 \footnotesize{\cdot 10^{-1}} & 3&.15014 \footnotesize{\cdot 10^{-3}} & -3&.14438 \footnotesize{\cdot 10^{-17}} \cr 0&.0 & 0&.0 & 3&.15014 \footnotesize{\cdot 10^{-3}} & 3&.53296 \footnotesize{\cdot 10^{-1}} & 2&.11462 \footnotesize{\cdot 10^{-13}} \cr 0&.0 & 0&.0 & 0&.0 & 2&.11434 \footnotesize{\cdot 10^{-13}} & 2&.71554 \footnotesize{\cdot 10^{-1}} \cr \end{aligned} \right)

固有値 2.71554D12.71554D-1 が得られ、減次する。

m=4,μ=3.53253101m = 4, \mu = 3.53253 \footnotesize{\cdot 10^{-1}}

A4=(1.23435108.360171042.3702710163.2383910162.8568910168.360171041.448682.880631035.2604610172.6679010180.02.880631035.829741014.4382710103.1443810170.00.04.4382710103.532531012.1146210130.00.00.02.1143410132.71554101)A_4 = \left( \begin{aligned} 1&.23435 \footnotesize{\cdot 10} & -8&.36017 \footnotesize{\cdot 10^{-4}} & -2&.37027 \footnotesize{\cdot 10^{-16}} & -3&.23839 \footnotesize{\cdot 10^{-16}} & -2&.85689 \footnotesize{\cdot 10^{-16}} \cr -8&.36017 \footnotesize{\cdot 10^{-4}} & 1&.44868 & 2&.88063 \footnotesize{\cdot 10^{-3}} & 5&.26046 \footnotesize{\cdot 10^{-17}} & -2&.66790 \footnotesize{\cdot 10^{-18}} \cr 0&.0 & 2&.88063 \footnotesize{\cdot 10^{-3}} & 5&.82974 \footnotesize{\cdot 10^{-1}} & -4&.43827 \footnotesize{\cdot 10^{-10}} & -3&.14438 \footnotesize{\cdot 10^{-17}} \cr 0&.0 & 0&.0 & -4&.43827 \footnotesize{\cdot 10^{-10}} & 3&.53253 \footnotesize{\cdot 10^{-1}} & 2&.11462 \footnotesize{\cdot 10^{-13}} \cr 0&.0 & 0&.0 & 0&.0 & 2&.11434 \footnotesize{\cdot 10^{-13}} & 2&.71554 \footnotesize{\cdot 10^{-1}} \cr \end{aligned} \right)

m=4,μ=3.53253101m=4, \mu = 3.53253 \footnotesize{\cdot 10^{-1}}

A5=(1.23435107.637851052.3575810163.2384310162.8568910167.637851051.448696.040701045.2536210172.6679010180.06.040701045.829651011.7479110173.1443810170.00.01.6568010273.532531012.1146210130.00.00.02.1143410132.71554101)A_5 = \left( \begin{aligned} 1&.23435 \footnotesize{\cdot 10} & -7&.63785 \footnotesize{\cdot 10^{-5}} & -2&.35758 \footnotesize{\cdot 10^{-16}} & -3&.23843 \footnotesize{\cdot 10^{-16}} & -2&.85689 \footnotesize{\cdot 10^{-16}} \cr -7&.63785 \footnotesize{\cdot 10^{-5}} & 1&.44869 & 6&.04070 \footnotesize{\cdot 10^{-4}} & 5&.25362 \footnotesize{\cdot 10^{-17}} & -2&.66790 \footnotesize{\cdot 10^{-18}} \cr 0&.0 & 6&.04070 \footnotesize{\cdot 10^{-4}} & 5&.82965 \footnotesize{\cdot 10^{-1}} & -1&.74791 \footnotesize{\cdot 10^{-17}} & -3&.14438 \footnotesize{\cdot 10^{-17}} \cr 0&.0 & 0&.0 & 1&.65680 \footnotesize{\cdot 10^{-27}} & 3&.53253 \footnotesize{\cdot 10^{-1}} & 2&.11462 \footnotesize{\cdot 10^{-13}} \cr 0&.0 & 0&.0 & 0&.0 & 2&.11434 \footnotesize{\cdot 10^{-13}} & 2&.71554 \footnotesize{\cdot 10^{-1}} \cr \end{aligned} \right)

固有値 3.532531013.53253 \footnotesize{\cdot 10^{-1}} が得られ、減次する。

m=3,μ=5.82964101m = 3, \mu = 5.82964 \footnotesize{\cdot 10^{-1}}

A6=(1.23435105.622411062.3542210163.2384310162.8568910165.622411061.448691.0064310165.2536210172.6679010180.01.6018210195.829641011.7479110173.1443810170.00.01.6568010273.532531012.1146210130.00.00.02.1143410132.71554101)A_6 = \left( \begin{aligned} 1&.23435 \footnotesize{\cdot 10} & -5&.62241 \footnotesize{\cdot 10^{-6}} & -2&.35422 \footnotesize{\cdot 10^{-16}} & -3&.23843 \footnotesize{\cdot 10^{-16}} & -2&.85689 \footnotesize{\cdot 10^{-16}} \cr -5&.62241 \footnotesize{\cdot 10^{-6}} & 1&.44869 & -1&.00643 \footnotesize{\cdot 10^{-16}} & 5&.25362 \footnotesize{\cdot 10^{-17}} & -2&.66790 \footnotesize{\cdot 10^{-18}} \cr 0&.0 & -1&.60182 \footnotesize{\cdot 10^{-19}} & 5&.82964 \footnotesize{\cdot 10^{-1}} & -1&.74791 \footnotesize{\cdot 10^{-17}} & -3&.14438 \footnotesize{\cdot 10^{-17}} \cr 0&.0 & 0&.0 & 1&.65680 \footnotesize{\cdot 10^{-27}} & 3&.53253 \footnotesize{\cdot 10^{-1}} & 2&.11462 \footnotesize{\cdot 10^{-13}} \cr 0&.0 & 0&.0 & 0&.0 & 2&.11434 \footnotesize{\cdot 10^{-13}} & 2&.71554 \footnotesize{\cdot 10^{-1}} \cr \end{aligned} \right)

固有値 5.829641015.82964 \footnotesize{\cdot 10^{-1}} が得られ、減次すると、 m=2m = 2 となり、残りの2つの固有値は2行2列の小行列の固有値である。 それらは 1.44869056981.448690569812.34353752012.343537520 である。

この問題の解析解は、 n=5n = 5 として

λk=12[1cos(2k12n+1π)]k=1,2,3,,n(4.122)\lambda_k = \frac{1}{2 \left[1 - \cos \left( \displaystyle\frac{2k - 1}{2n + 1} \pi \right) \right]} \qquad k = 1, 2, 3, \cdots , n \tag{4.122}

であることが知られている (問題 4-16 参照)。 上で求めた値と比べると倍精度計算の結果は次のようになっており、誤差は丸めの誤差程度である。

固有値 (計算)誤差2.71554129341013.53253282891015.82964498291011.44869056981.2343537520101.110223024610162.220446049310162.220446049310166.661338147810163.5527136788101\begin{matrix} \text{固有値 (計算)} & \text{誤差} \cr \begin{aligned} 2&.7155412934 \footnotesize{\cdot 10^{-1}} \cr 3&.5325328289 \footnotesize{\cdot 10^{-1}} \cr 5&.8296449829 \footnotesize{\cdot 10^{-1}} \cr 1&.4486905698 \cr 1&.2343537520 \footnotesize{\cdot 10} \cr \end{aligned} & \begin{aligned} -1&.1102230246 \footnotesize{\cdot 10^{-16}} \cr 2&.2204460493 \footnotesize{\cdot 10^{-16}} \cr 2&.2204460493 \footnotesize{\cdot 10^{-16}} \cr 6&.6613381478 \footnotesize{\cdot 10^{-16}} \cr 3&.5527136788 \footnotesize{\cdot 10^{-1}} \cr \end{aligned} \end{matrix}

4.8.6 ダブル QR\text{QR}

前項の原点移動は QR\text{QR} 法の収束の加速に有効である。 しかし、一般の実非対称行列の固有値は複素数であるから、原点移動の固有値の近似値 μ\mu は複素数になり、 QR\text{QR} 分解の行列 QQRR も複素行列になり、演算量も記憶容量も増加する。 実行列の固有値問題は実数計算のうちにとどめるような原点移動法として、以下に述べるダブル QR\text{QR} 法がある。

まず、前項の原点移動を用いた QR\text{QR} 法を、複素数 μ\mu とその共役複素数 μ\mu^\ast を使って2回繰り返してみる。 (もし μ\muλn\lambda_n の近似値なら、 μ\mu^\astλn1\lambda_{n-1} の近似値である。) すなわち、

Ak1μI=QkRkQR 分解Ak=RkQk+μIAkを求めるAkμI=Qk+1Rk+1QR 分解Ak+1=Rk+1Qk+1+μIAk+1を求める(4.123)\begin{aligned} & A_{k-1} - \mu I = Q_k R_k & & \text{QR 分解} \cr & A_k = R_k Q_k + \mu I & & A_k \text{を求める} \cr & A_k - \mu^\ast I = Q_{k+1} R_{k+1} & & \text{QR 分解} \cr & A_{k+1} = R_{k+1} Q_{k+1} + \mu^\ast I & & A_{k+1} \text{を求める} \cr \end{aligned} \tag{4.123}

これらの4式から RkR_kAkA_kRk+1R_{k+1} を消去する。 まず第1式から

Rk=Qk1(Ak1μI)Rk = Q_k^{-1} (A_{k-1} - \mu I)

これを第2式に代入して

Ak=Qk1(Ak1μI)Qk+μI=Qk1Ak1QkA_k = Q_k^{-1} (A_{k-1} - \mu I) Q_k + \mu I = Q_k^{-1} A_{k-1} Q_k

第3式より

Rk+1=Qk+11(AkμI)R_{k+1} = Q_{k+1}^{-1}(A_k - \mu^\ast I)

これを第4式に代入して

Ak+1=Qk+11(AkμI)Qk+1+μI=Qk+11AkQk+1=Qk+11(Qk1Ak1Qk)Qk+1\begin{aligned} & A_{k+1} & & = Q_{k+1}^{-1} (A_k - \mu^\ast I) Q_{k+1} + \mu^\ast I = Q_{k+1}^{-1} A_k Q_{k+1} \cr & & & = Q_{k+1}^{-1} (Q_k^{-1} A_{k-1} Q_k) Q_{k+1} \cr \end{aligned} Ak+1=(QkQk+1)1Ak1QkQk+1(4.124)\therefore \quad A_{k+1} = (Q_k Q_{k+1})^{-1} A_{k-1} Q_k Q_{k+1} \tag{4.124}

また (4.123)(4.123) の4式から、 AkA_kAk+1A_{k+1} を消去する:

Qk(Qk+1Rk+1)Rk=Qk(AkμI)Rk=Qk(RkQk+μI)RkμQkRk=QkRkQkRk+μQkRkμQkRk=QkRk(QkRk+μIμI)\begin{aligned} & Q_k (Q_{k+1} R_{k+1}) R_k \cr & \qquad = Q_k (A_k - \mu^\ast I) R_k \cr & \qquad = Q_k (R_k Q_k + \mu I) R_k - \mu^\ast Q_k R_k \cr & \qquad = Q_k R_k Q_k R_k + \mu Q_k R_k - \mu^\ast Q_k R_k \cr & \qquad = Q_k R_k (Q_k R_k + \mu I - \mu^\ast I) \cr \end{aligned} (QkQk+1)(Rk+1Rk)=(Ak1μI)(Ak1μI)Bk1(μ)(4.125)\therefore \quad (Q_k Q_{k+1}) (R_{k+1} R_k) = (A_{k-1} - \mu I) (A_{k-1} - \mu^\ast I) \equiv B_{k-1}(\mu) \tag{4.125}

この (4.125)(4.125) の右辺 Bk1(μ)B_{k-1}(\mu) は実行列である:

Bk1(μ)=(Ak1)2(μ+μ)Ak1+μμI(4.126)B_{k-1}(\mu) = (A_{k-1})^2 - (\mu + \mu^\ast) A_{k-1} + \mu \mu^\ast I \tag{4.126}

(4.124)(4.124)(4.125)(4.125) が示しているのは、 QkQ_kQk+1Q_{k+1}Rk+1R_{k+1}RkR_k は複素行列かも知れないが、 QQkQk+1Q \equiv Q_k Q_{k+1} と三角行列 RRk+1RkR \equiv R_{k+1} R_k は実行列であり、

(1)(1) QQ は、 AkA_k を決めないで、 Ak1A_{k-1} からいきなり Ak+1A_{k+1} をきめる。 (だから、ダブル QR\text{QR} 法とよばれる)

Ak+1=QAk1Q(4.127)A_{k+1} = Q^\top A_{k-1} Q \tag{4.127}

(2)(2) QQRR は実行列 Bk1B_{k-1}QR\text{QR} 分解の行列である。 したがって、 QQ は実直交行列、 RR は実三角行列として求められる。

Bk1(μ)=QR(4.128)B_{k-1}(\mu) = QR \tag{4.128}

ところが、 Bk1(μ)B_{k-1}(\mu) には (Ak1)2(A_{k-1})^2 の項があり、この項を求めるだけで n3n^3 回の掛け算が必要である。 少ない演算で Ak1A_{k-1} から QQ を求められないだろうか。 それが可能なのは、 Ak1A_{k-1}Ak+1A_{k+1} がヘッセンベルグ行列のときである。 以下では、はじめにもとの行列 A=A0A = A_0 はヘッセンベルグ行列に相似変換されたものとする。 ヘッセンベルグ行列のときは、 (4.127)(4.127)QQ の第1列と Ak1A_{k-1} が与えられていれば、 QQ の残りの列と Ak+1A_{k+1} は自動的に決められるという事情がある (次の例題 4.3 参照)。 Ak1A_{k-1} はもちろん前の段階で求められたヘッセンベルグ行列である。 したがって、 QQ の第1列は、 Ak1A_{k-1} がヘッセンベルグ行列であることを使って Bk1B_{k-1} の第1列だけを求め、 (4.128)(4.128) から決める。 この第1列で 00 でないのは3つの要素だけである。 QQ の第2列以下の列は、 (4.127)(4.127) がヘッセンベルグ行列からヘッセンベルグ行列への相似変換であるという条件から決まってしまう。

直交行列 QQ としてハウスホルダー変換の積

Q=P1P2Pn1(4.129)Q = P_1 P_2 \cdots P_{n-1} \tag{4.129}

を採用する。 そして P1,P2,,Pn1P_1, P_2, \cdots, P_{n-1} を決めていこう。 このときは、 P1P_1QQ の第1列をきめ、積 P2P3Pn1P_2 P_3 \cdots P_{n-1}QQ の第1列を変えない。 しかも、 QQ の第1列を決めるときには、 Bk1(μ)B_{k-1}(\mu) の第1列だけが必要であるので、演算量は非常に少なくてすむ。


例題 4.3

H=QAQH = Q^\top A Q とする。 ここに AA は任意の与えられた行列、 QQ は直交行列、 HH は下副対角要素が 00 でないヘッセンベルグ行列である。 このとき、 QQ の第1列を与えれば、 HHQQ の残りの列は決定される。


[解]

HHQQ をベクトルによって次のように表す:

H=(h1h2h3hn)Q=(q1q2q3qn)\begin{aligned} & H = \begin{pmatrix} \bm{h}_ 1 & \bm{h}_ 2 & \bm{h}_ 3 & \cdots & \bm{h}_ n \end{pmatrix} \cr & Q = \begin{pmatrix} \bm{q}_ 1 & \bm{q}_ 2 & \bm{q}_ 3 & \cdots & \bm{q}_ n \end{pmatrix} \cr \end{aligned}

HH はヘッセンベルグ行列だから、第 jjhj\bm{h}_ j

hj=(h1jh2jhjjhj+1 j00)\bm{h}_ j = \begin{pmatrix} h_{1j} & h_{2j} & \cdots & h_{jj} & h_{j+1\ j} & 0 & \cdots & 0 \end{pmatrix}^\top

である。 また QQ は直交行列だから qiqj=δij\bm{q}_ {i}^\top \bm{q}_ {j} = \delta_{ij} 。 以下、帰納法により証明する。

仮定により、 AAq1\bm{q}_ 1 が与えられている。 QHQHAQAQ の第1列を等しくおけば

h11q1+h21q2=Aq1h_{11} \bm{q}_ 1 + h_{21} \bm{q}_ 2 = A \bm{q}_ 1

これから、

h11=qiAq1,h21=Aq1h11q10(4.130)h_{11} = \bm{q}_ i^\top A \bm{q}_ 1 , \qquad h_{21} = \vert A \bm{q}_ 1 - h_{11} \bm{q}_ 1 \vert \neq 0 \tag{4.130}

h1\bm{h}_ 1 が決まり、

q2=(Aq1h11q1)/h21(4.131)\bm{q}_ 2 = (A \bm{q}_ 1 - h_{11} \bm{q}_ 1) / h_{21} \tag{4.131}

q2\bm{q}_ 2 が決まる。

いま、 j<nj < n として、 q1,q2,,qj\bm{q}_ 1, \bm{q}_ 2, \cdots, \bm{q}_ jh1,h2,,hj1\bm{h}_ 1, \bm{h}_ 2, \cdots, \bm{h}_ {j-1} が決まっていると仮定すると、 qj+1\bm{q}_ {j+1}hj\bm{h}_ j は次のようにして決まる。 AQAQQHQH の第 jj 列を等しくおくと

Aqj=Qhj=i=1j+1hijqiA \bm{q}_ j = Q \bm{h}_ j = \sum_{i=1}^{j+1} h_{ij} \bm{q}_ i

これから、 hj\bm{h}_ j

hij=qiAqj(i=1,2,,j)hj+1 j=Aqji=1jhijqi\begin{alignat*}{2} & h_{ij} & & = \bm{q}_ i^\top A \bm{q}_ j \qquad (i = 1, 2, \cdots, j) \tag{4.132} \cr & h_{j+1\ j} & & = \left\vert A \bm{q}_ j - \sum_{i=1}^j h_{ij} \bm{q}_ i \right\vert \tag{4.133} \cr \end{alignat*}

ときまり、 qj+1\bm{q}_ {j+1}

qj+1=(Aqji=1jhijqi)/hj+1 j(4.134)\bm{q}_ {j+1} = \left( A \bm{q}_ j - \sum{i=1}^j h_{ij} \bm{q}_ i \right) / h_{j+1\ j} \tag{4.134}

と決まる (仮定により hj+1 j0h_{j+1\ j} \neq 0 )。 最後に j=n1j = n - 1 とおき、 (4.134)(4.134) から qn\bm{q}_ n が決まれば、 (4.132)(4.132) から hnh_n が決まる。


まず、 P1P_1(4.128)(4.128) から決めよう。 Ak1A_{k-1} がヘッセンベルグ行列ならば、 Bk1(μ)B_{k-1}(\mu) は対角要素の4つ下から以下は 00 である。 Ak1A_{k-1} の要素を aija_{ij}Bk1(μ)B_{k-1}(\mu) の要素を bijb_{ij} とすれば第1列は

b11=(a11μ)(a11μ)+a12a21=a112(μ+μ)a11+μμ+a12a21b21=a21( a11+a22(μ+μ) )b31=a32a21(4.135)\begin{aligned} b_{11} & = (a_{11} - \mu)(a_{11} - \mu^\ast) + a_{12} a_{21} \cr & = a_{11}^2 - (\mu + \mu^\ast) a_{11} + \mu \mu^\ast + a_{12} a_{21} \cr b_{21} & = a_{21} (\ a_{11} + a_{22} - (\mu + \mu^\ast) \ ) \cr b_{31} & = a_{32} a_{21} \cr \end{aligned} \tag{4.135}

その他の第1列の要素は 00 である。 一方、三角行列 RR の要素を rijr_{ij} と書くと、三角行列 RR の第1列は r110r_{11} \neq 0 で、他の第1列の成分は ri1=0(i>1)r_{i1} = 0 (i > 1) である。 ハウスホルダー変換 P1P_1 は、 Bk1(μ)B_{k-1}(\mu) の第1列を RR の第1列に変換するように決める:

P1(b11b21b3100)=(r1100)P_1 \begin{pmatrix} b_{11} & b_{21} & b_{31} & 0 & \cdots & 0 \end{pmatrix}^\top = \begin{pmatrix} r_{11} & 0 & \cdots & 0 \end{pmatrix}^\top

ハウスホルダー変換 P1P_1 はベクトルの大きさを変えないから

r11=b112+b212+b312(4.136)r_{11} = \sqrt{b_{11}^2 + b_{21}^2 + b_{31}^2} \tag{4.136}

である。 このようなハウスホルダー変換は 4.5 節より

P1=I2cwww=(b11+sign(b11)r11b21b3100)c=1/ww\begin{align*} P_1 = & I - 2c \bm{ww}^\top \tag{4.137} \cr & \bm{w}^\top = \begin{pmatrix} b_{11} + \text{sign} (b_{11})r_{11} & b_{21} & b_{31} & 0 & \cdots & 0 \end{pmatrix} \cr & c = 1 / \bm{w}^\top \bm{w} \cr \end{align*}

で与えられる。 このように P1P_1 は、 (4.128)(4.128)QR\text{QR} 分解を根拠にして決めた。 この P1P_1P1Ak1P1P_1 A_{k-1} P_1 を示す。

P1P1Ak1P1(01111011)(0)\begin{matrix} P_1 & P_1 A_{k-1} P_1 \cr \begin{pmatrix} \ast & \ast & \ast \cr \ast & \ast & \ast & & & \large{0} \cr \ast & \ast & \ast \cr & & & 1 \cr & & & & 1 \cr & & & & & 1 \cr & & & & & & 1 \cr & & \large{0} & & & & & 1 \cr & & & & & & & & 1 \cr \end{pmatrix} & \begin{pmatrix} \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr \colorbox{#7E7080}{\ast} & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr \colorbox{#7E7080}{\ast} & \colorbox{#7E7080}{\ast} & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr & & & \ast & \ast & \ast & \ast & \ast & \ast \cr & & & & \ast & \ast & \ast & \ast & \ast \cr & & & & & \ast & \ast & \ast & \ast \cr & & \large{0} & & & & \ast & \ast & \ast \cr & & & & & & & \ast & \ast \cr \end{pmatrix} \end{matrix}

次に、 P2P_2 を決めよう。 (4.137)(4.137)P1P_1 は左上の3行3列と残りの対角要素だけ 00 でない行列である。 P1P_1 によって Ak1A_{k-1}P1Ak1P1P_1 A_{k-1} P_1 となったが、これは第1列と第2列の副対角要素の下に 00 でない要素が現れ、ヘッセンベルグ形をこわしてしまっている。 P2P_2 はこの余計な 00 でない要素を 00 にするように決める。 P1Ak1P1P_1 A_{k-1} P_1 の要素をあらためて bijb_{ij} と書けば、ハウスホルダー変換 P2P_2w\bm{w} として次のものを用いればよい。

w=(0b21+sign(b21)r21b31b4100)r21=b212+b312+b412(4.138)\begin{aligned} & \bm{w}^\top = \begin{pmatrix} 0 & b_{21} + sign(b_{21}) r_{21} & b_{31} & b_{41} & 0 & \cdots & 0 \end{pmatrix} \cr & r_{21} = \sqrt{b_{21}^2 + b_{31}^2 + b_{41}^2} \end{aligned} \tag{4.138}

この w\bm{w} の第1成分は 00 だから、 P1P_1 の第1列と P1P2P_1 P_2 の第1列とは同じである。

P2P2P1Ak1P1P2(10111011)(0)\begin{matrix} P_2 & P_2 P_1 A_{k-1} P_1 P_2 \cr \begin{pmatrix} 1 \cr & \ast & \ast & \ast & & & & \large{0} \cr & \ast & \ast & \ast \cr & \ast & \ast & \ast \cr & & & & 1 \cr & & & & & 1 \cr & & & & & & 1 \cr & \large{0} & & & & & & 1 \cr & & & & & & & & 1 \cr \end{pmatrix} & \begin{pmatrix} \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr & \colorbox{#7E7080}{\ast} & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr & \colorbox{#7E7080}{\ast} & \colorbox{#7E7080}{\ast} & \ast & \ast & \ast & \ast & \ast & \ast \cr & & & & \ast & \ast & \ast & \ast & \ast \cr & & & & & \ast & \ast & \ast & \ast \cr & & \large{0} & & & & \ast & \ast & \ast \cr & & & & & & & \ast & \ast \cr \end{pmatrix} \end{matrix}

次に、 P3P_3 を決める。 P2P1Ak1P1P2P_2 P_1 A_{k-1} P_1 P_2 の要素をあらためて bijb_{ij} と書けば、 P3P_3 は第2列のヘッセンベルグ形をこわしている余計な要素を 00 にするように決める。 そのときの w\bm{w}

w=(00b32+sign(b32)r32b42b5200)r32=b322+b422+b522(4.139)\begin{aligned} & \bm{w}^\top = \begin{pmatrix} 0 & 0 & b_{32} + \text{sign}(b_{32}) r_{32} & b_{42} & b_{52} & 0 & \cdots & 0 \end{pmatrix} \cr & r_{32} = \sqrt{b_{32}^2 + b_{42}^2 + b_{52}^2} \cr \end{aligned} \tag{4.139}

w\bm{w} の第1, 2成分は 00 だから、 P1P2P3P_1 P_2 P_3P1P2P_1 P_2 の第1, 2列は同じである。

P3P3P2P1Ak1P1P2P3(11011011)(0)\begin{matrix} P_3 & P_3 P_2 P_1 A_{k-1} P_1 P_2 P_3 \cr \begin{pmatrix} 1 \cr & 1 & & & & & \large{0} \cr & & \ast & \ast & \ast \cr & & \ast & \ast & \ast \cr & & \ast & \ast & \ast \cr & & & & & 1 \cr & & & & & & 1 \cr & & \large{0} & & & & & 1 \cr & & & & & & & & 1 \cr \end{pmatrix} & \begin{pmatrix} \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr & & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr & & \colorbox{#7E7080}{\ast} & \ast & \ast & \ast & \ast & \ast & \ast \cr & & \colorbox{#7E7080}{\ast} & \colorbox{#7E7080}{\ast} & \ast & \ast & \ast & \ast & \ast \cr & & & & & \ast & \ast & \ast & \ast \cr & & \large{0} & & & & \ast & \ast & \ast \cr & & & & & & & \ast & \ast \cr \end{pmatrix} \cr \end{matrix}

一般に PjP_j は第 jjj+1j + 1j+2j + 2 成分が 00 でない w\bm{w} によってつくる:

w=(00bj j1+sign(bj j1)rj j1bj+1 j1bj+2 j100)rj j1=bj j12+bj+1 j12+bj+2 j12(4.140)\begin{aligned} & \bm{w}^\top = \begin{pmatrix} 0 & \cdots & 0 & b_{j\ j-1} + \text{sign}(b_{j\ j-1}) r_{j\ j-1} & b_{j+1\ j-1} b_{j+2\ j-1} & 0 & \cdots & 0 \end{pmatrix} \cr & r_{j\ j-1} =\sqrt{b_{j\ j-1}^2 + b_{j+1\ j-1}^2 + b_{j+2\ j-1}^2} \end{aligned} \tag{4.140}

最終の、 j=n1j = n - 1 のときの変換 Pn1P_{n-1} では、 bn+1 n2=0b_{n+1\ n-2} = 0 と置く。 かくして、 Pn1P_{n-1} および Ak+1=Pn1P2P1Ak1P1P2Pn1A_{k+1} = P_{n-1} \cdots P_2 P_1 A_{k-1} P_1 P_2 \cdots P_{n-1} は次のようになる。 Ak+1A_{k+1} はヘッセンベルグ行列になっている。

Pn1Ak+1(110111110)(0)\begin{matrix} P_{n-1} & A_{k+1} \cr \begin{pmatrix} 1 \cr & 1 & & & & & & \large{0} \cr & & 1 \cr & & & 1 \cr & & & & 1 \cr & & & & & 1 \cr & & & & & & 1 \cr & \large{0} & & & & & & \ast & \ast \cr & & & & & & & \ast & \ast \cr \end{pmatrix} & \begin{pmatrix} \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr & \ast & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr & & \ast & \ast & \ast & \ast & \ast & \ast & \ast \cr & & & \ast & \ast & \ast & \ast & \ast & \ast \cr & & & & \ast & \ast & \ast & \ast & \ast \cr & & & & & \ast & \ast & \ast & \ast \cr & & \large{0} & & & & \ast & \ast & \ast \cr & & & & & & & \ast & \ast \cr \end{pmatrix} \end{matrix}

実際の計算では次のようにする (4.8 節図 4.15 と問題 4-6 も参照)。

Cj1=Pj1Pj2P1Ak1P1P2Pj1C_{j-1} = P_{j-1} P_{j-2} \cdots P_1 A_{k-1} P_1 P_2 \cdots P_{j-1}

と置く。 また補助的な作業用ベクトル p\bm{p}p\bm{p}^\astq\bm{q}q\bm{q}^\ast

p2c Cj1w,p2c Cj1wqpc (pw)w,qpc (pw)w(4.141)\begin{aligned} & \bm{p} \equiv 2c\ C_{j-1} \bm{w}, & & \bm{p}^\ast \equiv 2c\ C_{j-1}^\top \bm{w} \cr & \bm{q} \equiv \bm{p} - c\ (\bm{p}^\top \bm{w}) \bm{w}, & & \bm{q}^\ast \equiv \bm{p}^\ast - c\ (\bm{p}^{\ast\top} \bm{w}) \bm{w} \cr \end{aligned} \tag{4.141}

とつくれば ( wCj1w=wCj1w\bm{w}^\top C_{j-1} \bm{w} = \bm{w}^\top C_{j-1}^\top \bm{w} より pw=pw\bm{p}^\top \bm{w} = \bm{p}^{\ast\top} \bm{w} に注意)

Cj=PjCj1Pj=[ I2cww ]Cj1[ I2cww ]=Cj1qwwq(4.142)\begin{aligned} C_j & = P_j C_{j-1} P_j \cr & = [\ I - 2c \bm{ww}^\top\ ] C_{j-1} [\ I - 2c \bm{ww}^\top \ ] \cr & = C_{j-1} - q \bm{w}^\top - \bm{wq}^{\ast\top} \cr \end{aligned} \tag{4.142}

なお、プログラムをつくるときには、 w\bm{w} は3成分のみ非ゼロであることを念頭にいれ、 00 との乗算や加減算をしないように考えることが必要である。

4.8.7 ダブル QR\text{QR} 法の収束性

ダブル QR\text{QR} 法における行列の変化経過を以上に示した。 ただし、副対角要素は 00 でないとしている。 しかし QR\text{QR} 法と同様に、 A0=A,A2,A4,A_0 = A, A_2, A_4, \cdots の列は、ブロック三角行列に ”本質的に収束” し、副対角要素のあるものは右下の方から 00 に収束する。 もし、 an n1a_{n\ n-1}00 に近くなったら、 λn=ann\lambda_{n} = a_{nn} とし、第 nn 行と第 nn 列を除いて、 n1n - 1 次の行列に減次する。 もし an2 n1a_{n-2\ n-1}00 に近づいたら、 an1 n1a_{n-1\ n-1}an1 na_{n-1\ n}ann1a_{nn-1}anna_{nn} でつくられる2行2列の小行列の固有値を2次方程式を解いて求め、 λn\lambda_{n} および \lambda_{n-1} とし、n2n - 2 次の行列に減次する。 減次とともに行列は小型になるため以後収束は次第に速くなり、行列の右下から左上へ λ\vert \lambda \vert の小さい方から順に固有値が求められて行く。 (このブロック三角行列への収束性については [例 4.9]の実例を参照せよ。)

4.8.8 ダブル QR\text{QR} 法の原点移動量

ダブル QR\text{QR} 法の手順は、 μ\muμ\mu^\ast の複素共役数の 2 重の原点移動 (4.135)(4.135) から導かれたものであるが、原点移動は実数 (μ+μ)(\mu + \mu^\ast)μμ\mu \mu^\ast の組合せのみ現れる。 そこで、 μ\muμ\mu^\ast の代わりに、2つの数 μ1\mu_1μ2\mu_2 を用い、 (μ+μ)(\mu + \mu^\ast)μμ\mu \mu^\ast の代わりに、 (μ1+μ2)(\mu_1 + \mu_2)μ1μ2\mu_1 \mu_2 を用いる。 μ1\mu_1μ2\mu_2 は2つの実数か、共役複素数の組にする。 μ1\mu_1μ2\mu_2 の選択の目安には、 an1 n1a_{n-1\ n-1}an1 na_{n-1\ n}an n1a_{n\ n-1}anna_{nn} でつくられる2行2列の小行列の (複素) 固有値 p1p_1p2p_2 を使う。 Ak+1A_{k+1} を求めるときのこの固有値 (すなわち、 Ak1A_{k-1} の小行列の固有値) を p1(k+1)p_1^{(k+1)}p2(k+1)p_2^{(k+1)} とする。 最初は μ1=μ2=0\mu_1 = \mu_2 = 0 (原点移動なし ) とする。 以後 p1(k+1)p_1^{(k+1)}p2(k+1)p_2^{(k+1)}p1(k1)p_1^{(k-1)}p2(k1)p_2^{(k-1)} の近い方の値からつくった2つの実数の組か、共役複素数の組をとる。 より具体的にいえば

1)p1(k+1)p1(k1)12p1(k+1)p2(k+1)p2(k1)12p2(k+1)}ならばμ1=p1(k+1),μ2=p2(k+1).2)p1(k+1)p1(k1)>12p1(k+1)p2(k+1)p2(k1)>12p2(k+1)}ならばμ1=p1(k1),μ2=p2(k1).3)p1(k+1)p1(k1)12p1(k+1)p2(k+1)p2(k1)>12p2(k+1)}ならばμ1=μ2=Re[p1(k+1)].4)p1(k+1)p1(k1)>12p1(k+1)p2(k+1)p2(k1)12p2(k+1)}ならばμ1=μ2=Re[p2(k+1)].(4.143)\begin{array}{llll} 1) & \begin{rcases} \vert p_1^{(k+1)} - p_1^{(k-1)} \vert \leqq \frac{1}{2} \vert p_1^{(k+1)} \vert \cr \vert p_2^{(k+1)} - p_2^{(k-1)} \vert \leqq \frac{1}{2} \vert p_2^{(k+1)} \vert \cr \end{rcases} & \text{ならば} & \mu_1 = p_1^{(k+1)}, \quad \mu_2 = p_2^{(k+1)} . \cr \cr 2) & \begin{rcases} \vert p_1^{(k+1)} - p_1^{(k-1)} \vert > \frac{1}{2} \vert p_1^{(k+1)} \vert \cr \vert p_2^{(k+1)} - p_2^{(k-1)} \vert > \frac{1}{2} \vert p_2^{(k+1)} \vert \cr \end{rcases} & \text{ならば} & \mu_1 = p_1^{(k-1)}, \quad \mu_2 = p_2^{(k-1)} . \cr \cr 3) & \begin{rcases} \vert p_1^{(k+1)} - p_1^{(k-1)} \vert \leqq \frac{1}{2} \vert p_1^{(k+1)} \vert \cr \vert p_2^{(k+1)} - p_2^{(k-1)} \vert > \frac{1}{2} \vert p_2^{(k+1)} \vert \cr \end{rcases} & \text{ならば} & \mu_1 = \mu_2 = \text{Re}[p_1^{(k+1)}]. \cr \cr 4) & \begin{rcases} \vert p_1^{(k+1)} - p_1^{(k-1)} \vert > \frac{1}{2} \vert p_1^{(k+1)} \vert \cr \vert p_2^{(k+1)} - p_2^{(k-1)} \vert \leqq \frac{1}{2} \vert p_2^{(k+1)} \vert \cr \end{rcases} & \text{ならば} & \mu_1 = \mu_2 = \text{Re}[p_2^{(k+1)}]. \cr \cr \end{array} \tag{4.143}

4.8.9 ダブル QR\text{QR} 法の手順

これですべての道具が揃った。 ダブル QR\text{QR} 法の手順は、次のようにまとめられる。

1) 固有値を求めたい行列をヘッセンベルグ行列に変換する。行列の次数を n とする。 m=nと置く。2) m=0 まで反復する。 2.1) (4.143) より、原点移動量の μ1+μ2 と μ1μ2 を計算。 2.2) C1=P1Ak1P1(4.137) の w を用いて、 (4.142) で計算 2.3) j=2,3,,m1 の順に、 Cj=PjCj1Pj(4.140) の w を用いて、 (4.142) で計算Ak+1=Cm1 となる。 2.4) 収束判定 am m1<ε なら λm=amm として、 m を 1 減らす (減次)am1 m2<ε なら λm 、 λm1 を求めて、 m を 2 減らす (減次)\begin{aligned} & 1)\ \text{固有値を求めたい行列をヘッセンベルグ行列に変換する。} \cr & \quad \text{行列の次数を } n \text{ とする。 } m = n \text{と置く。} \cr & 2)\ m = 0 \text{ まで反復する。} \cr & \ 2.1)\ (4.143) \text{ より、原点移動量の } \mu_1 + \mu_2 \text{ と } \mu_1 \mu_2 \text{ を計算。} \cr & \ 2.2)\ C_1 = P_1 A_{k-1} P_1 \cr & \qquad (4.137) \text{ の } \bm{w} \text{ を用いて、 } (4.142) \text{ で計算} \cr & \ 2.3)\ j = 2, 3, \cdots , m - 1 \text{ の順に、 } C_j = Pj C_{j-1} P_j \cr & \qquad (4.140) \text{ の } \bm{w} \text{ を用いて、 } (4.142) \text{ で計算} \cr & \qquad A_{k+1} = C_{m-1} \text{ となる。} \cr & \ 2.4)\ \text{収束判定 } \vert a_{m\ m-1} \vert < \varepsilon \text{ なら } \lambda_m = a_{mm} \text{ として、 } m \text{ を 1 減らす (減次)} \cr & \qquad \vert a_{m-1\ m-2} \vert < \varepsilon \text{ なら } \lambda_m \text{ 、 } \lambda_{m-1} \text{ を求めて、 } m \text{ を 2 減らす (減次)} \cr \end{aligned}

収束判定用 ε\varepsilon は、例えば

ε=εMA(4.144)\varepsilon = \varepsilon_M \Vert A \Vert \tag{4.144}

とする。 ここに εM\varepsilon_M はマシン・エプシロン、 A\Vert A \Vert は行列 AA のノルムである。 ノルムとしては最大ノルムが求め易いであろう。 もっと手軽には、対角要素と比較する方法もある。 例えば、許容絶対誤差 εA\varepsilon_A と許容相対誤差 εR\varepsilon_R を用いて

ε=εA+εR(am1 m1+amm)(4.145)\varepsilon = \varepsilon_A + \varepsilon_R ( \vert a_{m-1\ m-1} \vert + \vert a_{mm} \vert ) \tag{4.145}

あるいは

ε=εA+εRmin{am1 m1,amm}(4.146)\varepsilon = \varepsilon_A + \varepsilon_R \min \{ \vert a_{m-1\ m-1} \vert , \vert a_{mm} \vert \} \tag{4.146}

ダブル QR\text{QR} 法により固有値を求める手順の PAD を 図 4.18, 図 4.19, 図 4.20 に示す。

もし固有ベクトルも求めたいときには、最初のヘッセンベルグ行列化の相似変換とダブル QR\text{QR} 法の相似変換の行列を保存しておくことが必要である。 ダブル QR\text{QR} 法は、非対称実行列の固有値問題の最も強力な解法の一つである。

[例 4.9]

次のヘッセンベルグ行列の固有値を求める。

A=(5251103202230012)A = \begin{pmatrix} 5 & -2 & -5 & -1 \cr 1 & 0 & -3 & 2 \cr 0 & 2 & 2 & -3 \cr 0 & 0 & 1 & -2 \cr \end{pmatrix}

m=4, p1=1, p2=1, μ1+μ2=0, μ1μ2=0m = 4,\ p_1 = -1,\ p_2 = 1,\ \mu_1 + \mu_2 = 0,\ \mu_1 \mu_2 = 0

P1P_1 によって、 P1A0P1P_1 A_0 P_1

(4.118282.764485.728608.043341011.533051014.303051011.881672.193512.434781012.182332.451422.922608.466681029.080121039.963681012.0)\left( \begin{aligned} 4&.11828 & 2&.76448 & 5&.72860 & 8&.04334\footnotesize{\cdot 10^{-1}} \cr 1&.53305\footnotesize{\cdot 10^{-1}} & 4&.30305\footnotesize{\cdot 10^{-1}} & -1&.88167 & 2&.19351 \cr -2&.43478\footnotesize{\cdot 10^{-1}} & 2&.18233 & 2&.45142 & -2&.92260 \cr -8&.46668\footnotesize{\cdot 10^{-2}} & -9&.08012\footnotesize{\cdot 10^{-3}} & 9&.96368\footnotesize{\cdot 10^{-1}} & -2&.0 \cr \end{aligned} \right)

P2P_2 によって、 P2P1A0P1P2P_2 P_1 A_0 P_1 P_2

(4.118283.464515.352536.735611012.999211016.872051013.696203.897380.09.257691011.050499.043371010.09.024341022.780851028.55970101)\left( \begin{aligned} 4&.11828 & 3&.46451 & 5&.35253 & 6&.73561\footnotesize{\cdot 10^{-1}} \cr -2&.99921\footnotesize{\cdot 10^{-1}} & 6&.87205\footnotesize{\cdot 10^{-1}} & 3&.69620 & -3&.89738 \cr 0&.0 & -9&.25769\footnotesize{\cdot 10^{-1}} & 1&.05049 & 9&.04337\footnotesize{\cdot 10^{-1}} \cr 0&.0 & -9&.02434\footnotesize{\cdot 10^{-2}} & -2&.78085\footnotesize{\cdot 10^{-2}} & -8&.55970\footnotesize{\cdot 10^{-1}} \cr \end{aligned} \right)

P3P_3 によって、 P3P2P1A0P1P2P3=A2P_3 P_2 P_1 A_0 P_1 P_2 P_3 = A_2 は、

A2=(4.118283.464515.392631.510831012.999211016.872051013.300644.237600.09.301571011.117187.119951010.00.02.201501019.22664101)A_2 = \left( \begin{aligned} 4&.11828 & 3&.46451 & -5&.39263 & 1&.51083\footnotesize{\cdot 10^{-1}} \cr -2&.99921\footnotesize{\cdot 10^{-1}} & 6&.87205\footnotesize{\cdot 10^{-1}} & -3&.30064 & -4&.23760 \cr 0&.0 & 9&.30157\footnotesize{\cdot 10^{-1}} & 1&.11718 & -7&.11995\footnotesize{\cdot 10^{-1}} \cr 0&.0 & 0&.0 & 2&.20150\footnotesize{\cdot 10^{-1}} & -9&.22664\footnotesize{\cdot 10^{-1}} \cr \end{aligned} \right)

以下、 A4, A6, A8, A_4,\ A_6,\ A_8,\ \cdots と、m, p1, p2, μ1+μ2, μ1μ2m,\ p_1,\ p_2,\ \mu_1 + \mu_2,\ \mu_1 \mu_2 を示す。

m=4, p1=8.42686101, p2=1.03720,m = 4,\ p_1 = -8.42686\footnotesize{\cdot 10^{-1}}\normalsize ,\ p_2 = 1.03720,
 μ1+μ2=1.94516101, μ1μ2=8.74036101\ \mu_1 + \mu_2=1.94516\footnotesize{\cdot 10^{-1}}\normalsize ,\ \mu_1\mu_2 = -8.74036\footnotesize{\cdot 10^{-1}}

A4=(3.881025.506572.832499.816611018.300631022.296983.418943.171367.9790510181.656981.81159101413879.5248910190.01.060221029.96836101)A_4 = \left( \begin{aligned} -3&.88102 & 5&.50657 & -2&.83249 & -9&.81661\footnotesize{\cdot 10^{-1}} \cr -8&.30063\footnotesize{\cdot 10^{-2}} & 2&.29698 & -3&.41894 & 3&.17136 \cr -7&.97905\footnotesize{\cdot 10^{-18}} & 1&.65698 & -1&.81159\footnotesize{\cdot 10^{-1}} & 4&1387 \cr -9&.52489\footnotesize{\cdot 10^{-19}} & 0&.0 & 1&.06022\footnotesize{\cdot 10^{-2}} & -9&.96836\footnotesize{\cdot 10^{-1}} \cr \end{aligned} \right)

m=4, p1=1.02709, p2=1.50905101,m = 4,\ p_1 = -1.02709,\ p_2 = -1.50905\footnotesize{\cdot 10^{-1}},
μ1+μ2=2.05418, μ1μ2=1.05491\mu_1 + \mu_2 = -2.05418,\ \mu_1\mu_2 = 1.05491

A6=(4.019017.361651016.172088.555801012.762801021.976231013.265003.830890.01.681242.178621.237050.00.09.366181071.0)A_6 = \left( \begin{aligned} 4&.01901 & 7&.36165\footnotesize{\cdot 10^{-1}} & -6&.17208 & 8&.55580\footnotesize{\cdot 10^{-1}} \cr 2&.76280\footnotesize{\cdot 10^{-2}} & -1&.97623\footnotesize{\cdot 10^{-1}} & -3&.26500 & -3&.83089 \cr 0&.0 & 1&.68124 & 2&.17862 & 1&.23705 \cr 0&.0 & 0&.0 & -9&.36618\footnotesize{\cdot 10^{-7}} & -1&.0 \cr \end{aligned} \right)

m=4, p1=1.0, p2=2.17862,m = 4,\ p_1 = -1.0,\ p_2 = 2.17862,
μ1+μ2=2.0, μ1μ2=1.0\mu_1 + \mu_2 = -2.0,\ \mu_1 \mu_2 = 1.0

A8=(4.012315.456843.020398.334011019.026991032.113303.333013.234558.1569310191.572441.256141012.404411.9154810250.03.1474510201.0)A_8 = \left( \begin{aligned} 4&.01231 & 5&.45684 & -3&.02039 & -8&.33401\footnotesize{\cdot 10^{-1}} \cr -9&.02699\footnotesize{\cdot 10^{-3}} & 2&.11330 & -3&.33301 & 3&.23455 \cr -8&.15693\footnotesize{\cdot 10^{-19}} & 1&.57244 & -1&.25614\footnotesize{\cdot 10^{-1}} & 2&.40441 \cr 1&.91548\footnotesize{\cdot 10^{-25}} & 0&.0 & -3&.14745\footnotesize{\cdot 10^{-20}} & \underline{-1}&\underline{.0} \cr \end{aligned} \right)

固有値 1.0-1.0 が得られ、減次する。

m=3, p1=9.938441011.99694i, p2=9.93844101+1.99694i,m = 3,\ p_1 = 9.93844\footnotesize{\cdot 10^{-1}}\normalsize - 1.99694i,\ p_2 = 9.93844\footnotesize{\cdot 10^{-1}}\normalsize + 1.99694i,
μ1+μ2=0, μ1μ2=0\mu_1 + \mu_2 = 0,\ \mu_1\mu_2 = 0

A10=(3.996184.153994.648498.334011011.818571033.716151011.171983.234551.9672310193.748691.632202.404411.9154810250.03.1474510201.0)A_{10} = \left( \begin{aligned} 3&.99618 & 4&.15399 & -4&.64849 & -8&.33401\footnotesize{\cdot 10^{-1}} \cr 1&.81857\footnotesize{\cdot 10^{-3}} & 3&.71615\footnotesize{\cdot 10^{-1}} & 1&.17198 & 3&.23455 \cr 1&.96723\footnotesize{\cdot 10^{-19}} & -3&.74869 & 1&.63220 & 2&.40441 \cr 1&.91548\footnotesize{\cdot 10^{-25}} & 0&.0 & -3&.14745\footnotesize{\cdot 10^{-20}} & \underline{-1}&\underline{.0} \cr \end{aligned} \right)

m=3, p1=1.001911.99903i, p2=1.00191+1.99903i,m = 3,\ p_1 = 1.00191 - 1.99903i,\ p_2 = 1.00191 + 1.99903i,
μ1+μ2=2.00382, μ1μ2=4.99993\mu_1 + \mu_2 = 2.00382,\ \mu_1\mu_2 = 4.99993

A12=(4.05.048573.656128.334011012.018821061.879073.590893.234550.01.329131.209241012.404411.9154810250.03.1474510201.0)A_{12} = \left( \begin{aligned} 4&.0 & 5&.04857 & -3&.65612 & -8&.33401\footnotesize{\cdot 10^{-1}} \cr -2&.01882\footnotesize{\cdot 10^{-6}} & 1&.87907 & -3&.59089 & 3&.23455 \cr 0&.0 & 1&.32913 & 1&.20924\footnotesize{\cdot 10^{-1}} & 2&.40441 \cr 1&.91548\footnotesize{\cdot 10^{-25}} & 0&.0 & -3&.14745\footnotesize{\cdot 10^{-20}} & \underline{-1}&\underline{.0} \cr \end{aligned} \right)

m=3, p1=9.99999D012.0i, p2=9.99999101+2.0i,m = 3,\ p_1 = 9.99999D - 01 - 2.0i,\ p_2 = 9.99999\footnotesize{\cdot 10^{-1}}\normalsize + 2.0i,
μ1+μ2=2.0, μ1μ2=4.99999\mu_1 + \mu_2 = 2.0,\ \mu_1\mu_2 = 4.99999

A14=(4.05.366693.170808.334011015.1470210131.228161.045943.234550.03.874097.718381012.404411.9154810250.03.1474510201.0)A_{14} = \left( \begin{aligned} 4&.0 & 5&.36669 & -3&.17080 & -8&.33401\footnotesize{\cdot 10^{-1}} \cr 5&.14702\footnotesize{\cdot 10^{-13}} & 1&.22816 & 1&.04594 & 3&.23455 \cr 0&.0 & -3&.87409 & 7&.71838\footnotesize{\cdot 10^{-1}} & 2&.40441 \cr 1&.91548\footnotesize{\cdot 10^{-25}} & 0&.0 & -3&.14745\footnotesize{\cdot 10^{-20}} & \underline{-1}&\underline{.0} \cr \end{aligned} \right)

2行2列の小行列の固有値 1.0±2.0i1.0 \pm 2.0 i が得られ、減次して m=1m = 1 となり、固有値 4.04.0 が得られる。 こうして、固有値は、絶対値の小さい順に 1.0,1.0+2.0 i,1.02.0 i,4.0\begin{matrix} -1.0, & 1.0 + 2.0\ i, & 1.0 - 2.0\ i, & 4.0 \end{matrix}

の4つである。 また、相似変換行列 QQ

Q=(9.786681012.016921017.364941033.840481021.595651017.521591015.964051012.304291011.276521016.209801017.579511011.536191012.127541028.922911022.641151019.60119101)Q = \left( \begin{aligned} -9&.78668\footnotesize{\cdot 10^{-1}} & -2&.01692\footnotesize{\cdot 10^{-1}} & 7&.36494\footnotesize{\cdot 10^{-3}} & -3&.84048\footnotesize{\cdot 10^{-2}} \cr -1&.59565\footnotesize{\cdot 10^{-1}} & 7&.52159\footnotesize{\cdot 10^{-1}} & 5&.96405\footnotesize{\cdot 10^{-1}} & 2&.30429\footnotesize{\cdot 10^{-1}} \cr -1&.27652\footnotesize{\cdot 10^{-1}} & 6&.20980\footnotesize{\cdot 10^{-1}} & -7&.57951\footnotesize{\cdot 10^{-1}} & -1&.53619\footnotesize{\cdot 10^{-1}} \cr -2&.12754\footnotesize{\cdot 10^{-2}} & -8&.92291\footnotesize{\cdot 10^{-2}} & -2&.64115\footnotesize{\cdot 10^{-1}} & 9&.60119\footnotesize{\cdot 10^{-1}} \cr \end{aligned} \right)

となっている。

4.9 第4章の問題

問題 4-1 (シュールの定理)

任意の nn 次複素正方行列 AA は、ユニタリ行列 UU によって上三角行列 SS に変換出来る:

U1AU=S(4.147)U^{-1} A U = S \tag{4.147}

このシュール (Schur) の定理を証明せよ。

[解]

(4.147)(4.147) を帰納法によって証明する。 n=1n = 1 の場合は、次数1の行列は三角行列であるから、 U=1U = 1(4.147)(4.147) は成り立っている。 (n1)(n - 1) 次の行列に対して (4.147)(4.147) が成り立っているとして、 AAnn 次の行列とする。 u1\bm{u}_ 1AA のある固有値 λ1 \lambda_1 に対応する規格化された複素固有ベクトルとする:

Au1=λ1u1u1Hu1=1(4.148)A \bm{u}_ 1 = \lambda_1 \bm{u}_ 1 \qquad \bm{u}_ 1^\text{H} \bm{u}_ 1 = 1 \tag{4.148}

この u1\bm{u}_ 1 と直交し、かつお互い同志直交する n1n - 1 個のベクトル v1,v2,,vn1\bm{v}_ 1, \bm{v}_ 2, \cdots, \bm{v}_ {n-1} をえらび ( nn 次元空間ではこれは可能である )、大きさ 11 に規格化しておく:

u1Hvj=0,viHvj=δij\bm{u}_ 1^\text{H} \bm{v}_ j = 0, \qquad \bm{v}_ i^\text{H} \bm{v}_ j = \delta_{ij}

U1U_1 をこれら nn 個のベクトルでつくった行列とする:

U1=(u1v1v2vn1)U_1 = \begin{pmatrix} \bm{u}_ 1 & \bm{v}_ 1 & \bm{v}_ 2 & \cdots & \bm{v}_ {n-1} \end{pmatrix}

これから、

U1HAU1=(u1Hv1Hv2Hvn1H)(Au1Av1Av2Avn1)=(λ1w0B)(4.149)\begin{aligned} U_1^\text{H} A U_1 & = \begin{pmatrix} \bm{u}_ 1^\text{H} \cr \bm{v}_ 1^\text{H} \cr \bm{v}_ 2^\text{H} \cr \vdots \cr \bm{v}_ {n-1}^\text{H} \cr \end{pmatrix} \begin{pmatrix} A \bm{u}_ 1 & A \bm{v}_ 1 & A \bm{v}_ 2 & \cdots & A \bm{v}_ {n-1} \end{pmatrix} \cr & = \left( \begin{array}{c|c} \lambda_1 & \bm{w}^\top \cr \hline 0 & B \cr \end{array} \right) \end{aligned} \tag{4.149}

ここに

w=(u1HAv1u1HAv2u1HAvn1)(n1次元ベクトル)B=(v1Hv2Hvn1H)(Av1Av2Avn1)=(viHAvj)(n1次正方行列)\begin{alignedat}{2} & \bm{w}^\top & & = \begin{pmatrix} \bm{u}_ 1^\text{H} & A \bm{v}_ 1 \bm{u}_ 1^\text{H} & A \bm{v}_ 2 & \cdots & \bm{u}_ 1^\text{H} & A \bm{v}_ {n-1} \end{pmatrix} \quad ( n - 1 \text{次元ベクトル}) \cr & B & & = \begin{pmatrix} \bm{v}_ 1^\text{H} \cr \bm{v}_ 2^\text{H} \cr \vdots \cr \bm{v}_ {n-1}^\text{H} \cr \end{pmatrix} \begin{pmatrix} A \bm{v}_ 1 & A \bm{v}_ 2 & \cdots & A \bm{v}_ {n-1} \end{pmatrix} \cr & & & = \begin{pmatrix} \bm{v}_ i^\text{H} A \bm{v}_ j \end{pmatrix} \quad (n - 1 \text{次正方行列}) \end{alignedat}

帰納法の仮定により、 BBn1n - 1 次のユニタリ行列 VV により三角行列 Sn1S_{n-1} に変換される:

VHBV=Sn1V^\text{H} B V = S_{n-1}

この VV を用いて、

U2=(100V)(4.150)U_2 = \begin{pmatrix} 1 & 0 \cr 0 & V \cr \end{pmatrix} \tag{4.150}

と置くと、 U2U_2 はユニタリ行列である。 (4.149)(4.149)(4.150)(4.150) より、

U2HU1HAU1U2=U2H(λ1w0B)U2=(λ1wV0VHBV)=(λ1wV0Sn1)=S\begin{aligned} U_2^\text{H} U_1^\text{H} A U_1 U_2 & = U_2^\text{H} \left( \begin{array}{c|c} \lambda_1 & \bm{w}^\top \cr \hline 0 & B \cr \end{array} \right) U_2 \cr & = \left( \begin{array}{c|c} \lambda_1 & \bm{w}^\top V \cr \hline 0 & V^\text{H} B V \cr \end{array} \right) \cr & = \left( \begin{array}{c|c} \lambda_1 & \bm{w}^\top V \cr \hline 0 & S_{n-1} \cr \end{array} \right) = S \end{aligned}

となり、 SSnn 次三角行列である。 U=U1U2U = U_1 U_2 と置くと、 (4.147)(4.147) が得られる。


問題 4-2

AHA=AAHA^\text{H} A = A A^\text{H} なる行列を正規行列19)19)という。 正規行列はユニタリ行列によって対角化可能であることを証明せよ。

19)^{19)} エルミート行列、実対称行列、ユニタリ行列、直交行列は正規行列である。

[解]

シュールの定理より UHAU=SU^\text{H} A U = S ( UU はユニタリ行列、 SS は上三角行列)。

(1)(1) AA が正規行列なら SS も正規行列である:

SHS=(UHAU)H(UHAU)=UHAHUUHAU=UHAHAU=UHAAHU=UHAUUHAHU=(UHAU)(UHAU)H=SSH\begin{aligned} S^\text{H} S & = (U^\text{H} A U)^\text{H} (U^\text{H} A U) = U^\text{H} A^\text{H} U U^\text{H} A U = U^\text{H} A^\text{H} A U \cr & = U^\text{H} A A^\text{H} U = U^\text{H} A U U^\text{H} A^\text{H} U = (U^\text{H} A U) (U^\text{H} A U)^\text{H} = S S^\text{H} \end{aligned}

(2)(2) 上三角行列 SS が正規行列なら、 SS は対角行列 DD である:

SS の要素を sijs_{ij} とすれば、 sij=0(i>j)s_{ij} = 0 (i > j) であり、 SHS^\text{H} は下三角行列であるから SHSS^\text{H} S(i,j)(i, j) 要素は k=1min(i,j)skiskj\displaystyle\sum_{k=1}^{\min(i,j)} s_{ki}^\ast s_{kj}SSHS S^\text{H}(i,j)(i, j) 要素は k=max(i,j)nsiksjk\displaystyle\sum_{k=\max(i,j)}^n s_{ik} s_{jk}^\ast である。 SHS=SSHS^\text{H} S = S S^\text{H} であるから k=min(i,j)=max(i,j)k = \min(i, j) = \max(i, j) 、すなわち k=i=jk = i = j である siks_{ik} および skis_{ki} のみ 00 でなく、 sij=0(ij)s_{ij} = 0 (i \neq j) である。 すなわち、 S=DS = D である。

(3)(3) 逆に、 S=DS = D ならば、 AHA=AAHA^\text{H} A = A A^\text{H} である:

AHA=(UDUH)HUDUH=UDHDUH=UDDHUH=AAHA^\text{H} A = (U D U^\text{H})^\text{H} U D U^\text{H} = U D^\text{H} D U^\text{H} = U D D^\text{H} U^\text{H} = A A^\text{H}

問題 4-3

図 4.3 の 2 分法の PAD では、大きい固有値からすべての固有値を求めるようになっている。 この PAD をわずかに 変えれば 、大きさの任意の順の固有値を求めるように出来る。 いま、小さい方から m1m_1 番目から m2m_2 番目の固有値を求める PAD を書け。 また、上 \cdot 下限を与えてやれば、その中にある固有値だけを求めることも可能である。 この PAD を書け。

[ヒント] λminλλmax\lambda_{\min} \leqq \lambda \leqq \lambda_{\max} 、また m1NCS(λ)m2m_1 \leqq \text{NCS} (\lambda) \leqq m_2 である λ\lambda を求める。


問題 4-4

nn 次正方行列 A=( aij )A = (\ a_{ij}\ ) のトレース (対角和) を

Tr(A)a11+a22++ann\text{Tr}(A) \equiv a_{11} + a_{22} + \cdots + a_{nn}

と書く。 行列 BB との積のトレースについて、

Tr(AB)=Tr(BA)\text{Tr}(A B) = \text{Tr}(B A)

が成り立つ20)20)ことを証明せよ。 これより、

Tr(P1AP)=Tr(A)\text{Tr}(P^{-1} A P) = \text{Tr}(A)

を導け。

20)^{20)} この公式は、 AAn×mn \times m 行列、 BBm×nm \times n 行列としても成立する。

[解]

A=( aij )A = (\ a_{ij}\ )B=( bij )B = (\ b_{ij}\ ) とすれば、

Tr(AB)=i=1n(j=1maijbji)=j=1m(i=1nbjiaij)=Tr(BA)\text{Tr}(AB) = \sum_{i=1}^{n} \left( \sum_{j=1}^{m} a_{ij} b_{ji} \right) = \sum_{j=1}^{m} \left( \sum_{i=1}^{n} b_{ji} a_{ij} \right) = \text{Tr}(BA)

次に、

Tr(P1AP)=Tr(P1(AP))=Tr((AP)P1)=Tr(APP1)=Tr(A)\text{Tr}(P^{-1} A P) = \text{Tr}(P^{-1}(A P)) = \text{Tr}((AP)P^{-1}) = \text{Tr}(A P P^{-1}) = \text{Tr}(A)

問題 4-5

nn 次正方行列 AA の固有値を λ\lambda とすれば、 λ\lambda は複素平面上の nn 個の円

aiiλrij=1jiaij(1in)(4.151)\vert a_{ii} - \lambda \vert \leqq r_i \equiv \sum_{\substack{j=1 \cr j \neq i}} \vert a_{ij} \vert \qquad (1 \leqq i \leqq n) \tag{4.151}

のいずれかの中にある (ゲルシュゴリンの定理。図 4.4 参照) ことを証明せよ。 また、いま AA をコンパニオン行列

A=(000an100an10100010a20001a1)A = \begin{pmatrix} 0 & 0 & \cdots & \cdots & 0 & -a_n \cr 1 & 0 & \cdots & \cdots & 0 & -a_{n-1} \cr 0 & 1 & 0 & \cdots & 0 & \vdots \cr \vdots & 0 & \ddots & \ddots & \vdots & \vdots \cr \vdots & \vdots & \ddots & 1 & 0 & -a_2 \cr 0 & 0 & \cdots & 0 & 1 & -a_1 \cr \end{pmatrix}

とすれば、この行列にゲルシュゴリンの定理を適用して、 nn 次代数方程式

xn+a1xn1+a2xn2++an1x+an=0(4.152)x_n + a_1 x_{n-1} + a_2 x_{n-2} + \cdots + a_{n-1} x + a_n = 0 \tag{4.152}

の解は、

1+max1inaixanan+max1in1ai(4.153)1 + \max_{1 \leqq i \leqq n} \vert a_i \vert \geqq \vert x \vert \geqq \frac{\vert a_n \vert}{\vert a_n \vert + \max\limits_{1 \leqq i \leqq n-1} \vert a_i \vert} \tag{4.153}

で与えられる範囲内にあることを示せ。

[解]

固有ベクトル x\bm{x} の最大ノルムを x=xi\Vert x \Vert_\infty = \vert x_i \vert とすると、 (AλI)x=0(A - \lambda I) x = 0 の第 ii 成分より

aiiλxi=(aiiλ)xi=aiixikaikxk=k=1kinaikxkk=1kinaikxkk=1kinaikxirixi\begin{aligned} \vert a_{ii} - \lambda \vert \vert x_i \vert & = \vert (a_{ii} - \lambda) x_i \vert = \vert a_{ii} x_i - \sum_k a_{ik} x_k \vert \cr & = \left\vert \sum_{\substack{k=1 \cr k \neq i}}^n a_{ik} x_k \right\vert \leqq \sum_{\substack{k=1 \cr k \neq i}}^n \vert a_{ik} \vert \vert x_k \vert \leqq \sum_{\substack{k=1 \cr k \neq i}}^n \vert a_{ik} \vert \vert x_i \vert \equiv r_i \vert x_i \vert \cr \end{aligned}

これより、ゲルシュゴリンの定理が得られる。 コンパニオン行列の特性多項式は、

det(xIA)=xn+a1xn1+a2xn2++an1x+an\det (x I - A) = x_n + a_1 x_{n-1} + a_2 x_{n-2} + \cdots + a_{n-1} x + a_n

であるから、コンパニオン行列にゲルシュゴリンの定理を適用すると、 (4.153)(4.153) の第1の不等号が成立する。 an=0a_n = 0 のときは (4.153)(4.153) の第2の不等号は明らかに成立する。 an0a_n \neq 0 のとき、 x1x^{-1}(4.152)(4.152)anxna_n x_n で割って得た

1an+a1anx1+a2anx2++an1anxn+1+xn=0\frac{1}{a_n} + \frac{a_1}{a_n} x^{-1} + \frac{a_2}{a_n} x^{-2} + \cdots + \frac{a_{n-1}}{a_n} x^{-n+1} + x^{-n} = 0

に対応するコンパニオン行列 ( aiani/ana_i \to a_{n-i} / a_n と置き換えて得た行列) の解である。 このコンパニオン行列にゲルシュゴリンの定理を適用すると (4.153)(4.153) の第2の不等号が成立する。


問題 4-6

非対称行列をヘッセンベルグ行列に変換するハウスホルダー変換を見いだせ。 そして、固有値問題を数値的に解く手順を求めよ。

[ヒント] A0=AA_0 = A より出発して、 k=1,2,,n2k = 1, 2, \cdots , n-2 の順に、

Ak=Ak1qkwkwkqk(4.154)A_k = A_{k-1} - \bm{q}_ k \bm{w}_ k^\top - \bm{w}_ k \bm{q}_ k^{\ast\top} \tag{4.154}

ただし

ck=1wkwkpk=2ckAk1wkpk=2ckAk1wkqk=pkck(pkwk)wkqk=pkck(pkwk)wk\begin{aligned} & c_k = \frac{1}{\bm{w}_ k^\top \bm{w}_ k} \cr & \bm{p}_ k = 2c_k A_{k-1} \bm{w}_ k & \qquad & \bm{p}_ k^\ast = 2c_k A_{k-1}^\top \bm{w}_ k \cr & \bm{q}_ k = \bm{p}_ k - c_k (\bm{p}_ k^\top \bm{w}_ k ) \bm{w}_ k & & \bm{q}_ k^\ast = \bm{p}_ k^\ast - c_k (\bm{p}_ k^{\ast\top} \bm{w}_ k) \bm{w}_ k \cr \end{aligned}

Ak1=Ak1A_{k-1}^\top = A_{k-1} とすれば pk=pk\bm{p}_ k^\ast = \bm{p}_ kqk=qk\bm{q}_ k^\ast = \bm{q}_ k となり、 (4.66)(4.66) の対称行列の3重対角化の公式と一致する。

ヘッセンベルグ行列化の PAD は 4.8 節の図 4.15 を参照せよ。

ヘッセンベルグ行列の固有値は (4.23)(4.23)(4.25)(4.25) および (4.26)(4.26) 、固有ベクトルは 4.7 節を参照。


問題 4-7

非対称行列 AA を三角行列 R=Q1AQR = Q^{-1} A Q に相似変換する有限回のハウスホルダー変換の積 QQ は可能か。 可能ならばそれを見い出せ。 可能でないならば、理由を述べよ。

[ヒント] 三角行列の固有値は対角要素であるから、三角行列に相似変換できれば、固有値が求められることになる。 n>4n > 4 のとき、有限回のハウスホルダー変換で三角行列化できれば、有限回の演算で、 nn 次代数方程式の解が求められることになり、これはアベルの定理に反する。 しかし、 R=Q1AR = Q^{-1} A が三角行列となるような有限回のハウスホルダー変換は可能であるばかりでなく、4.8 節の QR\text{QR} 法の基礎である。


問題 4-8

任意の n×mn \times m 行列 AA は、 nn 次直交行列 PPmm 次直交行列 QQ によって、次のように対角化出来る。

PAQ=D=diag(σ1,σ2,σr,0,0,0)P A Q^\top = D = \text{diag} \begin{pmatrix} \sigma_1, & \sigma_2, & \cdots & \sigma_r, & 0, & 0, & \cdots & 0 \end{pmatrix}

このとき、 n×mn \times m 行列 DD00 でない対角要素 σk(1kr)\sigma_k (1 \leqq k \leqq r)AA の特異値 (singular value) という。 特異値は、非負定値行列 AAA^\top A の固有値の平方根に等しいことを示せ。

[ヒント] QAAQ=QAPPAQ=(PAQ)PAQ=DDQ A^\top A Q^\top = Q A^\top P^\top P A Q^\top = (P A Q^\top)^\top P A Q^\top = D^\top D


問題 4-9

(4.71)(4.71) の手順によってつくられるランチョスベクトル列 vk(1kn)\bm{v}_ k (1 \leqq k \leqq n) は、規格直交系をなすことを証明せよ。 したがって、丸めの誤差がなければ、 nn 次元空間においては vn+1=0\bm{v}_ {n+1} = 0 である。

[解]

作業用ベクトルをのぞいた生のランチョスベクトル列の生成漸化式は

βkvk+1=Avkαkvkβk1vk1(4.155)\beta_k \bm{v}_ {k+1} = A \bm{v}_ k - \alpha_k \bm{v}_ k - \beta_{k-1} \bm{v}_ {k-1} \tag{4.155}

である。

v1\bm{v}_ 1v1=1\Vert \bm{v}_ 1 \Vert = 1α1\alpha_1α1=v1Av1\alpha_1 = \bm{v}_ 1^\top A \bm{v}_ 1 とする。 (4.155)(4.155)k=1k = 1 とおいて v2\bm{v}_ 2 をつくると、

β1v2=Av1α1v1\beta_1 \bm{v}_ 2 = A \bm{v}_ 1 - \alpha_1 \bm{v}_ 1  β1v1v2=v1Av1α1v1v1=α1α1=0\therefore\ \beta_1 \bm{v}_ 1^\top \bm{v}_ 2 = \bm{v}_ 1^\top A \bm{v}_ 1 - \alpha_1 \bm{v}_ 1^\top \bm{v}_ 1 = \alpha_1 - \alpha_1 = 0

また、 β1=v2\beta_1 = \Vert \bm{v}_ 2 \Vert と選べば、 v1\bm{v}_ 1v2\bm{v}_ 2 は規格直交系をなす。

いま、 1i, jk1 \leqq i,\ j \leqq k なる iijj について、 (4.155)(4.155) によってつくられた vi\bm{v}_ ivj\bm{v}_ j

vivj=δij\bm{v}_ i^\top \bm{v}_ j = \delta_{ij}

と規格直交系をなすとする。 このとき、

βj1vivj=viAvjαj1vivj1βj2vivj2\beta_{j-1} \bm{v}_ i^\top \bm{v}_ j = \bm{v}_ i^\top A \bm{v}_ j - \alpha_{j-1} \bm{v}_ i^\top \bm{v}_ {j-1} - \beta_{j-2} \bm{v}_ i^\top \bm{v}_ {j-2}

より、

viAvi=αiviAvi±1=vi±1Avi=βiviAvj=0(ji,i±1)\begin{alignedat}{2} & \bm{v}_ i^\top A \bm{v}_ i & & = \alpha_i \cr & \bm{v}_ i^\top A \bm{v}_ {i \pm 1} & & = \bm{v}_ {i \pm 1}^\top A \bm{v}_ i = \beta_i \cr & \bm{v}_ i^\top A \bm{v}_ j & & = 0 \qquad (j \neq i, i \pm 1) \cr \end{alignedat}

であることに注意する。 そうして、次のベクトル vk+1\bm{v}_ {k+1}(4.155)(4.155) によってつくり、 v\bm{v} とのスカラー積をつくると、

βkvivk+1=viAvkαkvivkβk1vivk1=viAvkαkδikβk1δi k1\begin{aligned} \beta_k \bm{v}_ i^\top \bm{v}_ {k+1} & = \bm{v}_ i^\top A \bm{v}_ k - \alpha_k \bm{v}_ i^\top \bm{v}_ k - \beta_{k-1} \bm{v}_ i^\top \bm{v}_ {k-1} \cr & = \bm{v}_ i^\top A \bm{v}_ k - \alpha_k \delta_{ik} - \beta_{k-1} \delta_{i\ k-1} \cr \end{aligned}

故に

vkvk+1=αkαk=0(i=k)vk1vk+1=βk1βk1=0(i=k1)vivk+1=viAvk=0(i<k1)\begin{alignedat}{3} & \bm{v}_ k^\top \bm{v}_ {k+1} & & = \alpha_k - \alpha_k = 0 & \quad & (i = k) \cr & \bm{v}_ {k-1}^\top \bm{v}_ {k+1} & & = \beta_{k-1} - \beta_{k-1} = 0 & \quad & (i = k - 1) \cr & \bm{v}_ i^\top \bm{v}_ {k+1} & & = \bm{v}_ i^\top A \bm{v}_ k = 0 & \quad & (i < k - 1) \cr \end{alignedat}

また

βkvk+1vk+1=vk+1Avk\beta_k \bm{v}_ {k+1}^\top \bm{v}_ {k+1} = \bm{v}_ {k+1}^\top A \bm{v}_ k

より、

βk=vk+1Avk\beta_k = \bm{v}_ {k+1}^\top A \bm{v}_ k

とおけば、 vk+1=1\Vert \bm{v}_ {k+1} \Vert = 1 である。 こうして、 vk+1\bm{v}_ {k+1} も含めて規格直交系をなす。


問題 4-10

非対称行列に対するランチョス法の手順によって作られたベクトルは双直交性 (4.74)(4.74) を満足する1次独立なベクトルであることを証明せよ。

[ヒント] 問題 4-9 を参考にして証明することができる。


問題 4-11

ランチョス法による対称行列および非対称行列の3重対角化による固有値を求める手順を完成せよ。

[ヒント] 対称行列のときは (4.68)(4.68)VV 、非対称行列のときは (4.74)(4.74) の行列 UU による三重対角行列 TT への相似変換であるから、得られた三重対角行列 TT の固有値はもとの行列 AA の固有値に等しい。 したがって、三重対角行列 TT の固有値を求めればよい。

その PAD は、対称行列については図 4.12、非対称行列については 図 4.13 に示す。


問題 4-12

nn 次正方行列 AAQR\text{QR} 分解 A=QRA = QR は、 RR の対角要素が非負ならば、一意的であることを証明せよ。

[解]

2通りの方法で、 A=Q1R1=Q2R2A = Q_1 R_1 = Q_2 R_2QR\text{QR} 分解出来たとする。 Q1Q_1Q2Q_2 は直交行列だから

Q2Q1=R2R11=DQ_2^\top Q_1 = R_2 R_1^{-1} = D

と置くと、 R1R_1 が上三角行列だから R11R_1^{-1} は三角行列、 R2R_2 も三角行列だから、 DD も三角行列である。 また、

DD=(Q2Q1)(Q2Q1)=Q1(Q2Q2)Q1=ID^\top D = (Q_2^\top Q_1)^\top (Q_2^\top Q_1) = Q_1^\top (Q_2 Q_2^\top) Q_1 = I

だから、三角行列 DD は対角行列であり、 DD=D2=ID^\top D = D_2 = I より、 DD の対角要素は ±1\pm 1 である。

Q2=Q1D1=Q1D,R2=DR1Q_2 = Q_1 D^{-1} = Q_1 D, \qquad R_2 = D R_1

より、 DD の対角要素の符号だけの不定性がある。 R1R_1R2R_2 の対角要素の符号を非負にとれば、 D=ID = I となり、 Q2Q_2Q1Q_1R2R_2R1R_1 は一致する。 これを QR\text{QR} 分解の一意性という。

なお、任意の複素行列 AA に対して、 QQ をユニタリ行列とすれば、 QQRR は複素位相 exp(iθ)\exp (i \theta) だけの不定性がある。


問題 4-13

AAnn 次実行列で、次の条件を満たすものとする。

(1)(1) nn 個の固有値は互いに相異なり、かつ絶対値が

λ1>λ2>>λn1>λn>0\vert \lambda_1 \vert > \vert \lambda_2 \vert > \cdots > \vert \lambda_{n-1} \vert > \vert \lambda_n \vert > 0

(2)(2) nn 個の固有値に属する固有ベクトル x1,x2,,xnx_1, x_2, \cdots, x_n は1次独立だから、モード行列 X=(x1x2xn)X = \begin{pmatrix} x_1 & x_2 & \cdots & x_n \end{pmatrix} は正則であり、

AX=XΛ,Λ=diag(λ1,λ2,,λn1,λn)AX = X\varLambda, \qquad \varLambda = \text{diag} ( \lambda_1 , \lambda_2 , \cdots , \lambda_{n-1} , \lambda_n )

である。 このとき、 X1=LU X^{-1} = LULU\text{LU} 分解出来るとする。 ただし、 LL の対角要は lii=1l_{ii} = 1 とする。

このとき、 QR\text{QR} 法の AkA_k の要素を aij(k)a_{ij}^{(k)} とすると、

limkaij(k)={ 0(i>j)下三角要素 λi(i=j)対角要素 振動(i<j)上三角要素\lim_{k \to \infty} a_{ij}^{(k)} = \begin{cases} \ 0 & (i > j) & & \text{下三角要素} \cr \ \lambda_i & (i = j) & & \text{対角要素} \cr \ \text{振動} & (i < j) & & \text{上三角要素} \cr \end{cases}

となることを示せ。

[解]

A=XΛX1A = X \varLambda X^{-1} だから、

Ak=(XΛX1)k=XΛkX1=XΛkLU=X(ΛkLΛk)(ΛkU)A^k = (X \varLambda X^{-1})^k = X \varLambda^k X^{-1} = X \varLambda^k L U = X (\varLambda^k L \varLambda^{-k})(\varLambda^k U)

ΛkLΛk\varLambda^k L \varLambda^{-k} の対角要素は 11 であるから

ΛkLΛk=I+Bk,Bk=(bij),L=(lij)\varLambda^k L \varLambda^{-k} = I + B_k, \qquad B_k = (b_{ij}), \qquad L = (l_{ij})

と置くと、 lii=1l_{ii} = 1lij=0(i>j)l_{ij} = 0 (i > j) だから、

bij=0(ij)bij=lij[ λi/λj ]k(i>j)\begin{alignedat}{2} & b_{ij} = 0 & \quad & (i \leqq j) \cr & b_{ij} = l_{ij} \left[\ \lambda_i / \lambda_j\ \right]^k & \quad & (i > j) \cr \end{alignedat}

である。 λi/λj<1 (i>j)\vert \lambda_i / \lambda_j \vert < 1 \ (i > j) だから、 kk \to \inftyBk0B_k \to 0 に収束する。

XXX=QXRXX = Q_X R_XQR\text{QR} 分解すると、

Ak=QXRX(I+Bk)RX1RX(ΛkU)=QX(I+RXBkRX1)(RXΛkU)\begin{aligned} A^k & = Q_X R_X (I + B_k) R_X^{-1} R_X (\varLambda^k U) \cr & = Q_X (I + R_X B_k R_X^{-1})(R_X \varLambda^k U) \cr \end{aligned}

また、 I+RXBkRX1=Q~kR~kI + R_X B_k R_X^{-1} = \tilde{Q}_ k \tilde{R}_ kQR\text{QR} 分解すれば Q~kI\tilde{Q}_ k \to IR~kI\tilde{R}_ k \to I である。 ここで、 Λ\varLambdaUU の対角要素の符号を対角要素とする対角行列

D1=diag(sign(λ1),sign(λ2),,sign(λn))D2=diag(sign(u11),sign(u22),,sign(unn))\begin{aligned} & D_1 = \text{diag}( \text{sign}(\lambda_1 ), \text{sign} ( \lambda_2 ), \cdots , \text{sign}(\lambda_n)) \cr & D_2 = \text{diag}( \text{sign}(\bm{u}_ {11}), \text{sign} ( \bm{u}_ {22}), \cdots , \text{sign}(u_{nn}) ) \cr \end{aligned}

( uiiu_{ii}UU の対角要素) を導入すると、

Ak=QX(Q~kR~k)(RXΛkU)=(QXQ~k)(R~kRXΛkU)=(QXQ~kD21D1k)(D1kD2R~kRXΛkU)\begin{aligned} A^k = Q_X (\tilde{Q}_ k \tilde{R}_ k)(R_X \varLambda^k U) = (Q_X \tilde{Q}_ k)(\tilde{R}_ k R_X \varLambda^k U) = (Q_X \tilde{Q}_ k D_2^{-1} D_1^{-k})(D_1^k D_2 \tilde{R}_ k R_X \varLambda^k U) \end{aligned}

において、上三角行列の積は上三角行列、上三角行列と対角行列の積は上三角行列であるから、第2の積は上三角行列である。 また、第2の括弧の三角行列の対角要素は正である。 したがって、 QR\text{QR} 分解の一意性 (問題 4-12 参照) より、この第1の括弧が AkA^kQR\text{QR} 分解の QQ 、第2の括弧が RR である。 ここで、

QXAQX=QX(XΛX1)QX=QX(QXRXΛRX1QX1)QX=RXΛRX1\begin{aligned} Q_X^\top A Q_X & = Q_X^\top (X \varLambda X^{-1}) Q_X = Q_X^\top (Q_X R_X \varLambda R_X^{-1} Q_X^{-1}) Q_X \cr & = R_X \varLambda R_X^{-1} \cr \end{aligned}

に注意すると、 kk \to \infty で、

Ak+1=(QXQ~kD21D1k)1A(QXQ~kD21D1k)(QXD21D1k)1A(QXD21D1k)=D1k(D2QXAQXD21)D1k=D1k(D2RXΛRX1D21)D1k\begin{aligned} A_{k+1} & = (Q_X \tilde{Q}_ k D_2^{-1} D_1^{-k} )^{-1} A (Q_X \tilde{Q}_ k D_2^{-1} D_1^{-k}) \cr & \to (Q_X D_2^{-1} D_1^{-k} )^{-1} A (Q_X D_2^{-1} D_1^{-k} ) \cr & = D_1^k (D_2 Q_X^\top A Q_X D_2^{-1}) D_1^{-k} \cr & = D_1^k (D_2 R_X \varLambda R_X^{-1} D_2^{-1} ) D_1^{-k} \cr \end{aligned}

この括弧の中は上三角行列で、 kk にはよらない。 しかし、 AA に負の固有値があれば、括弧の外は kk とともに振動する。 D1D_1 は対角行列だから、この振動は、上三角行列の非対角要素の振動となる。 対角要素はこの振動の影響はなく、 Λ\varLambda の対角要素、すなわち AA の固有値に収束する。


問題 4-14

AA は非対称実行列とする。 まず、 QR\text{QR} 分解 (4.108)(4.108)QkQ_k として、4.5 節ハウスホルダー変換の積を使ったとき、そのハウスホルダー変換を求めよ。

そして、このハウスホルダー変換を用いた QR\text{QR} 分解による QR\text{QR} 法の手順をつくり、その PAD を書け。

[ヒント] Ak1A_{k-1} の第1列の第2成分以下を 00 にする変換を P1P_1P1Ak1P_1 A_{k-1} の第2列の第3成分以下を除いて 00 にする変換を P2,P_2, \cdots とする。 RkR_k を上三角行列とすると

Pn1Pn2P1Ak1=RkP_{n-1} P_{n-2} \cdots P_1 A_{k-1} = R_k  Qk=(Pn1Pn2P1)=P1P2Pn1(4.156)\therefore \ Q_k = (P_{n-1} P_{n-2} \cdots P_1)^\top = P_1 P_2 \cdots P_{n-1} \tag{4.156}

Pj1Pj2P1Ak1P_{j-1} P_{j-2} \cdots P_1 A_{k-1} の第 jj 列要素を a1j,a2j,,anja_{1j} , a_{2j} , \cdots, a_{nj} とする。 このとき

aij=aij(i<j)aij=0(i>j)ajj=sign(ajj)i=jnaij2\begin{aligned} & a_{ij}^\prime = a_{ij} & (i < j) \cr & a_{ij}^\prime = 0 & (i > j) \cr & a_{jj}^\prime = -\text{sign}(a_{jj}) \sqrt{\textstyle\sum_{i=j}^n a_{ij}^2} \cr \end{aligned}

となるように PjP_j をきめる。 そのためには w=ajaj (4.60)w = \bm{a}_ j - \bm{a}_ j^\prime\ (4.60)

w=(00ajjajjaj+1 jaj+2 janj)(4.157)w = \begin{pmatrix} 0 & \cdots & 0 & a_{jj} - a_{jj}^\prime & a_{j+1\ j} & a_{j+2\ j} & \cdots & a_{nj} \end{pmatrix}^\top \tag{4.157}

とおけばよい。


問題 4-15

nn 次三重対角行列

T=(bcabc0abcabc0abcab)T = \begin{pmatrix} b & c \cr a & b & c & & & \Large{0} \cr & a & b & c \cr & & a & b & c \cr & & & \ddots & \ddots & \ddots \cr & \Large{0} & & & a & b & c \cr & & & & & a & b \cr \end{pmatrix}

の固有値 λ\lambda および固有ベクトル x\bm{x} は、 1kn1 \leqq k \leqq n として

λk=b+2(ac)1/2coskπn+1xk=[(ac)1/2sin(kπn+1),(ac)sin(2kπn+1),(ac)3/2sin(3kπn+1),,(ac)n/2sin(nkπn+1)]\begin{align*} \lambda_k = & b + 2(ac)^{1/2} \cos \frac{k \pi}{n + 1} \tag{4.158} \cr \bm{x}_ k = & \left[ \left( \frac{a}{c} \right)^{1/2} \sin \left( \frac{k \pi}{n + 1} \right), \left( \frac{a}{c} \right) \sin \left( \frac{2k \pi}{n + 1} \right), \left( \frac{a}{c} \right)^{3/2} \sin \left( \frac{3k \pi}{n + 1} \right), \right. \cr & \qquad \qquad \qquad \qquad \qquad \qquad \qquad \qquad \left. \cdots, \left( \frac{a}{c} \right)^{n/2} \sin \left( \frac{nk \pi}{n + 1} \right) \right] \tag{4.159} \cr \end{align*}

であることを証明せよ。

[解]

固有値方程式 Tx=λxT x = \lambda_x を成分ごとに書けば、

(bλ)x1+cx2=0ax1+(bλ)x2+cx3=0ax2+(bλ)x3+cx4=0axn2+(bλ)xn1+cxn=0axn1+(bλ)xn=0\begin{alignedat}{2} (b - \lambda) & x_1 & + c x_2 & = 0 \cr a x_1 + (b - \lambda) & x_2 & + c x_3 & = 0 \cr a x_2 + (b - \lambda) & x_3 & + c x_4 & = 0 \cr \cdots \quad & & \cdots \cr a x_{n-2} +(b - \lambda) & x_{n-1} & + c x_n & = 0 \cr a x_{n-1} +(b - \lambda) & & x_n & = 0 \cr \end{alignedat}

である。 したがって、行列 TT の固有値問題は、

x0=xn+1=0(4.160)x_0 = x_{n+1} = 0 \tag{4.160}

の条件の下で、 線形差分方程式

axj1+(bλ)xj+cxj+1=0(1jn)(4.161)a x_{j-1} + (b - \lambda) x_j + c x_{j+1} = 0 \qquad (1 \leqq j \leqq n) \tag{4.161}

を解き、 xjx_jλ\lambda を求めることになる。 線形差分方程式は次のようにして解く。 まず、 xj=ξjx_j = \xi_j とおいて (4.161)(4.161) に代入すると、 ξ\xi は特性多項式

a+(bλ)ξ+cξ2=0(ξ0)(4.162)a + (b - \lambda) \xi + c \xi^2 = 0 \qquad (\xi \neq 0) \tag{4.162}

を満たす。 この2つの解を ξ1\xi_1ξ2\xi_2 とすると、 ξ1ξ2\xi_1 \neq \xi_2 のとき、 (4.161)(4.161) の一般解は

xj=Aξ1j+Bξ2j(A,Bは任意定数)(4.163)x_j = A \xi_1^j + B \xi_2^j \qquad (A, B \text{は任意定数}) \tag{4.163}

である。 固有値 λ\lambda(4.160)(4.160) より決まる。 すなわち、 (4.160)(4.160)

x0=A+B=0およびxn+1=Aξ1n+1+Bξ2n+1=0x_0 = A + B = 0 \qquad \text{および} \qquad x_{n+1} = A \xi_1^{n+1} + B \xi_2^{n+1} = 0

であるから、これらより

[ξ1ξ2]n+1=exp(i2πk)(i=1,1kn)(4.164)\left[ \frac{\xi_1}{\xi_2} \right]^{n+1} = \exp(i2\pi k) \qquad (i = \sqrt{-1}, \quad 1 \leqq k \leqq n) \tag{4.164}

故に

ξ1ξ2=exp[2πkn+1i](4.165)\frac{\xi_1}{\xi_2} = \exp \left[ \frac{2 \pi k}{n + 1} i \right] \tag{4.165}

一方、 (4.162)(4.162) より

ξ1ξ2=ac,ξ1+ξ2=λbc(4.166)\xi_1 \xi_2 = \frac{a}{c}, \qquad \xi_1 + \xi_2 = \frac{\lambda - b}{c} \tag{4.166}

(4.165)(4.165)(4.166)(4.166) の第1式より

ξ1=(ac)1/2exp[πkn+1i],ξ2=(ac)1/2exp[πkn+1i](4.167)\xi_1 = \left( \frac{a}{c} \right)^{1/2} \exp \left[ \frac{\pi k}{n + 1} i \right], \qquad \xi_2 = \left( \frac{a}{c} \right)^{1/2} \exp \left[ - \frac{\pi k}{n + 1} i \right] \tag{4.167}

(4.166)(4.166) の第2式と (4.167)(4.167) より

λk=b+c(ξ1+ξ2)=b+2(ac)1/2coskπn+1(4.168)\lambda_k = b + c (\xi_1 + \xi_2) = b + 2(ac)^{1/2} \cos \frac{k \pi}{n + 1} \tag{4.168}

固有値 λk\lambda_k に属する固有ベクトル xkx_k の第 jj 成分は、 (4.163)(4.163) に以上の結果を代入して

xj=Aξ1j+Bξ2j=2iA(ac)j/2sin[jkπn+1](4.169)x_j = A \xi_1^j + B \xi_2^j = 2 i A \left( \frac{a}{c} \right)^{j/2} \sin \left[ \frac{j k \pi}{n + 1} \right] \tag{4.169}

である。 ここに 2iA2iA は定数であるから 2iA=12iA = 1 とおけば (4.159)(4.159) が得られる。

なお、 ξ1=ξ2\xi_1 = \xi_2 のときは、 (4.161)(4.161) の一般解は

xj=(A+Bj)ξ1jx_j = (A + Bj) \xi_1^j

であるが、 (4.160)(4.160) より A=B=0A = B = 0 となり x=0x = 0 である。 したがって、求める解は ξ1ξ2\xi_1 \neq \xi_2 であり、 (4.164)(4.164)kk1kn1 \leqq k \leqq n に限られる。

以上の解法は線形差分方程式の解法の定石であるが、次のような解法もある。

(4.161)(4.161) と恒等式

sin(j1)θ2sinjθcosθ+sin(j+1)θ=0\sin (j - 1) \theta - 2 \sin j \theta \cos \theta + \sin (j + 1) \theta = 0

と比べて、 xj=(a/c)(j/2)sinjθx_j = (a/c)^{(j/2)} \sin j \theta と置くと、 x0=0x_0 = 0 は満足する。 xn+1=0x_{n+1} = 0 を満足するためには

sin(n+1)θ=0θk=kπn+1(1kn)\sin (n + 1) \theta = 0 \qquad \therefore \quad \theta_k = \frac{k \pi}{n + 1} \quad (1 \leqq k \leqq n)

(4.161)(4.161)xjx_j を代入すると

sin(j1)θk+bλk(ac)1/2sinjθk+sin(j+1)θk=0\sin (j - 1) \theta_k + \frac{b - \lambda_k}{(ac)^{1/2}} \sin j \theta_k + \sin (j + 1)\theta_k = 0

これから、

λk=b+2(ac)1/2coskπn+1\lambda_k = b + 2(ac)^{1/2} \cos \frac{k \pi}{n + 1}

が得られる。


問題 4-16

nn 次実対称行列

A=(nn1n21n1n1n21n2n2n211111)フランク (Frank) の行列A = \begin{pmatrix} n & n-1 & n-2 & \cdots & 1 \cr n-1 & n-1 & n-2 & \cdots & 1 \cr n-2 & n-2 & n-2 & \cdots & 1 \cr \vdots & \vdots & \vdots & & \vdots \cr 1 & 1 & 1 & \cdots & 1 \cr \end{pmatrix} \qquad \text{フランク (Frank) の行列}

について、

逆行列:

A1=(111210121012112)A^{-1} = \begin{pmatrix} 1 & -1 \cr -1 & 2 & -1 & & \Large{0} \cr & -1 & 2 & -1 \cr & & \ddots & \ddots & \ddots \cr & \Large{0} & & -1 & 2 & -1 \cr & & & & -1 & 2 \cr \end{pmatrix}

固有値:

λk=12(1cos2k12n+1π)(1kn)\lambda_k = \frac{1}{2 \left(1 - \cos \displaystyle\frac{2k - 1}{2n + 1} \pi \right)} \qquad (1 \leqq k \leqq n)

固有ベクトル:

vk=[cos(2k12n+1π2),,cos((2k1)(2j1)2n+1π2),,cos((2k1)(2n1)2n+1π2)]\bm{v}_ k = \left[ \cos \left( \frac{2k - 1}{2n + 1} \frac{\pi}{2} \right), \cdots, \cos \left( \frac{(2k - 1)(2j - 1)}{2n + 1} \frac{\pi}{2} \right), \cdots, \cos \left( \frac{(2k - 1)(2n - 1)}{2n + 1} \frac{\pi}{2} \right) \right]^\top

であることを示せ。 この行列は、逆行列・固有値・固有ベクトルのテスト行列として用いられる。

[解]

A1A^{-1}AA との乗算によって単位行列 II になることを確かめる。 固有値と固有ベクトルは、 Av=λvA \bm{v} = \lambda \bm{v} ならば A1v=λ1vA^{-1} \bm{v} = \lambda^{-1} \bm{v} であることを利用して、 A1A^{-1} の固有値 μ=λ1\mu = \lambda^{-1} と固有ベクトル v\bm{v} を求める。 A1v=μvA^{-1} \bm{v} = \mu \bm{v} は 問題 4-15 と同様に、線形差分方程式

xj1+(2μ)xjxj+1=0-x_{j-1} + (2 - \mu) x_j - x_{j+1} = 0

であり、これを 問題 4-15 と同様に定石に従って条件 x0=x1x_0 = x_1 、 $x_{n+1} = 0 の下に解く。 別解として、この漸化式と恒等式

cos(2j3)θ+2cos2θcos(2j1)θcos(2j+1)θ=0- \cos (2j - 3) \theta + 2 \cos 2 \theta \cos (2j - 1) \theta - \cos (2j + 1) \theta = 0

と比べて xj=cos(2j1)θx_j = \cos (2j - 1) \theta と置くと、 x0=x1x_0 = x_1 は満足されている。 xn+1=0x_{n+1} = 0 より、

cos(2n+1)θ=0(2n+1)θk=(2k1)π/2(1kn)\cos (2n + 1) \theta = 0 \quad \therefore \quad (2n + 1) \theta_k = (2k - 1) \pi / 2 \quad (1 \leqq k \leqq n)

この θk\theta_k を用いて、 xj=cos(2j1)θkx_j = \cos (2j - 1) \theta_kμk=2(1cos2θk)\mu_k = 2(1 - \cos 2 \theta_k ) を得る。


問題 4-17

nn 次実対称行列

A=(a+bbbab0bab0babba+b)A = \begin{pmatrix} a + b & b \cr b & a & b & & \Large{0} \cr & b & a & b \cr & & \ddots & \ddots & \ddots \cr & \Large{0} & & b & a & b \cr & & & & b & a + b \cr \end{pmatrix}

の固有値問題を解け。

[ヒント] bxj1+(aλ)xj+bxj+1=0 (x0=x1,xn+1=xn)b x_{j-1} + (a - \lambda) x_j + b x_{j+1} = 0 \ (x_0 = x_1, x_{n+1} = x_n)

cos(2j3)θ+2cos2θcos(2j1)θcos(2j+1)θ=0- \cos (2j - 3) \theta + 2 \cos 2 \theta \cos (2j - 1) \theta - \cos (2j + 1) \theta = 0

と比べて、 θk=(k1)π/(2n)\theta_k = (k - 1) \pi / (2n)λk=a+2bcos2θk\lambda_k = a + 2b \cos 2 \theta_kxj=cos(2j1)θkx_j = \cos (2j - 1) \theta_k


問題 4-18

すべての要素が 11 である nn 次実対称行列 AA の固有値と固有ベクトルを求めよ。

[解]

特性多項式は

det(AλI)=det(1λ1111λ1111λ)=det(1λ1nλ11λnλ11nλ)第 n 列にその他の列を加える=det(λ000λ011nλ)第 n 行をその他の行から引く=(1)nλn1(λn)\begin{aligned} \det(A - \lambda I) & = \det \begin{pmatrix} 1 - \lambda & 1 & \cdots & 1 \cr 1 & 1 - \lambda & \cdots & 1 \cr \cdots & \cdots & \cdots & \cdots \cr 1 & 1 & \cdots & 1 - \lambda \cr \end{pmatrix} \cr & = \det \begin{pmatrix} 1 - \lambda & 1 & \cdots & n - \lambda \cr 1 & 1 - \lambda & \cdots & n - \lambda \cr \cdots & \cdots & \cdots & \cdots \cr 1 & 1 & \cdots & n - \lambda \cr \end{pmatrix} \quad \text{第 } n \text{ 列にその他の列を加える} \cr & = \det \begin{pmatrix} - \lambda & 0 & \cdots & 0 \cr 0 & - \lambda & \cdots & 0 \cr \cdots & \cdots & \cdots & \cdots \cr 1 & 1 & \cdots & n - \lambda \cr \end{pmatrix} \quad \text{第 } n \text{ 行をその他の行から引く} \cr & = (-1)^n \lambda^{n-1} (\lambda - n) \end{aligned}

故に固有値は λ=0 (n1重解)\lambda = 0\ (n - 1 \text{重解})λ=n\lambda = n である。 A(AnI)=0A(A - n I) = 0 (最小多項式!) より、 X1=AnI\bm{X}_ 1 = A - n I の各列は λ=0\lambda = 0 に属す固有ベクトルであり、 X2=A\bm{X}_ 2 = A の各列は λ=n\lambda = n に属する固有ベクトルである。 X1\bm{X}_ 1 のランクは n1n-1 であり、 X2\bm{X}_ 2 のランクは 11 である。 X1\bm{X}_ 1 から1次独立な n1n-1 個の固有ベクトルを、 X2\bm{X}_ 2 から1つの固有ベクトルを選ぶ。 X1\bm{X}_ 1 から1次独立な n1n-1 個の固有ベクトルを選ぶ方法は nn 通りあるが、 X2\bm{X}_ 2 から1つの固有ベクトルを選ぶ方法は1通りしかない。 したがって、 nn 個の1次独立な固有ベクトルの組は nn 組ある。 そのうちの1つの組は、次の行列の列ベクトルの組である。

P=(1n111111n111111n111111n111111)P = \begin{pmatrix} 1-n & 1 & 1 & \cdots & 1 & 1 \cr 1 & 1-n & 1 & \cdots & 1 & 1 \cr 1 & 1 & 1-n & \cdots & 1 & 1 \cr \vdots & \vdots & \cdots & \ddots & \cdots & \vdots \cr 1 & 1 & 1 & \cdots & 1-n & 1 \cr 1 & 1 & 1 & \cdots & 1 & 1 \cr \end{pmatrix}

この PP による相似変換により、 AAP1AP=diag 0,0,,0,n P^{-1} A P = \text{diag}{\ 0, 0, \cdots , 0, n \ } と対角化される。21)21)

21)^{21)} これは 4.1.4 節の対角化の一例である


問題 4-19

nn 次実対称行列

A=( aij )ただしaij=2n+1sin[ijπn+1]A = (\ a_{ij}\ ) \qquad \text{ただし} \qquad a_{ij} = \sqrt{\frac{2}{n + 1}} \sin \left[ \frac{ij \pi}{n + 1} \right]

の固有値は λ=±1\lambda = \pm 1 であることを証明せよ。 また、固有ベクトルを求めよ。

[解]

特性多項式は、 m=[ (n+1)/2 ]m = [\ (n + 1) / 2\ ] (ガウスの記号) とすると、

det(AλI)=(1λ)m(1+λ)nm\det(A - \lambda I) = (1 - \lambda )^m (1 + \lambda)^{n-m}

である。 すなわち、 λ=1\lambda = 1mm 重根、 λ=1\lambda = -1nmn - m 重根である。 このことは、恒等式

sini(n+1k)πn+1=(1)i+1sinikπn+1\sin \frac{i(n + 1 - k) \pi}{n + 1} = (-1)^{i+1} \sin \frac{ikπ}{n + 1}

など を用いて示すことができる。 または、恒等式

k=1nsinikπn+1sinjkπn+1=n+12δij\sum_{k=1}^{n} \sin \frac{ik \pi}{n + 1} \sin \frac{jk \pi}{n + 1} = \frac{n + 1}{2} \delta_{ij}

を用いて A2=IA^2 = I 、すなわち、 A=A1=AA = A^{-1} = A^\top が得られ、 AA は実対称直交行列である。 AA の固有ベクトルを x\bm{x} 、固有値を λ\lambda とすると、 Ax=λxA \bm{x} = \lambda \bm{x} であるから、

A2x=λ2xおよびA2x=Ix=xλ=±1A^2 \bm{x} = \lambda^2 \bm{x} \quad \text{および} \quad A^2 \bm{x} = I \bm{x} = \bm{x} \qquad \therefore \quad \lambda = \pm 1

A2I=(AI)(A+I)=0A^2 - I = (A - I)(A + I) = 0 22)22) より、 X1=A+IX_1 = A + IX2=AIX_2 = A - I と置くと、 X1X_1 および X2X_2 の列ベクトルは、それぞれ λ=1\lambda = 1 および 1-1 に属する固有ベクトルである。 X1X_1 のランクは mmX2X_2 のランクは nmn-m であるから、1次独立な nn 個の固有ベクトルは、

xi=(a1ia2iai1 iaii+1ai+1 iani)1im=(a1ia2iai1 iaii1ai+1 iani)m+1in\begin{aligned} \bm{x}_ i & = \begin{pmatrix} a_{1i} & a_{2i} & \cdots & a_{i-1\ i} & a_{ii} + 1 & a_{i+1\ i} & \cdots & a_{ni} \end{pmatrix}^\top & & 1 \leqq i \leqq m \cr & = \begin{pmatrix} a_{1i} & a_{2i} & \cdots & a_{i-1\ i} & a_{ii} - 1 & a_{i+1\ i} & \cdots & a_{ni} \end{pmatrix}^\top & & m + 1 \leqq i \leqq n \end{aligned}

と選べる。 mm 個は λ=1\lambda = 1 、残りは λ=1\lambda = -1 の固有ベクトルである。

いま、対角行列 DDD=diag 1, 1, 1, , 1m, 1, , 1nm D = \text{diag} {\ \underbrace{1,\ 1,\ 1,\ \cdots,\ 1}_ {m \text{個}},\ \underbrace{-1,\ \cdots,\ -1}_ {n-m \text{個}}\ } とすると、以上の固有ベクトルを用いてつくった行列は、 X=(x1x2xmxm+1xn)=A+DX = \begin{pmatrix} x_1 & x_2 & \cdots & x_m & x_{m+1} & \cdots & x_n \end{pmatrix} = A + D である。 このとき、 AX=A(A+D)=I+AD=(A+D)D=XDA X = A(A + D) = I + AD = (A + D)D = XD 、故に、 X1AX=DX^{-1} A X = DAAXX により対角化される。23)23)

22)^{22)} すなわち、最小多項式は φ(λ)=λ21\varphi(\lambda) = \lambda^2 - 1
23)^{23)} これも 4.1.4 節の対角化の一例である