マトリックス
行列は数値のセットです。
行列は長方形配列です。
行列は行と列に配置されます。
マトリックスの寸法
このマトリックスには、 1行3列があります。
行列の次元は(1 x 3)です。
このマトリックスには、 2行3列があります。
行列の次元は(2 x 3)です。
正方行列
正方行列は、同じ数の行と列を持つ行列です。
n行n列の行列は、n次の正方行列として知られています。
2行2列の行列(2次の正方行列):
4行4列の行列(4次の正方行列):
C = |
1 |
-2 |
3 |
4 |
5 |
6 |
-7 |
8 |
4 |
3 |
2 |
-1 |
8 |
7 |
6 |
-5 |
|
対角行列
対角行列の値は対角要素にあり、残り
の値はゼロです。
スカラー行列
スカラー行列には、等しい対角要素があり、残りは
ゼロです。
C = |
3 |
0 |
0 |
0 |
0 |
3 |
0 |
0 |
0 |
0 |
3 |
0 |
0 |
0 |
0 |
3 |
|
単位行列
単位行列には、対角線上に1、残りの部分に0があります。
これは1に相当する行列です。記号はIです。
I = |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
|
いずれかの行列に単位行列を掛けると、結果は元の行列と等しくなります。
ゼロマトリックス
ゼロ行列(ヌル行列)にはゼロしかありません。
等しい行列
各要素が対応する場合、行列は等しい:
負の行列
行列の負数は簡単に理解できます。
JavaScriptの線形代数
線形代数では、最も単純な数学オブジェクトはスカラーです。
もう1つの単純な数学オブジェクトは配列です:
const array = [ 1, 2, 3 ];
行列は2次元配列です:
const matrix = [ [1,2],[3,4],[5,6] ];
ベクトルは、1つの列のみで行列として記述できます。
const vector = [ [1],[2],[3] ];
ベクトルは配列として書くこともできます:
const vector = [ 1, 2, 3 ];
JavaScriptマトリックス操作
JavaScriptで行列演算をプログラミングすると、簡単にループのスパゲッティになる可能性があります。
JavScriptライブラリを使用すると、頭痛の種を大幅に減らすことができます。
行列演算に使用する最も一般的なライブラリの1つは、math.jsと呼ばれます。
1行のコードでWebページに追加できます。
math.jsを使用する
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/9.3.2/math.js"></script>
行列の追加
2つの行列の次元が同じである場合、それらを追加できます。
例
const mA = math.matrix([[1, 2], [3, 4], [5, 6]]);
const mB = math.matrix([[1,-1], [2,-2], [3,-3]]);
// Matrix Addition
const matrixAdd = math.add(mA, mB);
// Result [ [2, 1], [5, 2], [8, 3] ]
行列の減算
2つの行列の次元が同じである場合、それらを減算できます。
例
const mA = math.matrix([[1, 2], [3, 4], [5, 6]]);
const mB = math.matrix([[1,-1], [2,-2], [3,-3]]);
// Matrix Subtraction
const matrixSub = math.subtract(mA, mB);
// Result [ [0, 3], [1, 6], [2, 9] ]
行列を加算または減算するには、それらが同じ次元である必要があります。
スカラー乗法
行と列の数値は行列と呼ばれ、単一の数値はスカラーと呼ばれます。
行列にスカラーを掛けるのは簡単です。行列の各数値にスカラーを掛けるだけです。
例
const mA = math.matrix([[1, 2], [3, 4], [5, 6]]);
// Matrix Multiplication
const matrixMult = math.multiply(2, mA);
// Result [ [2, 4], [6, 8], [10, 12] ]
例
const mA = math.matrix([[0, 2], [4, 6], [8, 10]]);
// Matrix Division
const matrixDiv = math.divide(mA, 2);
// Result [ [0, 1], [2, 3], [4, 5] ]
行列を転置する
行列を転置するということは、行を列に置き換えることを意味します。
行と列を入れ替えるときは、行列を対角線の周りで回転させます。
行列の乗算
行列の乗算はより困難です。
行列Aの行数が行列Bの列数と同じである場合にのみ、2つの行列を乗算できます。
次に、「ドット積」をコンパイルする必要があります。
Aの各行の数値にBの各列の数値を掛けてから、積を加算する必要があります。
例
const mA = math.matrix([[1, 2, 3]]);
const mB = math.matrix([[1, 2, 3], [1, 2, 3], [1, 2, 3]]);
// Matrix Multiplication
const matrixMult = math.multiply(mA, mB);
// Result [ [6, 12, 18] ]
説明:
A |
|
B |
|
C |
|
C |
|
バツ |
|
= |
1x1 + 2x1 + 3x1 |
1x2 + 2x2 + 3x2 |
1x3 + 2x3 + 3x3 |
|
= |
|
行列の乗算方法を知っていれば、多くの複雑な方程式を解くことができます。
例
あなたはバラを売っています。
- 赤いバラはそれぞれ3ドルです
- 白いバラはそれぞれ4ドルです
- 黄色いバラはそれぞれ2ドルです
- 月曜日に260本のバラを販売しました
- 火曜日に200本のバラを販売しました
- 水曜日に120本のバラを販売しました
すべての売上の価値は何でしたか?
|
$ 3 |
$ 4 |
$ 2 |
月曜日 | 120 | 80 | 60 |
火曜日 | 90 | 70 | 40 |
結婚した | 60 | 40 | 20 |
A |
|
B |
|
C |
|
C |
|
バツ |
120 |
80 |
60 |
90 |
70 |
40 |
60 |
40 |
20 |
|
= |
|
= |
|
例
const mA = math.matrix([[3, 4, 2]]);
const mB = math.matrix([[120, 90, 60], [80, 70, 40], [60, 40, 20]);
// Matrix Multiplication
const matrixMult = math.multiply(mA, mB);
// Result [ [800, 630, 380] ]
説明:
A |
|
B |
|
C |
|
C |
|
バツ |
120 |
80 |
60 |
90 |
70 |
40 |
60 |
40 |
20 |
|
= |
$ 3x120 + $ 4x80 + $ 2x60 |
$ 3x90 + $ 4x70 + $ 2x40 |
$ 3x60 + $ 4x40 + $ 2x20 |
|
= |
|
行列の因数分解
AIでは、行列を因数分解する方法を知る必要があります。
行列の因数分解は、線形代数、特に線形最小二乗法の重要なツールです。