先回の「Excel ベクトル演算」に続いて、今回は“行列”に対する演算をいくつか見てみましょう。

Excelのシートには「行」と「列」で表わされたセルに数値などが格納され、あるセル範囲に入力されたものが「行列」と見做せます。
ベクトルは、一行または一列に並んだセル範囲として表わすことができますが、行列は(一般には)m行×n列のセル範囲として表わすことができます。

例題として、下図のように 3行 2列の行列A と 2行 3列の行列B を使ってその積を求めてみます。

 

行列の積をするときは、次のルールがあります:

  • 行列どうしのかけ算は、「左の行列の列数」と「右の行列の行数」が等しくないといけない
  • 「k行 m列の行列」と「m行 n列の行列」の積は「k行 n列の行列」となる


ということは、行列A と行列B の積は 3行 3列の行列になります。
そのため、シート上の 3×3 のセル範囲(例えば B5~D7セル)を選択しておき「=MMULT(B1:C3,E2:G3)」と入力し、[Ctrl]+[Shift]+[Enter]キーを押します。
そうです、先回もやりました「配列数式」です。

その結果、下図のように計算されます。

 

「MMULT」関数は、配列と配列の積を求める関数です。
もし、MMULT関数を使わなければ、各要素の積和演算で求められます。
例えば A×Bの 1行 1列の値は、行列Aの 1行めと行列B の 1列めの積和ですので「=B1*E2+C1*E3」として求められます。

次に、行列 の逆行列を求めます。
逆行列は、元の行列に対して右から掛けても左から掛けても単位行列E となるような行列です。
逆行列は、正方行列(n行×n列)に対してのみ定義でき、単位行列E は行列の左上から右下の斜めの部分だけが 1で、他は 0である行列です。

下図のような 3行×3列の正方行列 C について逆行列を求めます。

 

逆行列も同じ大きさの行列となりますので、例えば B13~D15セル範囲を選択し、「=MINVERSE(B9:D11)」と入力し、[Ctrl]+[Shift]+[Enter]キーを押します。
すると、上図のように、逆行列 C^-1 が得られます。
(行列の割り算は定義されないので、通例、1/C と表せず -1乗で表します。)

ここでも「配列数式」が出てきましたね。
ただし、任意の数値に対して逆行列が求まるものではなく、行列式が 0とならない行列に対してのみ逆行列が存在します。
詳細は省きますが、MINVERSE関数を使って「#NUM!」エラーが出たら、このケースだったとご理解ください。

それでは、その行列式を求めてみます。
Excelでは MDETERM関数が用意されています。
上図の正方行列 C に対して、空いているセルに「=MDETERM(B9:D11)」と入力すると「-2」と返ってきます。
上述のように、これが 0 でないので、行列 C の逆行列が存在することになります。

もうひとつ、転置行列を求めてみます。
転置行列は、単に行と列を入れ替えたものです。
Excelでは TRANSPOSE関数が用意されています。
3行×2列の行列A の転置行列A^T (2行×3列)を求めてみます。
例えば B17~D18セル範囲を選択し、「=TRANSPOSE(B1:C3)」と入力し、[Ctrl]+[Shift]+[Enter]キーを押します。(下図)

 

単に行と列を入れ替えただけなので、特に説明は要らないでしょう。

ベクトルとか行列とか聞くと一部の工学系の方しか使わないイメージですが、「Excel 九九表を作る」記事で配列数式を使った方法も一種の行列演算であると考えられます。
少し前のバージョンから Excelでも「配列」に対する機能を増やしてきています。
もちろん、有益な事があるからですので、これを機に「配列」に対する扱いにも慣れていってください。