2進行列のクラスを作るにあたって、ちょっとJavaのプログラミングの話から逸(そ)れますが、行列について説明しておきます。
まずベクトル(vector)とは何か。プログラミングの例で一番分かりやすいのは画面上の座標。横軸がx、 縦軸がy。数学ではyはプラスの方向が上ですが、画面上の座標は左上が原点で、yのプラスの方向は下になっています。解像度640ドットx480ドット(VGAと呼ばれます)のディスプレイではxが0~639、yが0~479で画面の座標を表せます。1次元の数字(スカラといいます)に対し2次元以上の数字のセットをベクトルと呼び、(x, y)、(639, 479)と書き表します。3次元ベクトルは(x, y, z)のようになります。3D (three-dimensional)とはこの3次元のことです。
では行列に移ります。ベクトルが数字の列(あるいは行)であるのに対し、行列はその名の通り数字の行と列、英語で言うとマトリックス(matrix)です。行列は、
のように表し、ベクトルのようにコンマ「,」は使いません。ベクトルに比べると行列は一見何のために使うのか分かりにくいですが、例えば連立方程式を解くのに使われたりします。
連立方程式は次のような問題を解くのに使われます。
「ツルとカメがあわせて8匹、足の数があわせて26本であるとき、ツルとカメは何匹か。」
つるかめ算と呼ばれる問題です。ここではすべてをツルと仮定するというやり方でなく、ツルがx匹、カメがy匹いたとして、連立方程式を立てます。
x + y = 8
2x + 4y = 26
この2つの式を1つにまとめた式が
です。行列と列ベクトルの積として2つの式をまとめています。
以上が行列の説明です。では、2進行列とは何でしょうか?
(つづく)