ブロック行列とシューア補元|区分けして積・行列式・逆行列を計算する
行列を縦と横の線で区切り、小さな行列が並んだものとして見た形をブロック行列といいます。区分行列とも呼びます。
区切り方がそろっていれば、ブロックを数のように扱って和や積が計算できます。大きな行列の計算が、小さな行列の計算に分かれます。
行列式・逆行列・階数も、うまく区切れば同じように分かれます。その要になるのがシューア補元です。
<svg viewBox="0 0 460 250" width="100%" style="max-width:460px;display:block;margin:0 auto">
<text x="175" y="44" font-size="11" fill="#9a9a9a" text-anchor="middle">n1 列</text>
<text x="305" y="44" font-size="11" fill="#9a9a9a" text-anchor="middle">n2 列</text>
<text x="102" y="96" font-size="11" fill="#9a9a9a" text-anchor="end">m1 行</text>
<text x="102" y="176" font-size="11" fill="#9a9a9a" text-anchor="end">m2 行</text>
<rect x="110" y="52" width="130" height="80" fill="#1b81e0" fill-opacity="0.12"></rect>
<rect x="240" y="52" width="130" height="80" fill="#f5f5f5"></rect>
<rect x="110" y="132" width="130" height="80" fill="#f5f5f5"></rect>
<rect x="240" y="132" width="130" height="80" fill="#1b81e0" fill-opacity="0.12"></rect>
<rect x="110" y="52" width="260" height="160" fill="none" stroke="#c8c8c8" stroke-width="1"></rect>
<line x1="240" y1="52" x2="240" y2="212" stroke="#1b81e0" stroke-width="1"></line>
<line x1="110" y1="132" x2="370" y2="132" stroke="#1b81e0" stroke-width="1"></line>
<text x="175" y="98" font-size="15" fill="#1f1f1f" text-anchor="middle">A</text>
<text x="305" y="98" font-size="15" fill="#1f1f1f" text-anchor="middle">B</text>
<text x="175" y="178" font-size="15" fill="#1f1f1f" text-anchor="middle">C</text>
<text x="305" y="178" font-size="15" fill="#1f1f1f" text-anchor="middle">D</text>
<text x="230" y="238" font-size="11" fill="#9a9a9a" text-anchor="middle">同じ行のブロックは行数が、同じ列のブロックは列数がそろいます</text>
</svg>行列を区分けして見る
行列 の行を 、列を と分けます。区切り線を入れると、4 つの小行列が並んだ形になります。
は 、 は 、 は 、 は の行列です。同じ行に並ぶブロックは行数が、同じ列に並ぶブロックは列数がそろいます。
区切りは 2 分割に限りません。 行 列のブロックに分けたときは と添字で呼びます。以下では 2 分割の場合を中心に見ていきます。
ブロックごとの和と積
和は単純です。区切り方が同じ 2 つの行列なら、同じ位置のブロックどうしを足せば済みます。
積には条件がつきます。 を計算するとき、 の列の分け方と の行の分け方が一致していれば、ブロックを数のように掛けられます。
2 分割どうしなら次の形です。ブロックの積は可換ではないので、左右の順序を崩さないことがすべてです。
例:ブロック三角行列どうしの積
左下が零行列である 2 つの行列を掛けます。ブロックには次の値を入れます。
公式に当てはめると、左上は 、右上は 、右下は になります。左下は で零行列のままです。
これらを並べたものが積です。
4 次の行列として直接掛けても同じ結果が出ます。左下が零行列のままである点も見てください。ブロック三角の形は積で保たれます。
ブロックのまま掛けてよい理由
成分で書いた積の定義 を、 の範囲で区切って足し直しただけです。
を から までと、 から までに分ければ、前半が の成分に、後半が の成分に対応します。
和をまとめる順序を変えているだけなので、区切りが整合していればいつでも成り立ちます。新しい定理というより、和の書き換えです。
ブロック対角行列
対角にだけブロックが並び、ほかがすべて零行列である行列をブロック対角行列といいます。
行列式はブロックごとの行列式の積、トレースは和になります。逆行列も各ブロックの逆行列を並べるだけです。
が正則であることと、すべての が正則であることが同値です。空間をいくつかの部分に分け、それぞれで独立に写像が働いている状況を、行列の言葉にした形にあたります。
和と積の形、ブロック三角行列の行列式、ブロック対角行列の逆行列。区切りさえそろっていれば、そのまま計算できます
ブロックの積の順序と、たすきがけの形の公式。可換性を前提にした式は、そのままでは成り立ちません
ブロック三角行列の行列式
右上または左下が零行列で、対角のブロックが正方行列なら、行列式はブロックごとの積になります。
が正則な場合は、3 つの行列の積に分けると見通しがよくなります。
右端は対角成分がすべて の三角行列なので、行列式は です。左の 2 つは余因子展開を繰り返せば と になります。
が正則でないときは、 となる でない を使って の列の一次従属が作れます。両辺とも になり、等式はやはり成り立ちます。
例:ブロック三角行列の行列式を求める
次の 4 次の行列で確かめます。
左下の 2 次ブロックが零行列なので、左上と右下だけを見れば済みます。、 です。
右上のブロックの中身は結果に効きません。4 次の行列式を余因子展開で追うより、はるかに手数が少なくて済みます。
たすきがけの公式は成り立たない
2 次の行列式 の形をまねて としたくなりますが、これは一般には誤りです。
2 次のブロックに区切って から を引きます。
この行列式は ですが、 の行列式は です。値がまるで合いません。
と が可換なら が正しい答を与えます。可換性つきの公式であって、いつでも使える式ではありません。
ブロック消去とシューア補元
連立方程式で使う消去を、ブロックのままやってみます。 が正則なら、第 1 行のブロックに を掛けて第 2 行から引けます。
左下が消え、右下に が残りました。これを に関するシューア補元といい、 と書きます。
<svg viewBox="0 0 460 230" width="100%" style="max-width:460px;display:block;margin:0 auto">
<rect x="40" y="60" width="70" height="55" fill="#1b81e0" fill-opacity="0.12"></rect>
<rect x="110" y="60" width="70" height="55" fill="#f5f5f5"></rect>
<rect x="40" y="115" width="70" height="55" fill="#f5f5f5"></rect>
<rect x="110" y="115" width="70" height="55" fill="#f5f5f5"></rect>
<rect x="40" y="60" width="140" height="110" fill="none" stroke="#c8c8c8" stroke-width="1"></rect>
<text x="75" y="94" font-size="14" fill="#1f1f1f" text-anchor="middle">A</text>
<text x="145" y="94" font-size="14" fill="#1f1f1f" text-anchor="middle">B</text>
<text x="75" y="149" font-size="14" fill="#1f1f1f" text-anchor="middle">C</text>
<text x="145" y="149" font-size="14" fill="#1f1f1f" text-anchor="middle">D</text>
<line x1="200" y1="115" x2="255" y2="115" stroke="#9a9a9a" stroke-width="1"></line>
<polygon points="255,115 247,111 247,119" fill="#9a9a9a"></polygon>
<text x="228" y="106" font-size="11" fill="#9a9a9a" text-anchor="middle">ブロック消去</text>
<rect x="280" y="60" width="70" height="55" fill="#1b81e0" fill-opacity="0.12"></rect>
<rect x="350" y="60" width="70" height="55" fill="#f5f5f5"></rect>
<rect x="280" y="115" width="70" height="55" fill="#f5f5f5"></rect>
<rect x="350" y="115" width="70" height="55" fill="#1b81e0" fill-opacity="0.12"></rect>
<rect x="280" y="60" width="140" height="110" fill="none" stroke="#c8c8c8" stroke-width="1"></rect>
<text x="315" y="94" font-size="14" fill="#1f1f1f" text-anchor="middle">A</text>
<text x="385" y="94" font-size="14" fill="#1f1f1f" text-anchor="middle">B</text>
<text x="315" y="149" font-size="14" fill="#9a9a9a" text-anchor="middle">O</text>
<text x="385" y="149" font-size="14" fill="#1b81e0" text-anchor="middle">S</text>
<text x="230" y="200" font-size="11" fill="#9a9a9a" text-anchor="middle">左下が消え、右下に現れる S がシューア補元です</text>
<text x="230" y="218" font-size="11" fill="#9a9a9a" text-anchor="middle">元の行列の情報は、A と S の 2 つに分かれます</text>
</svg>右からも同じ操作をすると、対角だけの形に整います。まとめると次の分解が得られます。
両端は対角成分が の三角行列で、行列式も階数の変化も持ちません。本質的な情報は真ん中に集まります。
行列式はシューア補元で分かれる
さきほどの分解の両辺で行列式を取れば、公式がそのまま出ます。
のほうが正則なら、上下を入れ替えた同じ議論で別の形も得られます。
2 次の行列式 は、 のとき と書き直せます。シューア補元の公式は、この見方をそのままブロックに広げたものです。
例:シューア補元で行列式を求める
次の行列を 2 次のブロックに区切ります。
左上のブロックは上三角なので、逆行列がすぐ求まります。
は単位行列で、残りの 2 つは次のとおりです。
を計算して から引くと、シューア補元は対角行列になります。
、 ですから です。4 次の行列式が、2 次の行列式 2 つの積に分かれました。
ブロック逆行列の公式
とシューア補元 がともに正則なら、逆行列は次の形で書けます。
覚えにくい式に見えますが、導き方は簡単です。さきほどの 3 つの積を逆順にして、それぞれの逆行列を取るだけで済みます。三角行列のほうは符号を変えるだけです。
右下に がそのまま現れるところが要点になります。大きな逆行列のうち一部だけが必要なとき、全体を求めずに取り出せます。
例:4 次の逆行列をブロックで求める
さきほどの例から右下のブロックだけを変えます。
、、 は変わらず、 だけが入れ替わっています。
を引くとシューア補元が単位行列になり、公式がとても軽くなります。
を代入すると、分数の出てこない逆行列が求まります。
実際に を計算すると単位行列になります。 ですから、成分がすべて整数になることとも辻褄が合います。
階数もシューア補元で分かれる
が正則なら、階数についても同じ形の式が成り立ちます。
ブロック消去で使った両端の行列が正則だからです。正則な行列を掛けても階数は動かず、ブロック対角の形になった時点で 2 つに分かれます。
が正則であることと が正則であることが同値、という言い方もできます。行列式の公式からも同じ結論に行き着きます。
対称ブロック行列の正定値性
対称行列を、対角のブロックが対称になるように区切ります。このとき正定値かどうかの判定も、シューア補元に分かれます。
が正定値であれば、 が正定値であることと が正定値であることが同値です。大きな行列の判定が、小さな 2 つの判定に落ちます。
正定値行列そのものの性質は、正定値行列と半正定値行列の記事で扱います。ここではシューア補元が判定の道具になる、という点だけを押さえてください。
連立方程式の消去として読む
シューア補元は、変数をまとめて消したあとに残る係数行列です。未知数を 2 組に分けて と を並べた形が にあたります。
第 1 式から を得て、第 2 式に代入します。
左辺の係数行列がシューア補元です。 の正則性が要るのは、 について解く必要があるからだと分かります。
大きな連立方程式を解くとき、この形で片方の変数群を先に消す方法がよく使われます。消したあとの小さな方程式を解き、あとから を復元します。
他の話題とのつながり
逆行列の公式を並べ替えると、ウッドベリーの公式が出てきます。 を と小さな逆行列で書く式で、階数の低い修正を加えたときの計算に使われます。
行列式にも対応する式があります。 という形で、ブロック行列の行列式を 2 通りに計算すれば導けます。
統計では、多変量正規分布の条件つき分散がシューア補元そのものです。共分散行列を 2 つの変数群に区切ると、片方を固定したときの残りのばらつきが の形で現れます。
計算の面でも効きます。大きな積や逆行列をブロックに分けて処理する方法は、並列計算やシュトラッセンの積の土台になっています。












