矩陣
矩陣是數字的集合。
矩陣是一個矩形陣列。
矩陣按行和列排列。
矩陣維度
這個矩陣有1行和3列
矩陣的維度是 (1x3)。
這個矩陣有2行和3列
矩陣的維度是 (2x3)。
方陣
方陣是行數和列數相等的矩陣。
n×n 矩陣稱為 n 階方陣。
2x2 矩陣(2 階方陣)
4x4 矩陣(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 中的線性代數
線上性代數中,最簡單的數學物件是標量
另一個簡單的數學物件是陣列
const array = [ 1, 2, 3 ];
矩陣是二維陣列
const matrix = [ [1,2],[3,4],[5,6] ];
向量可以寫成只有一列的矩陣
const vector = [ [1],[2],[3] ];
向量也可以寫成陣列
const vector = [ 1, 2, 3 ];
JavaScript 矩陣運算
在 JavaScript 中進行矩陣運算很容易變成混亂的迴圈。
使用 JavaScript 庫可以為您省去很多麻煩。
最常用的用於矩陣運算的庫之一叫做math.js。
您可以用一行程式碼將其新增到您的網頁中
使用 math.js
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjs/9.3.2/math.js"></script>
矩陣相加
如果兩個矩陣的維度相同,我們可以將它們相加
示例
const mA = math.matrix([[1, 2], [3, 4], [5, 6]]);
const mB = math.matrix([[1,-1], [2,-2], [3,-3]]);
// 矩陣加法
const matrixAdd = math.add(mA, mB);
// 結果 [ [2, 1], [5, 2], [8, 3] ]
自己動手試一試 »
矩陣相減
如果兩個矩陣的維度相同,我們可以將它們相減
示例
const mA = math.matrix([[1, 2], [3, 4], [5, 6]]);
const mB = math.matrix([[1,-1], [2,-2], [3,-3]]);
// 矩陣減法
const matrixSub = math.subtract(mA, mB);
// 結果 [ [0, 3], [1, 6], [2, 9] ]
自己動手試一試 »
標量乘法
雖然行和列中的數字稱為矩陣,但單個數字稱為標量。
將矩陣與標量相乘很容易。只需將矩陣中的每個數字乘以標量
示例
const mA = math.matrix([[1, 2], [3, 4], [5, 6]]);
// 矩陣乘法
const matrixMult = math.multiply(2, mA);
// 結果 [ [2, 4], [6, 8], [10, 12] ]
自己動手試一試 »
示例
const mA = math.matrix([[0, 2], [4, 6], [8, 10]]);
// 矩陣除法
const matrixDiv = math.divide(mA, 2);
// 結果 [ [0, 1], [2, 3], [4, 5] ]
自己動手試一試 »
轉置矩陣
轉置矩陣意味著替換行與列。
交換行和列時,您會圍繞對角線旋轉矩陣。
矩陣乘法
矩陣乘法更加困難。
只有當矩陣 A 的列數與矩陣 B 的行數相同時,我們才能將兩個矩陣相乘。
然後,我們需要計算一個“點積”
我們需要將 A 的每一列的數字與 B 的每一行的數字相乘,然後將這些乘積相加
示例
const mA = math.matrix([1, 2, 3]);
const mB = math.matrix([[1, 4, 7], [2, 5, 8], [3, 6, 9]]);
// 矩陣乘法
const matrixMult = math.multiply(mA, mB);
// 結果 [14, 32, 50]
自己動手試一試 »
解釋
(1,2,3) * (1,2,3) = 1x1 + 2x2 + 3x3 = | 14 |
(1,2,3) * (4,5,6) = 1x4 + 2x5 + 3x6 = | 32 |
(1,2,3) * (7,8,9) = 1x7 + 2x8 + 3x9 = | 50 |
如果您知道如何進行矩陣乘法,就可以解決許多複雜的方程。
示例
你賣玫瑰。
- 紅玫瑰每朵 3 美元
- 白玫瑰每朵 4 美元
- 黃玫瑰每朵 2 美元
- 星期一您賣了 260 朵玫瑰
- 星期二您賣了 200 朵玫瑰
- 星期三您賣了 120 朵玫瑰
所有銷售額是多少?
|
$3 |
$4 |
$2 |
週一 | 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]);
// 矩陣乘法
const matrixMult = math.multiply(mA, mB);
// 結果 [800, 630, 380]
自己動手試一試 »
解釋
A |
|
B |
|
|
|
|
|
x |
120 |
90 |
60 |
80 |
70 |
40 |
60 |
40 |
20 |
|
= |
|
= |
|
(3,4,2) * (120,80,60) | = 3x120 + 4x80 + 2x60 | = 800 |
(3,4,2) * (90,70,40) | = 3x90 + 4x70 + 2x40 | = 630 |
(3,4,2) * (60,40,20) | = 3x60 + 4x40 + 2x20 | = 380 |
矩陣分解
在 AI 中,您需要知道如何分解矩陣。
矩陣分解是線性代數中的一個關鍵工具,尤其是線上性最小二乘法中。
W3schools 學習路徑
跟蹤您的進度 - 免費!