いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Excel)行列のn乗を求める

 Excelで数値のべき乗を求める場合は^演算子やPOW関数が使えますが、行列の場合にはそれらのようなものがありません。
 そこでMMULT関数を応用して行列のべき乗を求める計算を行ってみます。ただし可能なのは整数乗のみです。

  • REDUCE/LAMBDA関数とMMULT関数を使って行列のべき乗の計算ができます。

手順

 次の画像ではB3:D4の範囲に2行2列の行列が、E3セルに数値(3)が入力されています。
 そこでG3セルに式を入力して、行列を3乗した結果を求めています。

 G3セル

=REDUCE(B3:C4,SEQUENCE(E3-1),LAMBDA(m,n,MMULT(m,B3:C4)))

 REDUCE/LAMBDA関数を使い、行列をmと名付け、E3セルの数値から1を引いた数の連番(この場合、1と2の2つの要素からなる配列)をnと名付けています。
 MMULT関数によりnの要素の数(2)だけ行列積の計算が繰り返され、最終的に行列を3乗した結果が得られます(2回かけると3乗になる)。
 MMULT関数の結果が次のMMULT関数での乗算の際にmとして参照されるというのがポイントです。よってMMULT関数の部分を「MMULT(m,m)」としてしまうのは誤りで、乗算のたびに2乗→4乗→8乗と計算が進んでしまいます。
 なお計算できるのは2乗以上の整数乗だけで、1を指定するとエラーになります。また、SEQUENCE関数は小数部分を無視するので例えば「5.6」などと指定しても5乗にしかなりません。



 次は3行3列の行列の例です。式は上記の式から参照範囲を変えただけです。
 行列の入力が簡単に済むのがExcelの便利なところです。

 H3セル

=REDUCE(B3:D5,SEQUENCE(F3-1),LAMBDA(m,n,MMULT(m,B3:D5)))