行列の積を求める

高校数学の難所の一つ、行列の計算。行列演算は、3Dグラフィックや統計、最近ではAIなどプログラミングでも「必須科目」と言えます。

ただ、縦横に入り乱れる数字を見ていると、慣れているつもりでも「計算の順序」を間違えることがありますよね。面倒な計算はプログラムでやっちゃえ、というわけで行列の積を求めるプログラムを作ってみましょう。

行列の積の計算方法

行列の積(掛け算)は、「左側の列と右側の行」の各要素の積の和からなる行列になります。たとえば

(a ,b)
c ,d
×
(e ,f)
g ,h

という二つの行列の積は、以下のようになるわけです。

(a * e + b * g ,a * f + b * h)
c * e + d * g ,c * f + d * h

行列の積は、異なる形式(行/列の数)の行列であっても求めることができます。ただし、その場合は「列と行」を掛けていく演算の定義から「左側の行列の列数と右側の行列の行数が同じ」であることが条件です。

行列の積を求めるプログラム

計算方法が確認できたところで、行列の積を求めるプログラムを作ってみましょう。

行列は、2*2の4つの要素を持つものとし、それをJavaScriptの配列に入れて渡します。プログラムとしては、配列の各要素を掛けて新しい行列(配列)に格納していく単純なものになりますね。

JavaScriptの関数にまとめたサンプルコードは、以下のようになります。

function getMatrixProduct22(a, b) {

	var result = [];

	result[0] = a[0] * b[0] + a[1] * b[2];
	result[1] = a[0] * b[1] + a[1] * b[3];
	result[2] = a[2] * b[0] + a[3] * b[2];
	result[3] = a[2] * b[1] + a[3] * b[3];

	return result;

}

実際に、このプログラムを使って2*2の行列の積を求めてみましょう。

( ,)
,
×
( ,)
,
( ,)
,

=左側の入力欄に二つの行列を入れて「行列の積を求める」ボタンをクリックすると、計算結果が表示されます。