正定値行列と半正定値行列|定義・固有値による判定・平方根
対称行列に「正の数」にあたるものを考えたい。実数の正負は の符号で決まるが、行列では二次形式 の符号がその役をする。
これが常に成り立つ行列を正定値という。正の数と同じように、逆数が取れて平方根も取れる、扱いやすい行列の一群である。
正定値の定義
実対称行列 が正定値であるとは、零でないどのベクトル に対しても が成り立つことをいう。
複素数の範囲では、エルミート行列に対して と書く。 は共役転置で、エルミート行列なら は必ず実数になるので、大小を比べられる。
が動く範囲は空間全体である。1 本でも となるベクトルが見つかれば、その行列は正定値ではない。
半正定値・負定値・不定
等号を許した が常に成り立つとき、 を半正定値という。零でない で値が 0 になることを認める点だけが違う。
不等号の向きを変えれば負定値と半負定値になる。 が正定値なら は負定値である、と読み替えてもよい。
正の値も負の値も取るときは不定という。この 4 つの型で、対称行列は残らず分類される。
例:正定値になる行列
二次形式は である。中央の項が負になっても、両側の平方の項が上回るので全体は正のままになる。
トレースが 7、行列式が 8 なので、固有値は で 2 つとも正である。
例:半正定値になる行列
二次形式は 、つまり である。負にはならないが、 の方向では 0 になる。
固有値は 0 と 2 で、0 が混ざっている。この行列は正則ではなく、逆行列を持たない。
例:不定になる行列
二次形式は である。第 1 象限では正、第 2 象限では負になるので、符号が定まらない。
固有値は 1 と で、正と負が同居している。不定であることは、この符号の混在として現れる。
対称性を前提にする理由
正定値性は対称行列に対して定義する。対称でない行列に を当てても、非対称な部分は打ち消し合って見えなくなるからである。
どんな正方行列も、対称な部分と交代的な部分に分けられる。交代的な部分 は を満たすので、二次形式には寄与しない。
したがって、非対称な行列を持ち出しても、判定しているのは対称な部分だけになる。はじめから対称な行列に限って話を進めるのが筋である。
固有値がすべて正であることと同じ
対称行列が正定値であることと、固有値がすべて正であることは同じ意味になる。判定の場面では、こちらを使うことが多い。
半正定値なら固有値は 0 以上、負定値ならすべて負、不定なら正と負が混ざる。二次形式の型と固有値の符号が、そのまま対応している。
証明:直交行列で座標を取り替える
対称行列は直交行列 で対角化できる。 が固有値を並べた対角行列になる、という事実を使う。
と座標を取り替えると、二次形式は平方の重み付き和になる。
は正則なので、 が空間全体を動けば も空間全体を動く。固有値がすべて正なら、右辺は で必ず正になる。
逆に となる固有値があれば、 を第 成分だけ 1 のベクトルに取ればよい。そのとき値は 以下となり、正定値ではなくなる。
例:固有値で判定する
トレースが 10、行列式が 9 なので、固有多項式は である。固有値は 9 と 1 で、どちらも正になる。
したがってこの行列は正定値である。成分に 4 という大きめの値があっても、対角の 5 が上回っていれば符号は崩れない。
対角成分・行列式・トレースは正になる
正定値なら対角成分はすべて正である。 を第 成分だけ 1 のベクトルに取れば、 がそのまま になるからである。
行列式は固有値の積、トレースは固有値の和なので、どちらも正になる。とくに行列式が 0 でないので、正定値行列は必ず正則である。
対角成分との間には上からの評価もある。行列式は対角成分の積を超えない、というアダマールの不等式が成り立つ。
例:対角成分が正でも正定値とは限らない
対角成分はどちらも正だが、行列式は で負である。行列式が負なら固有値の積が負なので、符号の違う固有値が混ざっている。
実際に固有値は 4 と で、この行列は不定である。対角成分だけを見て判断できないことが分かる。
平方完成で符号を読む
二次形式を平方の和に直せば、符号は係数を見るだけで決まる。1 変数の を平方完成するのと手順は同じである。
先ほどの で試す。 について平方完成すると、残りは だけの項になる。
係数の 4 と 2 がどちらも正なので、この二次形式は正定値である。平方完成の途中に現れる係数は、コレスキー分解や首座小行列式とも結びついている。
例:平方完成して確かめる
半正定値の例を平方完成してみる。 は次の形になる。
2 つ目の係数が 0 なので、 の方向では値が 0 になる。負の係数が出ないので、半正定値だと読める。
係数のどれかが負なら不定である。平方完成は、型を決めるいちばん素朴な方法だといえる。
グラム行列として書ける
正定値行列は、正則な行列 を使って の形に書ける。逆に、この形の行列は必ず正定値である。
長さの 2 乗なので 0 以上になる。 が正則なら のとき なので、値は正になる。
が正則でなければ半正定値になる。ベクトルの内積を並べたグラム行列がいつも半正定値なのは、この計算のためである。
例:B から作った行列で確かめる
は正則である。 を計算すると次の行列になる。
対角成分が正で行列式が 1 なので、固有値は 2 つとも正である。 から作った時点で、正定値になることは保証されていた。
逆行列も和も正定値
正定値行列の逆行列は、また正定値である。固有値が に変わるだけで、正であることは崩れない。
正定値行列どうしの和も正定値になる。 が 2 つの正の数の和になるので、これも符号が変わらない。
正の数を掛けても保たれる。正定値行列の集まりは、和と正のスカラー倍について閉じた形をしている。
積は正定値とは限らない
正定値行列どうしの積は、そもそも対称になるとは限らない。
右辺は対称でないので、正定値かどうかを問う土俵に乗らない。正の数の積が正になる、という感覚をそのまま持ち込むと外す。
ただし固有値はすべて正のままである。積が対称になるのは 2 つの行列が可換なときで、そのときは正定値になる。
合同変換では符号が保たれる
正則な を取って と変換しても、正定値性は変わらない。 と置けば、 が になるからである。
が正則なので、 が零でなければ も零ではない。したがって符号の型はそのまま引き継がれる。
この変換を合同変換という。相似変換とは別物で、保たれるのは固有値そのものではなく、正負の個数のほうである。
平方根がただ一つ取れる
正定値行列 には、 を満たす正定値行列 がただ一つ存在する。実数の正の平方根と同じ性質である。
作り方は固有値を経由する。直交行列で対角化し、対角成分を正の平方根に置き換えて、もとの基底に戻せばよい。
半正定値でも同じことができる。0 の固有値は 0 のままにしておけば、半正定値な平方根が得られる。
例:整数で書ける平方根
固有値は 9 と 1 だった。平方根を取れば 3 と 1 になり、同じ固有ベクトルで組み直すと次の行列が得られる。
実際に 2 乗すると となり、 に戻る。 の固有値は 3 と 1 で、こちらも正定値である。
内積を定める
正定値行列があると、新しい内積を作れる。 と定めればよい。
内積に必要な条件のうち、対称性は の対称性から、線形性は積の形から出る。残る正値性がちょうど正定値性にあたる。
が単位行列なら、ふつうの内積に戻る。正定値行列は、空間に別の長さと角度を入れる道具だと見ることもできる。
等高線は楕円になる
を満たす点の集まりを描くと、型ごとに形が変わる。正定値なら閉じた楕円、不定なら双曲線、半正定値なら平行な 2 直線になる。
<svg viewBox="0 0 460 190" width="100%" style="max-width:460px;display:block;margin:0 auto">
<line x1="25" y1="110" x2="145" y2="110" stroke="#c8c8c8" stroke-width="1"></line>
<line x1="85" y1="50" x2="85" y2="170" stroke="#c8c8c8" stroke-width="1"></line>
<ellipse cx="85" cy="110" rx="48" ry="30" fill="#1b81e0" fill-opacity="0.08" stroke="#1b81e0" stroke-width="1.5"></ellipse>
<text x="85" y="36" font-size="11" fill="#1f1f1f" text-anchor="middle">正定値</text>
<line x1="170" y1="110" x2="290" y2="110" stroke="#c8c8c8" stroke-width="1"></line>
<line x1="230" y1="50" x2="230" y2="170" stroke="#c8c8c8" stroke-width="1"></line>
<path d="M 272 62 Q 240 110 272 158" fill="none" stroke="#1b81e0" stroke-width="1.5"></path>
<path d="M 188 62 Q 220 110 188 158" fill="none" stroke="#1b81e0" stroke-width="1.5"></path>
<text x="230" y="36" font-size="11" fill="#1f1f1f" text-anchor="middle">不定</text>
<line x1="315" y1="110" x2="435" y2="110" stroke="#c8c8c8" stroke-width="1"></line>
<line x1="375" y1="50" x2="375" y2="170" stroke="#c8c8c8" stroke-width="1"></line>
<line x1="333" y1="70" x2="405" y2="70" stroke="#1b81e0" stroke-width="1.5"></line>
<line x1="345" y1="150" x2="417" y2="150" stroke="#1b81e0" stroke-width="1.5"></line>
<text x="375" y="36" font-size="11" fill="#1f1f1f" text-anchor="middle">半正定値</text>
<text x="230" y="185" font-size="11" fill="#9a9a9a" text-anchor="middle">閉じた曲線になるのは正定値のときだけ</text>
</svg>楕円になるということは、 を満たす範囲が有界だということである。どの向きへ進んでも値が増えるので、遠くまで行けない。
楕円の軸と固有値
固有ベクトルの向きが楕円の軸になり、半軸の長さは固有値から決まる。固有値 の方向では、半軸が になる。
<svg viewBox="0 0 460 220" width="100%" style="max-width:460px;display:block;margin:0 auto">
<line x1="110" y1="120" x2="350" y2="120" stroke="#c8c8c8" stroke-width="1"></line>
<line x1="230" y1="30" x2="230" y2="200" stroke="#c8c8c8" stroke-width="1"></line>
<ellipse cx="230" cy="120" rx="45" ry="70" fill="#1b81e0" fill-opacity="0.08" stroke="#1b81e0" stroke-width="1.5"></ellipse>
<line x1="230" y1="120" x2="275" y2="120" stroke="#d0562a" stroke-width="2"></line>
<line x1="230" y1="120" x2="230" y2="50" stroke="#d0562a" stroke-width="2"></line>
<text x="288" y="116" font-size="11" fill="#d0562a">1/2</text>
<text x="238" y="46" font-size="11" fill="#d0562a">1</text>
<text x="230" y="22" font-size="11" fill="#9a9a9a" text-anchor="middle">固有値が大きい向きほど、楕円は短くなる</text>
<text x="230" y="214" font-size="11" fill="#9a9a9a" text-anchor="middle">固有値 4 の向きで半軸 1/2、固有値 1 の向きで半軸 1</text>
</svg>対角行列で確かめると分かりやすい。対角成分が 4 と 1 なら二次形式は で、 方向の半軸は 、 方向は 1 になる。
固有値が大きいほど、その向きでは値が速く増える。楕円が短くなるのはそのためである。
判定のしかたの比較
手計算では、首座小行列式を左上から順に調べる方法が速い。3 次までなら行列式を 3 回計算するだけで済み、シルベスターの判定法と呼ばれる。
大きな行列ではコレスキー分解を試すほうがよい。途中で負の数の平方根が要求されたら、その時点で正定値ではないと分かる。
固有値を求める方法は確実だが、手数はいちばん多い。半正定値かどうかまで見たいときは、首座小行列式では足りず、すべての主小行列式が要る。
他の話題とのつながり
最小二乗法では という形の行列が現れる。列が一次独立なら正定値になり、正規方程式がただ一つの解を持つ。
統計では分散共分散行列が半正定値になる。分散が負にならないことが、そのまま二次形式の符号として書かれている。
多変数関数の極値判定にも使う。ヘッセ行列が正定値なら極小、負定値なら極大で、不定なら鞍点である。












