シルベスターの判定法|主小行列式で正定値性を判定する
対称行列が正定値かどうかは、左上から順に取った小行列式の符号だけで決まります。
すべてが正なら正定値、そうでなければ正定値ではありません。固有値を求める必要はなく、行列式をいくつか計算するだけで済みます。
これをシルベスターの判定法といいます。判定できるのは正定値と負定値までで、半正定値には同じ形では使えません。
<svg viewBox="0 0 460 220" width="100%" style="max-width:460px;display:block;margin:0 auto">
<text x="230" y="22" font-size="11" fill="#9a9a9a" text-anchor="middle">左上から取った入れ子の小行列が、判定の材料になります</text>
<rect x="140" y="45" width="180" height="140" fill="none" stroke="#c8c8c8" stroke-width="1"></rect>
<line x1="185" y1="45" x2="185" y2="185" stroke="#e5e5e5" stroke-width="1"></line>
<line x1="230" y1="45" x2="230" y2="185" stroke="#e5e5e5" stroke-width="1"></line>
<line x1="275" y1="45" x2="275" y2="185" stroke="#e5e5e5" stroke-width="1"></line>
<line x1="140" y1="80" x2="320" y2="80" stroke="#e5e5e5" stroke-width="1"></line>
<line x1="140" y1="115" x2="320" y2="115" stroke="#e5e5e5" stroke-width="1"></line>
<line x1="140" y1="150" x2="320" y2="150" stroke="#e5e5e5" stroke-width="1"></line>
<rect x="140" y="45" width="45" height="35" fill="#1b81e0" fill-opacity="0.3"></rect>
<rect x="140" y="45" width="90" height="70" fill="none" stroke="#1b81e0" stroke-width="1.5"></rect>
<rect x="140" y="45" width="135" height="105" fill="none" stroke="#1b81e0" stroke-width="1"></rect>
<text x="340" y="66" font-size="11" fill="#9a9a9a">1 次の小行列式</text>
<text x="340" y="101" font-size="11" fill="#9a9a9a">2 次の小行列式</text>
<text x="340" y="136" font-size="11" fill="#9a9a9a">3 次の小行列式</text>
<text x="340" y="171" font-size="11" fill="#9a9a9a">全体の行列式</text>
<text x="230" y="207" font-size="11" fill="#9a9a9a" text-anchor="middle">すべて正なら正定値です</text>
</svg>シルベスターの判定法とは
次の対称行列 に対して、左上の 次の部分だけを取り出した行列を と書きます。その行列式を首座小行列式といいます。
判定法はこうです。 が正定値であることと、 がすべて正であることは同値です。
複素数まで広げるならエルミート行列に対して同じことが成り立ちます。首座小行列式は実数になるので、符号を比べられます。
首座小行列式とは
は、第 行から第 行と、第 列から第 列だけを残した行列です。取り出す位置は左上に固定されています。
行と列を同じ番号で選ぶ小行列式を主小行列式と呼び、そのうち番号が から までそろっているものが首座小行列式です。後で見るように、この違いが半正定値の話で効いてきます。
例:2 次で確かめる
まず 2 次の行列で試します。
首座小行列式は と です。どちらも正なので正定値です。
固有値を求めると と で、確かにどちらも正になります。判定法のほうは、固有多項式を解かずに済んでいます。
例:判定に落ちる 2 次の行列
非対角成分を大きくすると事情が変わります。
は正ですが、 で負になります。この時点で正定値ではありません。
実際 を入れると、二次形式は です。負の値を取るので正定値になりようがありません。
例:3 次の判定
3 次でも手順は同じです。左上から 3 つの行列式を順に計算します。
、、 です。すべて正なので正定値と分かります。
3 つの行列式を計算するだけで済みました。固有値を求めるには 3 次方程式を解く必要があるので、手間はずいぶん違います。
例:文字を含む行列で条件を求める
成分に文字が入っていても、そのまま条件を出せます。
はつねに正です。 が正になる条件は です。
つまり のときに限り正定値です。固有値は なので、同じ条件が出ます。
3 次でも同じように進みます。対角に を並べ、 成分だけを にした行列なら、条件は から です。
必要であることの証明
が正定値なら、 も正定値です。後ろの座標を に固定したベクトルを考えると、二次形式が の二次形式に一致するからです。
正定値な行列の固有値はすべて正なので、行列式も正になります。固有値の積が行列式だからです。
したがって、正定値なら首座小行列式はすべて正です。こちらの向きは易しく片づきます。
十分であることの証明
逆向きは次数についての帰納法で示します。 がすべて正だとします。
は帰納法の仮定から正定値です。 をブロックに分け、 を軸にしてシューア補元 を作ります。
行列式はブロックごとに分かれるので です。両側が正なので が出ます。
合同変換によって は と を並べた形に移ります。どちらも正定値なので も正定値です。この筋は、コレスキー分解が最後まで進むことの証明と同じものです。
負定値は符号が交互になる
が負定値であることは、 が正定値であることと同じです。 なので、条件は符号が交互に並ぶことになります。
奇数次の首座小行列式が負、偶数次が正であれば負定値です。 次で負、 次で正、 次で負、と続きます。
<svg viewBox="0 0 460 180" width="100%" style="max-width:460px;display:block;margin:0 auto">
<text x="230" y="24" font-size="11" fill="#9a9a9a" text-anchor="middle">首座小行列式の符号のならび</text>
<text x="120" y="70" font-size="12" fill="#1f1f1f" text-anchor="end">正定値</text>
<text x="150" y="70" font-size="16" fill="#1b81e0" text-anchor="middle">+</text>
<text x="200" y="70" font-size="16" fill="#1b81e0" text-anchor="middle">+</text>
<text x="250" y="70" font-size="16" fill="#1b81e0" text-anchor="middle">+</text>
<text x="300" y="70" font-size="16" fill="#1b81e0" text-anchor="middle">+</text>
<text x="350" y="70" font-size="12" fill="#9a9a9a" text-anchor="middle">...</text>
<text x="120" y="120" font-size="12" fill="#1f1f1f" text-anchor="end">負定値</text>
<text x="150" y="120" font-size="16" fill="#9a9a9a" text-anchor="middle">-</text>
<text x="200" y="120" font-size="16" fill="#1b81e0" text-anchor="middle">+</text>
<text x="250" y="120" font-size="16" fill="#9a9a9a" text-anchor="middle">-</text>
<text x="300" y="120" font-size="16" fill="#1b81e0" text-anchor="middle">+</text>
<text x="350" y="120" font-size="12" fill="#9a9a9a" text-anchor="middle">...</text>
<text x="150" y="148" font-size="11" fill="#9a9a9a" text-anchor="middle">1 次</text>
<text x="200" y="148" font-size="11" fill="#9a9a9a" text-anchor="middle">2 次</text>
<text x="250" y="148" font-size="11" fill="#9a9a9a" text-anchor="middle">3 次</text>
<text x="300" y="148" font-size="11" fill="#9a9a9a" text-anchor="middle">4 次</text>
<text x="230" y="172" font-size="11" fill="#9a9a9a" text-anchor="middle">どちらでもなければ、正定値でも負定値でもありません</text>
</svg>例:負定値の判定
符号を反転した行列で試します。
で負、 で正です。負、正と交互に並んでいるので負定値です。
固有値は と で、どちらも負になります。
半正定値には同じ形が使えない
不等号をゆるめて「すべて 以上」にすれば半正定値の判定になる、と考えたくなります。これは成り立ちません。
首座小行列式は左上からしか取らないので、右下に隠れた負の成分を見落とすからです。
例:見落としが起きる行列
対角に と を並べた行列を考えます。
、 で、どちらも 以上です。ゆるめた条件は満たしています。
ところが を入れると二次形式は です。半正定値ではありません。
次の首座小行列式が になったせいで、そこから先の情報が消えてしまいました。左上だけを見る弱点がはっきり出た例です。
半正定値ではすべての主小行列式を見る
正しい判定は、首座に限らずすべての主小行列式を調べることです。行と列を同じ番号で選ぶ取り方を、すべて試します。
次なら 通りあります。首座小行列式の 個に比べると、ずいぶん増えます。
このすべてが 以上であることと、半正定値であることが同値です。負定値の側も同様に、奇数次が 以下、偶数次が 以上という条件になります。
例:すべての主小行列式を調べる
さきほどの で試します。第 行と第 列だけを残すと が出てきます。
主小行列式のひとつが負なので、半正定値ではないと正しく判定できました。首座だけを見たときとの違いです。
半正定値な例も見ておきます。成分がすべて の 3 次の行列では、 次の主小行列式はすべて 、 次と 次はすべて です。
どれも 以上なので半正定値です。実際、この行列の二次形式は で、負にはなりません。
対称性が前提になる
判定法は、対称行列やエルミート行列にしか使えません。対称でない行列に当てはめると、正しくない結論が出ます。
そもそも二次形式 は、 の対称部分だけで決まります。判定したいなら、先に対称部分を取り出してから使ってください。
例:対称でない行列で誤る
次の行列で確かめます。対称ではありません。
首座小行列式は 、 で、どちらも正です。判定法をそのまま使えば正定値と出てしまいます。
ところが を入れると、二次形式は です。正定値ではありません。
対称部分を作ると で、その行列式は です。こちらで判定すれば、正定値でないことが正しく分かります。
二次形式の平方完成との対応
首座小行列式は、平方完成の途中に現れる係数と結びついています。 番目の平方の係数は です。
すべての首座小行列式が正なら、この比もすべて正になります。二次形式が正の係数だけの平方和に書けるので、値は正です。
コレスキー分解の対角成分は、この比の平方根にあたります。判定法と分解が同じ計算を見ているわけです。
ほかの判定法との比較
固有値をすべて求めて正であることを確かめる方法は、意味の上ではいちばん素直です。ただし 次を超えると手では解けません。
コレスキー分解を試みる方法は、数値計算では標準です。途中で平方根の中身が負になれば、そこで正定値でないと分かります。
シルベスターの判定法は、次数が小さいときと、記号のまま議論したいときに向きます。文字を含む行列で条件を出すような場面では、この形がいちばん扱いやすくなります。
計算量
首座小行列式を 個、定義どおりに計算すると重くなります。 次の行列式それぞれに手数がかかるからです。
順に消去していけば、 回の掃き出しで全部の首座小行列式が手に入ります。上三角に直したときの対角成分の積が、そのまま各段階の行列式になるからです。
この形で計算すると、コレスキー分解とほとんど同じ手数になります。判定法が実用になるのは、この見方をしたときです。
他の話題とのつながり
正定値行列そのものの性質は正定値行列と半正定値行列の記事に、二次形式の標準形は二次形式と標準形の記事にあります。
証明に使ったシューア補元はブロック行列とシューア補元の記事で、分解との関係はコレスキー分解の記事で扱っています。
最適化では、ヘッセ行列が正定値かどうかで極小の判定をします。そこでもこの判定法が顔を出します。
例:ヘッセ行列で極小を判定する
2 変数の関数 を考えます。原点で偏微分がどちらも になります。
2 階偏導関数を並べたヘッセ行列は、定数行列になります。
首座小行列式は と で、どちらも正です。したがって は正定値で、原点は極小になります。
高校で習う判別式 と は、この判定法を 2 変数で書いたものにほかなりません。












