矩阵、向量
数学:矩阵、向量
- 什么是矩阵和向量
- 矩阵的加法,乘法
- 矩阵的逆和转置
- 应用np.matmul、np.dot实现矩阵运算
1 矩阵和向量
1.1 矩阵
矩阵,英文matrix,和array的区别矩阵必须是2维的,但是array可以是多维的。
如图:这个是 3×2 矩阵,即 3 行 2 列,如 m 为行,n 为列,那么 m×n 即 3×2
[
1
2
3
4
5
6
]
\left[ \begin{matrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{matrix} \right]
⎣⎡135246⎦⎤
矩阵的维数即行数×列数
矩阵元素(矩阵项):
A
=
[
1
2
3
4
5
6
]
A = \left[ \begin{matrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{matrix} \right]
A=⎣⎡135246⎦⎤
Aij 指第 i 行,第 j 列的元素。
1.2 向量
向量是一种特殊的矩阵,讲义中的向量一般都是列向量,下面展示的就是三维列
向量(3×1)。)
A
=
[
1
2
3
]
A = \left[ \begin{matrix} 1 \\ 2 \\ 3 \end{matrix} \right]
A=⎣⎡123⎦⎤
2 加法和标量乘法
矩阵的加法:行列数相等的可以加。
例:
[
1
2
3
4
5
6
]
+
[
1
2
3
4
5
6
]
=
[
2
4
6
8
10
12
]
\left[ \begin{matrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{matrix} \right] + \left[ \begin{matrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{matrix} \right] = \left[ \begin{matrix} 2 & 4 \\ 6 & 8 \\ 10 & 12 \end{matrix} \right]
⎣⎡135246⎦⎤+⎣⎡135246⎦⎤=⎣⎡26104812⎦⎤
矩阵的乘法:每个元素都要乘。
例:
3
∗
[
1
2
3
4
5
6
]
=
[
3
6
9
12
15
18
]
3 * \left[ \begin{matrix} 1 & 2 \\ 3 & 4 \\ 5 & 6 \end{matrix} \right] = \left[ \begin{matrix} 3 & 6 \\ 9 & 12 \\ 15 & 18 \end{matrix} \right]
3∗⎣⎡135246⎦⎤=⎣⎡391561218⎦⎤
组合算法也类似。
3 矩阵向量乘法
矩阵和向量的乘法如图:m×n 的矩阵乘以 n×1 的向量,得到的是 m×1 的向量
例:
[
1
3
4
0
2
1
]
∗
[
1
5
]
=
[
16
4
7
]
\left[ \begin{matrix} 1 & 3 \\ 4 & 0 \\ 2 & 1 \end{matrix} \right] * \left[ \begin{matrix} 1 \\ 5 \end{matrix} \right] = \left[ \begin{matrix} 16 \\ 4 \\ 7 \end{matrix} \right]
⎣⎡142301⎦⎤∗[15]=⎣⎡1647⎦⎤
1*1+3*5 = 16
4*1+0*5 = 4
2*1+1*5 = 7
矩阵乘法遵循准则:
(M行, N列)*(N行, L列) = (M行, L列)
4 矩阵乘法
矩阵乘法:
m×n 矩阵乘以 n×o 矩阵,变成 m×o 矩阵。
举例:比如说现在有两个矩阵 A 和 B,那 么它们的乘积就可以表示为图中所示的形式。
A = [ 1 2 3 4 5 6 7 8 0 ] B = [ 1 2 1 1 1 2 2 1 1 ] A= \left[ \begin{matrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 0 \end{matrix} \right] B= \left[ \begin{matrix} 1 & 2 & 1 \\ 1 & 1 & 2 \\ 2 & 1 & 1 \end{matrix} \right] A=⎣⎡147258360⎦⎤B=⎣⎡112211121⎦⎤
求矩阵AB的结果
答案:
B
=
[
1
∗
1
+
2
∗
1
+
3
∗
2
1
∗
2
+
2
∗
1
+
3
∗
1
1
∗
1
+
2
∗
2
+
3
∗
1
4
∗
1
+
5
∗
1
+
6
∗
2
4
∗
2
+
5
∗
1
+
6
∗
1
4
∗
1
+
5
∗
2
+
6
∗
1
7
∗
1
+
8
∗
1
+
0
∗
2
7
∗
2
+
8
∗
1
+
0
∗
1
7
∗
1
+
8
∗
2
+
0
∗
1
]
=
[
9
7
8
21
19
20
15
22
23
]
B= \left[ \begin{matrix} 1*1+2*1+3*2 & 1*2+2*1+3*1 & 1*1+2*2+3*1 \\ 4*1+5*1+6*2 & 4*2+5*1+6*1 & 4*1+5*2+6*1 \\ 7*1+8*1+0*2 & 7*2+8*1+0*1 & 7*1+8*2+0*1 \end{matrix} \right] =\left[ \begin{matrix} 9 & 7 & 8 \\ 21 & 19 & 20 \\ 15 & 22 & 23 \end{matrix} \right]
B=⎣⎡1∗1+2∗1+3∗24∗1+5∗1+6∗27∗1+8∗1+0∗21∗2+2∗1+3∗14∗2+5∗1+6∗17∗2+8∗1+0∗11∗1+2∗2+3∗14∗1+5∗2+6∗17∗1+8∗2+0∗1⎦⎤=⎣⎡921157192282023⎦⎤
5 矩阵乘法的性质
矩阵的乘法不满足交换律:A×B≠B×A
矩阵的乘法满足结合律。即:A×(B×C)=(A×B)×C
单位矩阵:在矩阵的乘法中,有一种矩阵起着特殊的作用,如同数的乘法中的 1,我们称 这种矩阵为单位矩阵.它是个方阵,一般用 I 或者 E 表示,从 左上角到右下角的对角线(称为主对角线)上的元素均为 1 以外全都为 0。如:
6 逆、转置
矩阵的逆:如矩阵 A 是一个 m×m 矩阵(方阵),如果有逆矩阵,则:
AA-1 = A-1A = I
低阶矩阵求逆的方法:
1.待定系数法
2.初等变换
矩阵的转置:设 A 为 m×n 阶矩阵(即 m 行 n 列),第 i 行 j 列的元素是 a(i,j),即:
A=a(i,j)
定义 A 的转置为这样一个 n×m 阶矩阵 B,满足 B=a(j,i),即 b (i,j)=a (j,i)(B 的第 i 行第 j 列元素是 A 的第 j 行第 i 列元素),记 AT =B。
直观来看,将 A 的所有元素绕着一条从第 1 行第 1 列元素出发的右下方 45 度的射线作 镜面反转,即得到 A 的转置。
例:
[
a
b
c
d
e
f
]
T
=
[
a
c
e
b
d
f
]
\left[ \begin{matrix} a & b \\ c & d \\ e & f \end{matrix} \right]^T =\left[ \begin{matrix} a & c & e \\ b & d & f \end{matrix} \right]
⎣⎡acebdf⎦⎤T=[abcdef]
7 矩阵运算
[ 80 86 82 80 85 78 90 90 86 82 82 90 78 80 92 94 ] ∗ [ 0.3 0.7 ] = [ 84.2 80.6 80.1 90 83.2 87.6 79.4 93.4 ] \left[ \begin{matrix} 80 & 86 \\ 82 & 80 \\ 85 & 78 \\ 90 & 90 \\ 86 & 82 \\ 82 & 90 \\ 78 & 80 \\ 92 & 94 \end{matrix} \right]* \left[ \begin{matrix} 0.3 \\ 0.7 \end{matrix} \right]= \left[ \begin{matrix} 84.2 \\ 80.6 \\ 80.1 \\ 90 \\ 83.2 \\ 87.6 \\ 79.4 \\ 93.4 \end{matrix} \right] ⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡80828590868278928680789082908094⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤∗[0.30.7]=⎣⎢⎢⎢⎢⎢⎢⎢⎢⎢⎢⎡84.280.680.19083.287.679.493.4⎦⎥⎥⎥⎥⎥⎥⎥⎥⎥⎥⎤
7.1 矩阵乘法api:
- np.matmul
- np.dot
>>> a = np.array([[80, 86],
[82, 80],
[85, 78],
[90, 90],
[86, 82],
[82, 90],
[78, 80],
[92, 94]])
>>> b = np.array([[0.7], [0.3]])
>>> np.matmul(a, b)
array([[81.8],
[81.4],
[82.9],
[90. ],
[84.8],
[84.4],
[78.6],
[92.6]])
>>> np.dot(a,b)
array([[81.8],
[81.4],
[82.9],
[90. ],
[84.8],
[84.4],
[78.6],
[92.6]])
np.matmul和np.dot的区别:
- 二者都是矩阵乘法。
- np.matmul中禁止矩阵与标量的乘法。
- 在矢量乘矢量的內积运算中,np.matmul与np.dot没有区别。
8 小结
- 1.矩阵和向量
- 矩阵就是特殊的二维数组
- 向量就是一行或者一列的数据
- 2.矩阵加法和标量乘法
- 矩阵的加法:行列数相等的可以加。
- 矩阵的乘法:每个元素都要乘。
- 3.矩阵和矩阵(向量)相乘
- (M行, N列)*(N行, L列) = (M行, L列)
- 4.矩阵性质
- 矩阵不满足交换率,满足结合律
- 5.单位矩阵
- 对角线都是1的矩阵,其他位置都为0
- 6.矩阵运算
- np.matmul
- np.dot
- 注意:二者都是矩阵乘法。 np.matmul中禁止矩阵与标量的乘法。 在矢量乘矢量的內积运算中,np.matmul与np.dot没有区别。
相关文章
- UVA11464偶数矩阵
- matlab获取矩阵和向量长度length和size
- 【BZOJ2973】石头游戏 矩阵乘法
- C#,码海拾贝(13)——矩阵及其基本计算类Matrix的源代码,《C#数值计算算法编程》源代码升级改进版
- 旋转矩阵、欧拉角、四元数理论及其转换关系
- 【C语言】将一个(2N+1)×(2N+1)的矩阵(二维数组)中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放),写一函数实现之。用main函数调用
- 向量叉乘和反对称矩阵
- Eigen 旋转矩阵,旋转向量,四元数和欧拉角(初始化和相互转换)
- 2023华为OD机试 - 二维矩阵的最大值(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- Matlab相关函数知识点(三)-floor函数+点除运算符+矩阵索引规则
- 【剑指offer】顺时针打印矩阵
- 【bzoj2476】战场的数目 矩阵乘法优化dp