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