菜单
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

矩阵

矩阵是数字的集合。

矩阵是一个矩形数组

矩阵按排列。

矩阵维度

这个矩阵1行和3

C =  
2 5 3

矩阵的维度是 (1x3)。


这个矩阵有2行和3

C =  
2 5 3
4 7 1

矩阵的维度是 (2x3)。


方阵

方阵是行数和列数相等的矩阵。

n×n 矩阵称为 n 阶方阵。

2x2 矩阵(2 阶方阵)

C =  
1 2
3 4

4x4 矩阵(4 阶方阵)

C =  
1 -2 3 4
5 6 -7 8
4 3 2 -1
8 7 6 -5

对角矩阵

对角矩阵的对角线元素有值,其余元素为

C =   
2 0 0
0 5 0
0 0 3


标量矩阵

标量矩阵的对角线元素相等,其余元素为

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

将任何矩阵乘以单位矩阵,结果等于原矩阵。


零矩阵

零矩阵(空矩阵)只有零。

C =   
0 0 0
0 0 0

相等矩阵

如果每个元素都对应,则矩阵相等

2 5 3
4 7 1
  =  
2 5 3
4 7 1

负矩阵

矩阵的负数很容易理解

  -  
-2 5 3
-4 7 1
  =  
2 -5 -3
4 -7 -1

JavaScript 中的线性代数

在线性代数中,最简单的数学对象是标量

const scalar = 1;

另一个简单的数学对象是数组

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>

矩阵相加

如果两个矩阵的维度相同,我们可以将它们相加

2 5 3
4 7 1
 + 
4 7 1
2 5 3
 = 
6 12 4
6 12 4

示例

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] ]

自己动手试一试 »


矩阵相减

如果两个矩阵的维度相同,我们可以将它们相减

2 5 3
4 7 1
 - 
4 7 1
2 5 3
 = 
-2 -2 2
2 2 -2

示例

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] ]

自己动手试一试 »

要相加或相减矩阵,它们必须具有相同的维度。


标量乘法

虽然行和列中的数字称为矩阵,但单个数字称为标量

将矩阵与标量相乘很容易。只需将矩阵中的每个数字乘以标量

2 5 3
4 7 1
   x 2 =   
4 10 6
8 14 2

示例

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 =   
1 2
3 4
    AT =  
1 3
2 4

矩阵乘法

矩阵乘法更加困难。

只有当矩阵 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]

自己动手试一试 »

解释

A B C
1 2 3
 x 
1 4 7
2 5 8
3 6 9
 = 
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 朵玫瑰

所有销售额是多少?

Red Rose$3 White$4 Yellow$2
周一1208060
周二907040
周三604020

示例

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
$3$4$2
 x 
120 90 60
80 70 40
60 40 20
 = 
$800 $630 $380
 = 
$1810

(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 服务用于教育机构、团队或企业,请发送电子邮件给我们
sales@w3schools.com

报告错误

如果您想报告错误,或想提出建议,请发送电子邮件给我们
help@w3schools.com

W3Schools 经过优化,旨在方便学习和培训。示例可能经过简化,以提高阅读和学习体验。教程、参考资料和示例会不断审查,以避免错误,但我们无法保证所有内容的完全正确性。使用 W3Schools 即表示您已阅读并接受我们的使用条款Cookie 和隐私政策

版权所有 1999-2024 Refsnes Data。保留所有权利。W3Schools 由 W3.CSS 提供支持