究進塾

ブログ

BLOG

今回は、線形代数学の解説の第7回目です。行列の対角化の続きで、対角化を別のアプローチから見ていく解説となります。

前回までの内容

行列の対角化に関する話のうち、計算方法はひとまず一通り解説しましたが、「どういう時に対角化ができるのか、本当は対角化を計算する前から知りたい」と思いますので、そのために対角化を別のアプローチから考えていきます。

しかしながら、これがまた準備がいろいろと必要だったり、証明がそこそこ面倒です。また、今まで行列に対してちゃんと計算方法や「こういうのあるよ」という事例にもあまり触れてきませんでした。

今回はそのための「準備編」と銘打って、行列の操作について、まとめて解説します。

対角化のもう一つのアプローチ 準備編

特定の条件満たす行列に対して、「こういう行列を〇〇と言う」のように、名称がついているものがたくさんあります。それらをまずは準備しておきます。

色々な理由があって、行列の成分は実数だけに限らず複素数で考えた方が、今後便利なことが多くあります。その主な理由としては、例えば行列に対する固有方程式を考えた時に、「それの解=0となるような解を探す」というのを対角化の時にやりましたが、その時は表立ってそういうことを解説しませんでした。

固有方程式に実数の範囲で解がない可能性というは、普通あり得るんです。固有方程式を計算したら、例えば「\(x^2+1=0\)になりました」みたいなことがあったりします。そういう場合は、解が\(± \ i\) 、虚数単位を使ってこのようになったりします。

そういうわけで、実数の範囲だと「固有方程式がそもそも解けない」みたいな状況が起こりますので、対角化というのを考えると、数値の世界というのは、複素数で考えておいた方が何かと便利です。

そのため、複素数の場合の話を少ししておきます。

行列に関するあれこれ

行列\(A\)に対し\({}^t \! \overline{A}\)(転置をとって、各成分の複素共役をとったもの)を\(A^*\)で表す。

 

上記について、定義が書いてありませんが、「ある行列\(A\)がある時、それに対してバー(複素共役)の転置を取って、各成分の複素共役を取ったもの」というのを、毎回書いてもいいのですが、記号が2つぐらい付いていて面倒なので、これを表すために、記号として右上に「*(アスタリスク)」というマークをつけることで表す、とします。物理では、この意味のアスタリスクを「†(ダガー)」という記号で表したりするかもしれません。

記号の使い方は、本によっても人によっても多少違ったりしますが、とりあえずここではアスタリスクを使ってこれを表すことにしておきましょう。

早速、ちょっと特別な行列「その1」ということで、まず「ユニタリ行列」というのを紹介します。

定義 1(ユニタリ行列)
複素数成分の正方行列\(U\)が\(U*U \ = \ E\)を満たすとき、\(U\)はユニタリ行列である、という。

 

複素数成分の正方行列\(U\)というのが、先程記述した「転置して複素共役をとったもの」と、元の行列をかけて単位行列となる時、ということですが、これは要するに転置を取って複素共役をとった\(U*\)が、元の行列に対して逆行列になっている時です。これを満たすとき、\(U\)はユニタリ行列であると言います。

続けてもう1つ、直交行列というものがあります。

 定義 2(直交行列)
実数成分の正方行列\(P\)が\({}^t PP \ = \ E\)を満たすとき、\(P\)は直交行列である、という。

 

実数成分の正方行列\(P\)というのが、\(P\)の転置\(×P\)とやると単位行列になります。要するに、\(P\)の転置が元の\(P\)の逆行列になっている、という状況を満たすとき、\(P\)は直交行列である、と言います。

定義1のユニタリ行列と定義2の直交行列の違いは、

ユニタリ行列:複素数成分
直交成分:実数成分

というところだけです。(厳密にいうと、記号の部分も違いますが)

これはどういうことになっているのかというと、実数成分の行列の場合、今は\(P\)というのを持ってきたので、\(P^*\)を考えてみますが、これは定義では次のようになるわけです。

\(P^* \ = \ {}^t\!\overline{p}\)

ちなみにこの「\(\overline{p}\)(バー)」というのちょっとおさらいしておくと、複素数\(1+ 2i\)があった時に、これの複素共役バー、\(\overline{1+2i}\)はどうなるかというと、\(1 \ – \ 2i\)となります。

\(\overline{1+2i}\)
\(= \ 1 \ – \ 2i\)

虚数成分の方だけ符号をマイナスにする、というのが複素共役というものです。これは、実数に対して複素共役というのを取るとどうなるかというと、\(\overline{3} \ = \ 3\)となります。

つまり実数に対しては、複素共役というのは何もしないのと一緒です。その結果、先程の\({}^t \overline{p}\)は、\(P\)の成分が全部実数だとすると、バーをとった\({}^t {p}\)と一緒になります。実数の場合、バーをとっても変わらないからです。つまり実質成分の行列に対しては、この\(p^*\)は、\(p\)の転置と意味が一緒です。

\(p^* \ = \ {}^t \overline{p} \ = \ {}^t {p}\)

実数の時、\(U*U \ = \ E\)はそのまま実数なので、\(P^*\)つまり\(P\)の転置と一緒だということで、書き換えたのが直交行列の話、ということになります。直交行列というのは、ユニタリ行列の実数バージョンのような感じ、ということがわかります。

少し例を見ておきましょう。

例)

\( U = \left (\begin{array}{crl}
1 & 0 & 0\\
0 & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\
0 & \frac{1}{\sqrt{2}}& \frac{1}{\sqrt{2}}\end{array}\right)\)

\( U^*U = \left (\begin{array}{crl}
1 & 0 & 0\\
0 & -\frac{i}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\
0 & \frac{1}{\sqrt{2}}& -\frac{i}{\sqrt{2}}\end{array}\right)
\left (\begin{array}{crl}
1 & 0 & 0\\
0 & \frac{i}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\
0 & \frac{1}{\sqrt{2}}& \frac{i}{\sqrt{2}}\end{array}\right)\)

\(= \left (\begin{array}{crl}
1 & 0 & 0\\
0 & 1 & 0\\
0 & 0 & 1
\end{array}\right)\)

よって、\(U\)はユニタリ行列である。

 

本当はもう少し複雑な式をもってきた方が良かったかもしれませんが、今回は\(U\)という行列が、\(\left (\begin{array}{crl}
1 & 0 & 0\\
0 & \frac{i}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\
0 & \frac{1}{\sqrt{2}}& \frac{i}{\sqrt{2}}\end{array}\right)\)という成分になっているものを考えてみます。

その時、\( U^*U\)というのはどうなるかというと、定義としては転置をとって複素共役する、となっているので、転置を取るというのがどういうことかというと、行列の対角線を、左上から右下に引いたときに、この線に対して右上と左下を入れ替えたもの、みたいになります。その後バー=複素共役を取ると、次のようになるはずです。⭐

\(= \left (\begin{array}{crl}
1 & 0 & 0\\
0 & -\frac{i}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\
0 & \frac{1}{\sqrt{2}}& -\frac{i}{\sqrt{2}}\end{array}\right)\)

実際に考えてみましょう。入れ替えたうえで、その後、複素共役を取ることによってマイナスがつくようになり、\(-\frac{i}{\sqrt{2}}\)、\(-\frac{i}{\sqrt{2}}\)となります。実数の箇所はそのままです。というわけでこれが\(U^*\)で、これと元の行列\(U\)、\(\left (\begin{array}{crl}
1 & 0 & 0\\
0 & \frac{i}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\
0 & \frac{1}{\sqrt{2}}& \frac{i}{\sqrt{2}}\end{array}\right)\)、これを掛け算します。

そして、これらをいつものごとく行列の計算をしていく、ということするわけです。

やってみるとすぐわかりますが、次のようになります。

\(= \left (\begin{array}{crl}
1 & 0 & 0\\
0 & 1 & 0\\
0 & 0 & 1
\end{array}\right)\)

単位行列になるので、この\(U\)という行列は定義1の条件を満たしているため、「ユニタリ行列である」と言えます。

さて、あと2つぐらい名前のついてる有名な行列を紹介しますが、次はエルミート行列です。

エルミート行列
定義 3(エルミート行列)
複素数成分の正方行列\(H\)が\(H^* \ = \ H\)を満たすとき、\(H\)はエルミート行列である、という。

 

複素数成分の正方行列\(H\)と、転置をとってバーを取ったものが、元の行列と一緒になるという条件を満たすとき、\(H\)はエルミート行列である、というふうに呼びます。

ついでに定義4として、実対称行列を紹介します。

定義 4(実対称行列)
実数成分の正方行列\(S\)が\({}^tS \ = \ S\)を満たすとき、\(S\)は実対称行列である、という。

 

実数成分の正方行列\(S\)というのが、転置\(S\)と元の\(S\)が一緒であるとき、\(S\)は実対称行列である、と言います。これも先ほどの話と同じで、複素数成分の場合はエルミート行列、実数成分の場合が実対称行列というわけです。

この\(H^*\)は、成分が全て実数の場合は\(^*S\)が「\(S\)の転置と変わらない」ということになるので、これを実数バージョンの時に、エルミート行列の条件式と同じことをそのままやっているのが実対称行列の条件式、ということになるわけです。

わざわざ「実対称行列」という名前をつけているのは、転置を取ったものが元々一緒になるので、複素の対称行列というのも定義はできます。ただ、諸々の理由があって、だいたい「転置して、さらに複素共役を取る」というのが出てくることが多いんです。

少なくとも、行列や複素数の内積がらみの話をするときは、ほとんどの場合そのようになっていて(後でまたそういう話をしますが)、単純に対象を取ったときに意味がありそうなのは、おそらく実数成分の時ぐらいじゃないかなと思うんです。

複素数成分で単に転置を取ったやつがどうのこうの…というものに何か意味あるかというと、あまり思い当たりません。(もちろん何かしらはあるかもしれません。)

というわけで、特に実数成分で転置と元のものが等しいとき、実対称行列、と言います。

例としては、次の通りです。

例)

\( H = \begin{pmatrix} 1 & 3 & 1+i \\ 3 & 2 & -1 \\ 1-i & -1 & 4 \end{pmatrix} \)

\( H^* = \begin{pmatrix} 1 & 3 & \overline{1-i} \\ 3 & 2 & -1 \\ \overline{1+i} & -1 & 4 \end{pmatrix} = \begin{pmatrix} 1 & 3 & 1+i \\ 3 & 2 & -1 \\ 1-i & -1 & 4 \end{pmatrix} = H \)

よって、\(H\)はエルミート行列である。

 

複素数成分となっているので、成分が\(\begin{pmatrix} 1 & 3 & 1+i \\ 3 & 2 & -1 \\ 1-i & -1 & 4 \end{pmatrix} \)のようになっていたりすることがあるでしょう、ということです。

これの\(H^*\)というのをとってみます。\(H\)の行列式の、対角線に沿って入れ替えたものですが、ぶっちゃけてしまうと\(H\)の\(1-i\)と\(1-i\)の部分以外は同じですので、実数の部分は普通に対称だったりします。

\(1+i\)は入れ替えると\(\overline{1-i}\)、\(1-i\)は入れ替えると\(\overline{1+i}\)と、プラスとマイナスが逆になると思います。その上で、この\(H^*\)は転置を取って、さらに全体のバーを取る、つまり複素共役を取ると、\(\begin{pmatrix} 1 & 3 & \overline{1-i} \\ 3 & 2 & -1 \\ \overline{1+i} & -1 & 4 \end{pmatrix}\)になるはずです。

本当は全部にバーをつけるべきですが、実数で複素共役は「取っても変わらない」というのがあるので、ついていないものは取っても取らなくてもそのまま3だし1だし…という感じになっているわけです。なので、実際これの影響を受けるのは\(\overline{1-i}\)と\(\overline{1+i}\)だけです。それでバーを取ってやるとどうなるかというと、\(\begin{pmatrix} 1 & 3 & 1+i \\ 3 & 2 & -1 \\ 1-i & -1 & 4 \end{pmatrix}\)となるわけです。\(i\)のところの符号が逆になります。

これを元の\(H\)と見比べてみると、元の\(H\)と等しいので、この行列はエルミート行列です。

行列のブロック計算

続いて、「行列のブロック計算」という、知っていると便利なものがあるので、覚えておいてください。

行列\(A×B\)というのをやる時に、普通、下記のように\(A\)と\(B\)の行列を並べました。

\(A \ = \left (\begin{array}{crl}
-2 & 2 & 4\\
-2 & 3 & 2\\
-2 & 1 & 4
\end{array}\right)\) \(B \ = \ \left(\begin{array}{crl}
3 & 1 & 2\\
-1 & -1 & 3\\
4 & 5 & 2
\end{array}\right)\)

\(
\begin{aligned}
AB &= \begin{pmatrix} -2 & 2 & 4 \\ -2 & 3 & 2 \\ -2 & 1 & 4 \end{pmatrix} \begin{pmatrix} 3 & 1 & 2 \\ -1 & -1 & 3 \\ 4 & 5 & 2 \end{pmatrix}
\end{aligned}
\)

 

これを今までやってきたように、下図のように掛けると計算できる、ということでした。

この\(A\)、\(B\)というのを「ブロック分けする」ということができたりします。

3\(×\)3行列ですが、上の図のように線を入れて4つのパーツに切り分けます。そして、この切り分けたものに名前つけておきましょう。\(A\)の行列は次のように示します。

\(= \left(
\begin{array}{crl}
a & b \\
c
\end{array}
\right)\)

このようにすると、右下の部分だけ3、2、1、4の2\(×\)2の行列になっているので、行列だけは大文字で書いてみましょう。

\( = \left( \begin{array}{cc}
a & b \\
c & D
\end{array} \right) \)

ブロック分けすることによって、こんなふうに見えてきます。\(a\)は数字、\(b\)と\(c\)はベクトル、\(D\)は行列、となっているのでややスッキリはしないのですが、\(B\)の行列も同じような感じでやっておくと、次のようになります。

\(= \left(\begin{array}{crl}
e & f\\
g & H
\end{array}\right)\)

このようになったとき、2\(×\)2の行列のときの計算は、次のようになっていました。

\(= \left(\begin{array}{crl}
a & b\\
c & d
\end{array}\right) \left(\begin{array}{crl}
e & f\\
g & h
\end{array}\right)\)

\(= \left(\begin{array}{crl}
ae \ + \ bg & af+bh\\
ce \ + \ dg & cf \ + \ dh\\
\end{array}\right)\)

話を分かりやすくするために正方行列の場合の話をしますが、このように\(A\)の行列と\(B\)の行列を同じ感じでブロック分けして切り分けたとき、この行列\(A×B\)を掛けると次のようになることが知られています。

\(= \left( \begin{array}{cc} -2 \cdot 3 + \begin{pmatrix} 2 & 4 \end{pmatrix} \begin{pmatrix} -1 \\ 4 \end{pmatrix} & -2 \begin{pmatrix} 1 & 2 \end{pmatrix} + \begin{pmatrix} 2 & 4 \end{pmatrix} \begin{pmatrix} -1 & 3 \\ 5 & 2 \end{pmatrix} \\ \begin{pmatrix} -2 \\ -2 \end{pmatrix} \cdot 3 + \begin{pmatrix} 3 & 2 \\ 1 & 4 \end{pmatrix} \begin{pmatrix} -1 \\ 4 \end{pmatrix} & \begin{pmatrix} -2 \\ -2 \end{pmatrix} \begin{pmatrix} 1 & 2 \end{pmatrix} + \begin{pmatrix} 3 & 2 \\ 1 & 4 \end{pmatrix} \begin{pmatrix} -1 & 3 \\ 5 & 2 \end{pmatrix} \end{array} \right) \)

 

これは何をやっているかというと、この\(-2・3+(2 \ 4)\left(
\begin{array}{crl}
-1 \\
4
\end{array}
\right)\)というものですが、下図のように、先程ブロック分けした行列の\(B\)の列と\(A\)の行を掛けている、ということをしています。

ただ掛けるだけだったら、普通に3\(×\)3の掛けているのと同じになりますが、下図の青線で囲った部分を1つのパーツと考えて計算している、という感じです。

\(-2×3\)と、Aの青枠Bの青枠を掛ける、ということを、ここでやっているわけです。これはつまりどういうことかというと、ブロック分けした時の\(ab\)と\(eg\)を掛けた感じです。そういうわけで、この名前を使うならば、\(ae \ + \ bg\)となります。

他のところも同じような感じでやります。2列目のところを同じようにやると、\(af \ + \ bH\)となります。2\(×\)2の行列を掛け算した時に、\(af \ + \ bH\)というのは、\(-2 \begin{pmatrix} 1 & 2 \end{pmatrix} + \begin{pmatrix} 2 & 4 \end{pmatrix} \begin{pmatrix} -1 & 3 \\ 5 & 2 \end{pmatrix} \\ \begin{pmatrix} -2 \\ -2 \end{pmatrix}\)の部分になります。

実際、\(a\)というのは\(-2\)で、 \(f\)は\((1 \ 2)\)という横ベクトルで、\(b\)は\((2 \ 4)\)という横ベクトル、\(H\)は\(\begin{pmatrix} -1 & 3 \\ 5 & 2 \end{pmatrix} \\ \begin{pmatrix} -2 \\ -2 \end{pmatrix}\)の行列になります。

\(\begin{pmatrix}a&b\\c&d\end{pmatrix} \begin{pmatrix}e&f\\g&h\end{pmatrix}\)を掛け算しますが、これが普通に2\(×\)2の行列である場合なら、普通に実数だったので掛ける順序はどうでもよかったのですが、区分けしているものの場合は、ベクトルだったり行列だったりするので、掛ける順序が逆だと全く意味が変わってしまいます。なので、とにかく\(\color{blue}{a \ b}\)が左側、\(\color{red}{f \ H }\)が右側にいる、という状態で掛けてあげると、ちゃんと計算結果が合うようになっています。

\(\color{blue}{a} \color{red}{f} \ + \ \color{blue}{b} \color{red}{H}\)

全く同じようにして、次の行の\(\begin{pmatrix} -2 \\ -2 \end{pmatrix} \cdot 3 + \begin{pmatrix} 3 & 2 \\ 1 & 4 \end{pmatrix} \begin{pmatrix} -1 \\ 4 \end{pmatrix}\)は、\(cD \ × \ eg\)なので\(ce \ + \ Dg\)になるはずです。

そして一番最後の部分\(\begin{pmatrix} -2 \\ -2 \end{pmatrix} \begin{pmatrix} 1 & 2 \end{pmatrix} + \begin{pmatrix} 3 & 2 \\ 1 & 4 \end{pmatrix} \begin{pmatrix} -1 & 3 \\ 5 & 2 \end{pmatrix} \)は\(cD\)と\(fH\)を掛けたものになるので、\(cf \ + \ DH\)になります。

このようなことが成り立ちます。

実際、これらは普通に行列だと思って計算していくと、\(-2・3+(2 \ 4) \left(
\begin{array}{crl}
-1 \\
4
\end{array}
\right)\)は\(-6\)と、\(-2\)と、\(4 \ × \ 4 \ = \ 16\)なので\(+8\)になる、というように計算していくと、次のようなベクトルになります。

\(= \left(
\begin{array}{c@{\quad}c}
\begin{array}{c} 8 \end{array} & (\, 16 \quad 10 \,) \\[0.2em]
\begin{pmatrix} -1 \\ 9 \end{pmatrix} & \begin{pmatrix} 5 & 9 \\ 17 & 7 \end{pmatrix}
\end{array}
\right)\)

 

これは()がついている状態ですが、実際には行列として見ると次のようになります。

\(\left(
\begin{array}{crl}
8 & 16 & 10 \\
-1 & 5 & 9 \\
9 & 17 & 7
\end{array}
\right)\)

 

このように、正方行列同士の掛け算というのは、右と左を同じようにブロック分けして、右と左の切り方を一緒にしておけば、必ず計算ができるようになります(ただし、このブロック分けの仕方というのは、ちゃんと計算できるようになっている必要があります)。

こうして4つのブロックに分けた上で、2\(×\)2行列の掛け算をするのと同じような調子で計算することができる、というのが知られております。

実際に\(A\)の行列と\(B\)の行列を普通に 3\(×\)3行列だと思って掛け算してみると「本当に出来上がりの形と同じになるのか」というのを、試しにやってみてください。

複素ベクトルの内積とエルミート行列

さて、続いて複素ベクトルの内積とエルミート行列の関係という話をします。

ベクトルの内積を計算する時に、今までは、実数のベクトルで考えていることが多かったのではと思いますが、先ほど言った通り、複素成分の行列を考えるとなると、ベクトルも複素数にしておいた方がいいです。

複素数のベクトルを扱う時に、内積の扱いが実数のベクトルの時と変わります。理由は色々ありますが(後で簡単に説明します)、一番大きい理由は、同じベクトル同士を内積した時に、長さの2乗になる=要するに正の実数(0以上の実数)になってほしいので、そのためには少し工夫をしておかないといけません。

さて、複素ベクトル空間の内積の定義をご紹介しておきます。抽象内積の特別な場合として、標準内積の話をしておきます。

定義 5(複素ベクトル空間の内積)

\(V\)を複素数体\(C\)上のベクトル空間とする。このとき写像\((. , .):V×V \ → \ C\)が

ⅰ)任意の\(v_1、v_2、v_3、∈ V\)に対し、\((v_1+v_2, v_3)=(v_2, v_3)\)

ⅱ)任意の複素数\(c\)および任意の\((v_1, cv_2)=c(v_1, v_2)\)

ⅲ)任意の\(v_1, v_2 ∈ V\)に対し、\((v_2, v_1)=\mathbf{v}_1, \mathbf{v}_2\)

ⅳ)任意の\(v ∈ V\)に対し、\((v, v)≧0\)が成り立ち、しかも\((v,v)=0\)ならば\(v = 0\)

を満たすとき、\((., .)\)を\(V\)上の複素内積という。

 

\(V\)というのを複素数体\(C\)上のベクトル空間(スカラーを複素数とするようなその上のベクトル空間)とします。この時、この\(V\)2つ組に対して複素数を対応させる写像というのが、上記の4つの条件を満たす時、この写像のことを複素内積(\(V\)上の複素内積)と言います。

1つずつ条件を見ていきます。

ⅰ)「第1成分について線形性持っている」という条件です。第2成分についても線形性持ちますが、ⅲ)の条件と組み合わせると一緒の結果になるので、とりあえず最低限で書いておくと、左辺に対して右辺へ分配できる、ということです。実際、\(v_1\)と\(v_2 +v_3\)の内積というのも、\(v_1×v_2\)と\(v_1×v_3\)、というようにできるのですが、数学では、定義の時はなるべく必要最低限で書くので、とりあえずこれだけ書いておきます。

ⅱ)任意の複素数\(C\)および任意のベクトル\(v_1v_2\)に対して、\(v_1\)と\(C\)倍の\(v_2\)の内積が\(v_1\)と\(v_2\)の内積の\(C\)倍と等しくなります。2番目のベクトルを\(C\)倍したものがこのようになると書いてありますが、これも本によって流儀が違ってきます。これはどちらかというと物理寄りの方法です。数学の場合は最初に\(c_1\)がついているかもしれません。第1成分の\(c_1(v_1×v_2)\)というのが\(c(v_1, \ v2)\)となる形の方が数学ではよく使うかもしれませんが、行列を使って考える時は、先ほど言ったエルミート行列などとの兼ね合いがあって、おそらくこちらの方が綺麗だと思います。

ⅲ)2つのベクトルに対して、掛け算の順序変えたとします。\(v_2×v_1\)というのが、\(v_1×v_2\)の複素共役になります。これは、実数の時の内積にはなかった性質だと思います。実数の時の内積の場合は、順序入れ替えても値が変わらない=「対称性がある」という条件がありましたが、複素数の内積は対称性がありません。入れ替えると複素共役になってしまいます。そのため、正確には元の数字と少し違う可能性があります。ちなみに、この内積を取ったものが実数になっていた場合は、バーを取っても変わらないので、その時は対称になっています。

ⅳ)任意の\(v\)に対して\(v\)自身の内積を取ったものが実数になってしかも0以上である、というのが成り立つ必要があります。実数になるというのは\((v_2, v_1)=\mathbf{v}_1, \mathbf{v}_2\)が要請してあると言えます。\(v×v\)と\((v, \ v)\)が同じベクトルだとすると、入れ替えても全く同じものになりますが、ということは条件ⅲ)とⅳ)があると、\((v, v)\)を入れ替えると複素共役になるため、\(=\mathbf{v}, \mathbf{v}\)となります。ということはどういうことかというと、複素共役を取っても変わらないということは、実数だということになります。というわけで\(v×v\)が実数だということはⅲ)から言えるのですが、これだと少し弱いです。「実数でマイナスになってはいけない」という条件が欲しいです。ちなみにマイナスになるのを許すとなると、通常の内積ではありません。「ミンコフスキー内積」というものになります。相対論などでは、もしかすると使うかもしれません。とにかく、同じベクトルについて、同じベクトル同士をかけたものが0以上の実数になるということが成り立ち、しかもさらに、正定値性(もしそれが0になるするとするならば、それはこのベクトル\(v\)が0ベクトルの時に限る)を要請してあげると、これで、複素数の内積が定義できます。

ⅲ)とⅱ)を合わせて使うとどうなるかというと、次のようなことが分かります。

\(cv_1\)と\(v_2\)をかけたものがどうなるか、ということを書いてみます。

\((cv_1,  \ v_2) \ = \ \mathbf{(v_1,cv_2)}\)

そして後ろの方の「〇〇倍」というのは、ⅱ)の条件から前に出せるので、右辺は次のように化けます。

\(c(v_2, \ v_1)\)

これは、元の右辺が全体にバーがかかっているので、これもバーということになります。

\(\mathbf{c(v_2,v_1)}\)

ということは、\(c\)のバーと\(v_2×v_1\)のバーと\(\mathbf{c}(v_1, v_2)\)は等しくなりますが、\(v_2×v_1\)のバーは\(v_1,v_2\)となります。

\(cv_1, v_2) = \mathbf{v}_1, \mathbf{cv}_2 = c(v_2,v_1)\mathbf{v}_1, \mathbf{c}(v_1, v_2)\)

というわけで、\(cv_1\)と\(v_2\)の内積は、\(c\)の前のほうにかかっている数字を出した時は、複素共役になって出てきます。

この辺りが、慣れるまで「気持ち悪い」と思うかもしれませんが、複素数の世界だと色々な理由で、こうなっていてくれないとうまくいきません。

例)

さて、実際どんな感じになるのかを少し計算してみましょう。

\(n\)次元の複素数の数空間、\(c_n\)を考えてみましょう。そこからベクトルを取ってきます。そのため、\(n\)個の成分、複素数の成分で次のように書けます

\(\mathbf{v}_1 = \begin{pmatrix} z_1 \\ z_2 \\ \vdots \\ z_n \end{pmatrix} , \mathbf{v}_2 = \begin{pmatrix} w_1 \\ w_2 \\ \vdots \\ w_n \end{pmatrix}\) とする。

 

これらは、複素数上のベクトル空間としては標準規定 \(\mathbf{e}_1 = \begin{pmatrix} 1 \\ 0 \\ \vdots \\ 0 \end{pmatrix} , \mathbf{e}_2 = \begin{pmatrix} 0 \\ 1 \\ \vdots \\ 0 \end{pmatrix} , \dots , \mathbf{e}_n = \begin{pmatrix} 0 \\ 0 \\ \vdots \\ 1 \end{pmatrix}\) 、こういうもの使うと、\(z_1\)倍の\(e_1 + z_2\)倍の\(e_2 + …+z_n\)倍の\(e_n\)のように書けます。\(v_2\)の方も全く同じで、\(w_1\)倍の\(e_1 + w_2\)倍の\(e_2 + …+ w_n\)倍の\(e_n\)と書けます。

標準基底 \(\mathbf{e}_1 = \begin{pmatrix} 1 \\ 0 \\ \vdots \\ 0 \end{pmatrix} , \mathbf{e}_2 = \begin{pmatrix} 0 \\ 1 \\ \vdots \\ 0 \end{pmatrix} , \dots , \mathbf{e}_n = \begin{pmatrix} 0 \\ 0 \\ \vdots \\ 1 \end{pmatrix}\) を用いると、

\(\mathbf{v}_1 = \sum_{j=1}^n z_j \mathbf{e}_j, \mathbf{v}_2 = \sum_{k=1}^n w_k \mathbf{e}_k\) と表せる。

 

さて、この2つのベクトルの、複素の内積を考えてみましょう。

このとき、

\((v_1, \ v_2) \ = \ (\displaystyle \sum_{j=1}^{n}z_je_j, \ \displaystyle \sum_{k=1}^{n}w_ke_k)\)

 

先ほどの条件ⅱ)(=ばらすことができる、定数倍を前に出すことができる)を使って全部ばらしていくと、次のようになります。

\(= \displaystyle \sum_{j=1}^n \displaystyle \sum_{k=1}^n \overline{z_j} w_k (e_j, e_k) \)

 

これを「ちょっと難しい」と感じた方は、3個ぐらい、あるいは2次元でもいいです。「2次元の時にどうなるか」というのを、ちょっと計算してみてください。

これは実は、行列記法で書くと下記と同じになります。

\(=(\overline{z_1},\overline{z_2}, \ …, \ \overline{z_n})
\left(
\begin{array}{crl}
(e_1, \ e_1) & (e_1, \ e_2) & \dots & (e_1, \ e_n) \\
(e_2, \ e_1) & (e_2, \ e_2) & \dots & (e_2, \ e_n) \\
\vdots & & \ddots \\
(e_n, \ e_1) & (e_n,  e_2) & \dots & (e_n, \ e_n)
\end{array}
\right) \left(
\begin{array}{crl}
w_1 \\
w_2 \\
\vdots \\
w_n
\end{array}
\right)\)

 

\(\overline{z_1}, \overline{z_2}, \dots, \overline{z_n}\)という横ベクトルと、\(ij\)成分が\(e_1×e_j\)となっている内積の\(n×n\)行列\(×\)、\(\left(
\begin{array}{crl}
w_1
w_2, \\
\vdots \\
w_n
\end{array}
\right)\)と書けます。これも後で確かめてみてください。

さて、毎回\(\begin{pmatrix}
(\mathbf{e}_1, \mathbf{e}_1) & (\mathbf{e}_1, \mathbf{e}_2) & \dots & (\mathbf{e}_1, \mathbf{e}_n) \\
(\mathbf{e}_2, \mathbf{e}_1) & (\mathbf{e}_2, \mathbf{e}_2) & \dots & (\mathbf{e}_2, \mathbf{e}_n) \\
\vdots & & \ddots & \\
(\mathbf{e}_n, \mathbf{e}_1) & (\mathbf{e}_n, \mathbf{e}_2) & \dots & (\mathbf{e}_n, \mathbf{e}_n)
\end{pmatrix}\)と書くのは面倒なので、\(H\)と置きます。

そうすると、内積の条件、\((e_k, e_j)\)の順序をひっくり返すと、\(\overline(e_j, e_k)\)はバーになります。

ちょうど、行列の1行2列目と、2行1列目、ここが掛ける順序をひっくり返したものになっています。内積の条件的に\((e_k, \ e_j)\)というのがバーを取ったものと一緒になるので、実はこの\(H\)は転置を取ってバーを取ると、元の行列と全く一緒のものになります。

なので、行列の部分を\(H\)と置くと、必ずエルミート行列になります。そういうわけで、実はエルミート行列というのは複素内積と関係する概念です。

ここで\(H := \begin{pmatrix}
(\mathbf{e}_1, \mathbf{e}_1) & (\mathbf{e}_1, \mathbf{e}_2) & \dots & (\mathbf{e}_1, \mathbf{e}_n) \\
(\mathbf{e}_2, \mathbf{e}_1) & (\mathbf{e}_2, \mathbf{e}_2) & \dots & (\mathbf{e}_2, \mathbf{e}_n) \\
\vdots & & \ddots & \\
(\mathbf{e}_n, \mathbf{e}_1) & (\mathbf{e}_n, \mathbf{e}_2) & \dots & (\mathbf{e}_n, \mathbf{e}_n)
\end{pmatrix}\)と置くと、条件ⅱ)により、\((e_k, e_j)=(e_j, e_k)\)となるので、\(H\)はエルミート行列となる。

 

というわけで、複素内積というのは、ベクトルの基底に関する成分表示というのと、とあるエルミート行列\(H\)を使って、\(v_1\)と\(v_2\)が、先程出てきた横にずらっと並んでいるものも、縦ベクトルの\(v_1\)を転置を取って、そこから複素共役を取ったものになっていました。なので、\(v*1Hv_2\)(これは縦の普通のベクトル)と表すことができます。

ちなみに、この内積の取り方は、どれをどう掛けたらどうなるかというのを、実は割と自由に決めることができます。そういうわけで、複素内積というのは行列がどうなるかをエルミート行列の範囲内で自由に選ぶことができます。選んだものによって複素内積は色々変わります。

つまり、複素内積は成分表示とエルミート行列\(H\)を使って

\((v_1, v_2) = v*1Hv_2\)

と表すことが出来る。逆に、任意のエルミート行列\(H\)に対して、上のように定義した写像(., .)は複素内積の条件を全て満たすことが示せる。

 

そのため、複素内積はものすごく種類があります。ですが、その中で特に\(H\)として単位行列、斜めが1、1、1、1、1となっていて、残りの部分が全て0となっている形を選んだ場合、これもエルミート行列ですが、これを選んで作った内積が、次のようになります。

 特に、\(H \ = \ E\)として定義した複素内積:

\((\mathbf{v}_1, \mathbf{v}_2) = \mathbf{v}_1^* \mathbf{v}_2 = (\overline{z_1}, \overline{z_2}, \dots, \overline{z_n})
\begin{pmatrix}
w_1 \\
w_2 \\
\vdots \\
w_n
\end{pmatrix}
= \sum_{j=1}^n \overline{z_j} w_j\)

を、標準内積という。

 

これを、複素数の世界での「標準内積」といいます。これが、\(\sum_{j=1}^n \overline{z_j} w_j\)のバーがついていなければ、よく見知った実数の時の内積になっていると思います。

ちなみにこれは実数の内積になります。この\(z\)や\(w\)は全部実数だとしたら、実数に対してはバーを取るのは意味がありません。やらなくてもやっても変わらないからです。そのため、成分同士を掛けて足していった、普通の実数の内積になります。

この辺りは、高校3年生あたりで、数Ⅲで複素数平面をやった時に、実数の時は、\(x^2\)が、絶対値\(x^2\)と等しい、となっていました。

\(x\)が実数

\(
\begin{aligned}
&\Rightarrow |x|^2 = x^2 \\
z \in \mathbb{C} \\
\end{aligned}
\)

このようになっていたと思います、\(z\)が複素数の時だと、普通は\(z\)、\(\overline{z}\)と書くかもしれませんが、形を合わせて書くと次のようになります。

\(z\)←\(C\)

\(
\begin{aligned}
\Rightarrow |z|^2 = \overline{z}z
\end{aligned}
\)

実数の場合だとバーを取るのは意味がないために2乗で良かった、となっていたかと思います。これは複素数の内積に移ってきた際、その辺りの事情が関わってきて、複素数、複素共役を入れないといけません。

今、\(v_1*v_2\)という標準内積を\(\sum_{j=1}^n \overline{z_j} w_j\)のようにすると言いましたが、「複素共役を取らなければいけない理由」が何となく分かるのではないかと思います。複素共役を取ってやることによって、同じベクトル同士を掛けた時に、正の実数になります。

これを、複素共役を取らないで、ただ掛け算して足していくことになると、成分が複素数になってる時に、ちゃんと実数になってくれないことが分かります。

定理6(コーシー・シュワルツの不等式)

最後に、この一般的な抽象内積の定義から言えることを、1つ簡単に紹介します。

定理6(コーシー・シュワルツの不等式)

任意の複素内積\((., .)\)に対し、

\({|(v_1, \ v_2)|}^2≦(v_1, \ v_1)(v_2, \ v_2)\)

が成り立つ。

 

任意の複素内積というのは、エルミート行列の取り方によって色々変わりますが、どんなものを選んだとしても\(v_1\)と\(v_2\)の内積は、一般に複素数のため、絶対値を取ったものの2乗したものが、\(≦\)で\(v_1\)同士の内積と\(v_2\)同士の内積の掛けたもの以下、というのが成り立つ、という定理が知られています。

絶対値などを導入していませんでしたが、実数の時のベクトルと同じで、絶対値\(v\)の長さというのも、複素ベクトルの場合でも次のように定義する、となっています。

\(|v| \ = \ \sqrt{(v, v)}\)

同じベクトル同士の内積を取ったものは、正または0の実数になることがⅳ)の条件で分かっているので、ルートを取っても問題ありません。ルートを取っても、正または0の実数が出てくるので、それを\(v\)の長さと呼ぶことになっています。ここのところは少し見方が微妙ですが、それぞれ「\(v\)の長さの2乗」と「\(v^2\)の長さの2乗」になっています。

これは全てに2乗がついていますが、ルートを取るとよく知ってる通りの「内積を取ったものの絶対値」が、それぞれのベクトルの長さを掛けたもの以下、と出てくると思います。

実数の時には、次のように考えればよかったはずです。

\({|v_1 + t v_2|}^2\)
\(={|v_1|}^2 \ + \ 2tv_1・\ v_2 \ + \ t^2{|V_2|}^2\)

これが長さだから0以上なので、下記のようになります。

\(0≦{|v_1 + t v_2|}^2\)
\(={|v_1|}^2 \ + \ 2tv_1・\ v_2 \ + \ t^2{|V_2|}^2\)

そうすると、\(t\)の実数を色々動かした時に、\(t\)の2次関数のように見えますが、この\(t\)の2次関数が常に0以上と言っているので、横軸に\(t\)を取って書くと、次のような図になります。

もしくは次のようになります。

そのため、判別式が0か、もしくはマイナスということが言えます。

\(0≦{|v_1 + t v_2|}^2\)
\(={|v_1|}^2 \ + \ 2tv_1・\ v_2 \ + \ t^2{|V_2|}^2\)

\( \ \ \ \ ⇩ \ \ \ \)

\(D \ ≦ \ 0\)

そのことから定理6が出せます。ですが、これは複素内積の時に同じことをしようとすると、実はここまで言えません。少し小細工をする必要があります。せっかくなので、その証明を紹介していきます。

証明は次のようになります。

証明

\(v_2 \ = \ 0\)の時は左辺、右辺ともに0となり成立するので、\(v_2 \ ≠ \ 0\)のときに証明すれば良い。このとき条件ⅳ)により、\((c_2, v_2)\)は正の実数になる。

\(0≦ \left( v_1 \ – \ \frac{\overline{(v_1, \ v_2)}}{(v_2, \ v_2)}v_2, \ v_1 \ – \ \frac{\overline{(v_1, \ v_2)}}{(v_2, \ v_2)}v_2 \right)\)

\( \  =\left( v_1, \ v_1 \ – \ \frac{\overline{(v_1, \ v_2)}}{(v_2, \ v_2)}v_2\right) \ + \ \left( -\frac{\overline{(v_1, \ v_2)}}{(v_2, \ v_2)}v_2, \ v_1 \ – \ \frac{\overline{(v_1, \ v_2)}}{(v_2, \ v_2)}v_2 \right)\)

\( \ = \ (v_1, \ v_1) \ + \ \left( v_1, \ – \ \frac{\overline{(v_1, \ v_2)}}{(v_2, \ v_2)} \ v_2 \right) \ + \ \left( -\frac{\overline{(v_1, \ v_2)}}{(v_2, \ v_2)}v_2, \ v_1 \right)+ \ \left( -\frac{\overline{(v_1, \ v_2)}}{(v_2, \ v_2)}v_2, \ -\frac{\overline{v_1, \ v_2}}{v_2, \ v_2}v_2 \right)\)

\( \ = \ (v_1, \ v_1) \ – \ \frac{\overline{(v_1, \ v_2)}}{(v_2, \ v_2)}(v_1, \ v_2) \ – \frac{(v_1, \ v_2)}{(v_2, \ v_2)}(v_2, \ v_1) \ + \ \frac{(v_1, \ v_2)}{(v_2, \  v_2)}\frac{\overline{v_1, \ v_2}}{v_2, \ v_2}(v_2, \ v_2)\)

\( \ = \ (v_1, \ v_1) \ – \ \frac{{|(v_1, \ v_2)|}^2}{(v_2, \ v_2)} \ – \ \frac{{|(v_1, \ v_2)|}^2}{(v_2, \ v_2)} \ + \ \frac, \ {{|v_1, \ v_2|}^2}{(v_2, \ v_2)}\)

\( \ = \ (v_1, \ v_1) \ – \ \frac{{|(v_1, \ v_2)|}^2}{(v_2, \ v_2)}\)

 

\(v_2\)の側が0である時、\(v_2, \ v_2\)は0になるはずです。そして\(v_1 \ × \ v_2\)で0ベクトルとなっていると、分配できる条件からでもいいし、とにかくこのベクトルが0になるということが簡単に言えます。

だから、\(v_2\)が0と分かっている時は、左辺も右辺もどちらも0になるので成り立ちます。\(0 \ ≦ \ 0\)という意味で成立するので、\(v_2\)が0の時は問題ないです。ですから\(v_2\)が0でない場合を考えてみましょう。

\(v_2\)ベクトルが0でないとすると、\(v_2 \ × \ v_2\)(いわゆる\(v_2\)の長さの2乗)は、0ではなく正の実数になります。これは条件ⅳ)から言われていることです。これが0になるのは\(v_2\)が0の時に限るので、0でなければ必ず正の実数になります。

ここで、とても天下り的なのですが、\(v_1 – \frac{(\mathbf{v}_1, \mathbf{v}_2)}{(\mathbf{v}_2, \mathbf{v}_2)} \mathbf{v}_2\)というベクトルを考えます。

\(v_2 \ × \ v_2\)が、今言った通り、0ではないので割り算しても平気です。ちなみに分母の方はスカラーであり、実数です。分子の方に\(v_1 \ × v_2\)=内積したもの(おそらく、とある複素数になるはずです)、これにバーをつけたもの、これ倍の\(v_2\)というベクトル考えて、同じベクトル2個の内積を取ったもの、というのを考えます。

「最初に思いついた人は、何を考えてこんなことしたんだろう」と思ってしまうかもしれませんが、こういうことをしようとしてるのには、一応意味があります。(意味についてはまた次回にグラムシュミット直交法で話したいと思います。)

さて、証明の計算式の1行目から見ていきます。これは内積を取りますが、両者とも同じものなので、やはり条件ⅳ)よりこれは0か、または正の実数、つまり0以上ということになります。

1行目をばらします。第1成分をばらすことができる、という条件があるので、\(v_1\)と\(-\frac{\overline{(v_1, \ v_2)}}{\overline{v_2, \ v_2}}\)倍の\(v_2\)となるように分配して掛けます。そうすると、2行目の計算式になります。

全く同様に、後ろのものも同じように分配できる、とあったので、それぞれ同様に分配してばらしていきます。そうすると3行目の計算式になります。

さらに計算していきますが、\((v_1, \ v_1)\)はこのままで良いです。\(\left( v_1, \ – \ \frac{\overline{(v_1, \ v_2)}}{(v_2, \ v_2)} \ v_2 \right) \)のところですが、\(-\frac{\overline{(v_1, \ v_2)}}{(v_2, \ v_2)}\)倍の\(v_2\)というのは、複素数の定数です。そのため、第2成分にかかっているものをそのまま外に出せます。外に出した結果、\(-\frac{\overline{(v_1, \ v_2)}}{(v_2, \ v_2)}\)倍の\((v_1, \ v_2)\)の内積、となります。

後ろの部分も同じように、邪魔な定数を出していきますが、第1成分を外に出すときは複素共役になるため、バーを取ります。複素共役を2回取ると元に戻るので、複素共役ではなくなり、バーの表記が消えます。

最後のところも外に出して、4行目の計算式が出来ます。

さらに少し計算を進めていくと、\((v_1, \ v_1)\)はそのままです。次に\(\frac{\overline{v_1, \ v_2}}{\overline{v_2, \ v_2}}\)\(× \ (v_1, \ v_2)\)となっています。\((v_2, \ v_2)\)は実数です。ということは、複素数のバーと複素数をかけたものとなり、\((v_1, \ v_2)\)の絶対値の2乗となります。

次の部分\(-\frac{(v_1, \ v_2)}{(v_2, \ v_2)}\)は複素数です。それに\(×(v_2, \ v_1)\)となりますが、これも条件がありました。\((v_2, \ v_1)\)と\(\overline{(v_1, \ v_2)}\)というのが等しい、という条件があるので、先程と同じように、\((v_1×v_2)\)の絶対値の2乗となるわけです。

最後の部分も同様です。分子同士を掛けて\((v_1, \ v_2)\)の絶対値の2乗です。分母の方は、実数\((v_2, \ v_2)\)の2乗になりますが、それに\((v_2, \ v_2)\)を掛けるので、1つは約分されて\((v_2, \ v_2)\)が残るということになります。

そうすると、5行目の計算式\(= (\mathbf{v}_1, \mathbf{v}_1) – \frac{|(\mathbf{v}_1, \mathbf{v}_2)|^2}{(\mathbf{v}_2, \mathbf{v}_2)} – \frac{|(\mathbf{v}_1, \mathbf{v}_2)|^2}{(\mathbf{v}_2, \mathbf{v}_2)} + \frac{|(\mathbf{v}_1, \mathbf{v}_2)|^2}{(\mathbf{v}_2, \mathbf{v}_2)} \)となります。見てみると、後ろの3つは、実は全く同じです。計算するとマイナスとプラスでちょうど1個分消えて、1つだけ残ることになります。そして、1番最初のところで「\(0≦\)」となっていたので、これで欲しい方程式が出ます。

最後の部分をちゃんと書くと、

\( \ = \ (v_1, \ v_1) \ – \ \frac{{|(v_1, \ v_2)|}^2}{(v_2, \ v_2)} \ → \ \frac{{|(v_1, \ v_2)|}^2}{(v_2, \ v_2)} \ ≦ \ (v_1, \ v_1)\)

となります。

この後、分母をはらいます。\((v_2, \ v_2)\)は正の数なので両辺にこれを掛けます。すると、\(≦(v_1, \ v_1)(v_2, \ v_2)\)となり、示したかった不等式が得られます。

複素数の場合、実数の時のものに比べると少し手順が難しくなりますが、やはり問題なく、こういう不等式が成り立ちます。不等式が成り立つので、内積というのに対して、いろんなことが出来るようになるわけですが、またそれは、次の機会にご紹介します。

今回の解説は以上です。

最後に、究進塾では、授業補習、中間期末テスト対策、レポート作成指導、大学院入試対策などを行っております。ご興味のある方は「無料体験授業のお申込み」からお気軽にお問い合わせください。

講師:久松真人

東京工業大学卒業。東京工業大学大学院数学研究科博士課程修了。数学に特化した講師です。大学受験はもちろん、大学授業補習、大学院入試のサポートにも熟練しています。また、大学の情報系科目のサポートも経験があります。穏やかな性格と柔らかい雰囲気、丁寧な指導、そして数学愛が溢れる、おすすめ講師です。☆大学授業補習の詳細はこちら

動画紹介
【究進塾】大学補習チャンネル
【大学数学】線形代数 第7回 -対角化のもう一つのアプローチ-(所要時間: 47分49秒


人気記事