矩阵
矩阵是数字的集合。
矩阵是一个矩形数组。
矩阵按行和列排列。
矩阵维度
这个矩阵有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 学习路径
跟踪您的进度 - 免费!