概述
常量与变量的运算公式非常简单,这里不做赘述。所以我们重点会放在矩阵、行列式,以及向量的运算公式上。
文章目录
- 矩阵运算公式
- 矩阵加减法(两矩阵之间要求维度相同)
- 运算法则
- 矩阵乘法——哈达玛积(Hadamard product)(两矩阵之间要求维度相同)
- 运算法则
- 矩阵乘法——叉乘/向量外积(要求前列与后行元素数一致)
- 运算法则
- 矩阵乘法——内积(两矩阵之间要求维度相同)
- 运算法则
- 矩阵乘法——克罗内科积(Kronecker product)(维度没有要求)
- 运算法则
- 矩阵与常数的运算
- 运算法则
矩阵运算公式
矩阵运算主要分为加减乘,而没有除法。除法运算通常是计算除数矩阵的逆矩阵,然后再用乘法。而矩阵乘法,常用的主要有两种,点乘和叉乘。
通常矩阵(Matrix)之间要想进行某种数学运算,都多少有其维度的限制性要求。比如要求矩阵之间行列数相同,或者要求前矩阵的列数和后矩阵的行数相等。
矩阵加减法(两矩阵之间要求维度相同)
假设有如下矩阵:
A = [ a 00 a 01 ⋯ a 0 j a 10 a 11 ⋯ a 1 j ⋯ ⋯ ⋯ ⋯ a i 0 a i 1 ⋯ a i j ] A =begin{bmatrix} a_{00} & a_{01} & cdots &a_{0j} \ a_{10} & a_{11} & cdots & a_{1j} \ cdots & cdots & cdots & cdots\ a_{i0} & a_{i1} & cdots & a_{ij} end{bmatrix} A=⎣⎢⎢⎡a00a10⋯ai0a01a11⋯ai1⋯⋯⋯⋯a0ja1j⋯aij⎦⎥⎥⎤
你会发现我这里用了一个跟传统教科书不太一样的下标表示。如果你写过程序,就能明白矩阵的元素遍历,和程序里常见的二维数组遍历的形式很像:
用C系语言描述,大概就是这一个样子的
for (int i = 0; i < X; i++) {
for (int j = 0; j < Y; j++) {
///
}
}
i i i 通常被定义为矩阵的行, j j j 通常被定义为矩阵的列。所以通常矩阵A和矩阵B进行加减法运算时,新矩阵的元素就是这样的:
A ± B = [ a 00 ± b 00 , a 01 ± b 01 , ⋯ a 0 j ± b 0 j a 10 ± b 10 , a 11 ± b 11 , ⋯ a 1 j ± b 1 j ⋯ ⋯ ⋯ ⋯ a i 0 ± b i 0 , a i 1 ± b i 1 , ⋯ a i j ± b i j ] A pm B =begin{bmatrix} a_{00} pm b_{00}, & a_{01} pm b_{01}, & cdots &a_{0j} pm b_{0j} \ a_{10} pm b_{10}, & a_{11} pm b_{11}, & cdots & a_{1j} pm b_{1j} \ cdots & cdots & cdots & cdots\ a_{i0} pm b_{i0}, & a_{i1} pm b_{i1}, & cdots & a_{ij} pm b_{ij} end{bmatrix} A±B=⎣⎢⎢⎡a00±b00,a10±b10,⋯ai0±bi0,a01±b01,a11±b11,⋯ai1±bi1,⋯⋯⋯⋯a0j±b0ja1j±b1j⋯aij±bij⎦⎥⎥⎤
运算法则
满足交换律
A
±
B
=
B
±
A
A pm B = B pm A
A±B=B±A
满足结合律
A
±
B
±
C
=
A
±
(
B
±
C
)
=
(
A
±
B
)
±
C
A pm B pm C = A pm (B pm C) = (A pm B) pm C
A±B±C=A±(B±C)=(A±B)±C
矩阵乘法——哈达玛积(Hadamard product)(两矩阵之间要求维度相同)
这个运算是比较常用的一种运算,通常当作掩码运算规则使用。
A ⋅ B = [ a 00 ⋅ b 00 , a 01 ⋅ b 01 , ⋯ a 0 j ⋅ b 0 j a 10 ⋅ b 10 , a 11 ⋅ b 11 , ⋯ a 1 j ⋅ b 1 j ⋯ ⋯ ⋯ ⋯ a i 0 ⋅ b i 0 , a i 1 ⋅ b i 1 , ⋯ a i j ⋅ b i j ] A cdot B =begin{bmatrix} a_{00} cdot b_{00}, & a_{01} cdot b_{01}, & cdots &a_{0j} cdot b_{0j} \ a_{10} cdot b_{10}, & a_{11} cdot b_{11}, & cdots & a_{1j} cdot b_{1j} \ cdots & cdots & cdots & cdots\ a_{i0} cdot b_{i0}, & a_{i1} cdot b_{i1}, & cdots & a_{ij} cdot b_{ij} end{bmatrix} A⋅B=⎣⎢⎢⎡a00⋅b00,a10⋅b10,⋯ai0⋅bi0,a01⋅b01,a11⋅b11,⋯ai1⋅bi1,⋯⋯⋯⋯a0j⋅b0ja1j⋅b1j⋯aij⋅bij⎦⎥⎥⎤
数学上常以点号表示这个计算,也偶尔可以在一些国外教科书上见到 A ∘ B A circ B A∘B 这一类的表示。不过要想国际都能理解的话,你可以用函数式的形式,即 h a d a m a r d ( A , B ) hadamard(A,B) hadamard(A,B) 进行表示。
运算法则
满足交换律
A
⋅
B
=
B
⋅
A
A cdot B = B cdot A
A⋅B=B⋅A
满足结合律
A
⋅
B
⋅
C
=
A
⋅
(
B
⋅
C
)
=
(
A
⋅
B
)
⋅
C
A cdot B cdot C = A cdot (B cdot C) = (A cdot B) cdot C
A⋅B⋅C=A⋅(B⋅C)=(A⋅B)⋅C
矩阵乘法——叉乘/向量外积(要求前列与后行元素数一致)
叉乘是高数或者线性代数课本上最常考的一类运算,通常用 A × B A times B A×B 的形式进行表示,函数式写作 c r o s s ( A , B ) cross(A,B) cross(A,B) 。它是否能够执行有一个要求,对于n行m列的矩阵 A 2 × 3 A_{2 times 3} A2×3,它只能跟行数与A的列数相等的 B 3 × n B_{3 times n} B3×n 相乘。
例如:
A 23 × B 32 = [ a 00 a 01 a 02 a 10 a 11 a 12 ] × [ b 00 b 01 b 10 b 11 b 20 b 21 ] A_{23} times B_{32} = begin{bmatrix} a_{00} & a_{01} & a_{02} \ a_{10} & a_{11} & a_{12} end{bmatrix} times begin{bmatrix} b_{00} & b_{01} \ b_{10} & b_{11} \ b_{20} & b_{21} end{bmatrix} A23×B32=[a00a10a01a11a02a12]×⎣⎡b00b10b20b01b11b21⎦⎤
= [ a 00 ⋅ b 00 + a 01 ⋅ b 10 + a 02 ⋅ b 20 , a 00 ⋅ b 01 + a 01 ⋅ b 11 + a 02 ⋅ b 21 a 10 ⋅ b 00 + a 11 ⋅ b 10 + a 12 ⋅ b 20 , a 10 ⋅ b 01 + a 11 ⋅ b 11 + a 12 ⋅ b 21 ] = begin{bmatrix} a_{00} cdot b_{00} + a_{01} cdot b_{10} + a_{02} cdot b_{20}, & a_{00} cdot b_{01} + a_{01} cdot b_{11} + a_{02} cdot b_{21} \ a_{10} cdot b_{00} + a_{11} cdot b_{10} + a_{12} cdot b_{20}, & a_{10} cdot b_{01} + a_{11} cdot b_{11} + a_{12} cdot b_{21} end{bmatrix} =[a00⋅b00+a01⋅b10+a02⋅b20,a10⋅b00+a11⋅b10+a12⋅b20,a00⋅b01+a01⋅b11+a02⋅b21a10⋅b01+a11⋅b11+a12⋅b21]
运算法则
不满足交换律
A × B ≠ B × A A times B neq B times A A×B=B×A
满足结合律
A × B × C = A × ( B × C ) = ( A × B ) × C A times B times C = A times (B times C) = (A times B) times C A×B×C=A×(B×C)=(A×B)×C
矩阵乘法——内积(两矩阵之间要求维度相同)
也是比较常用的一种运算。大多数的空间滤波函数的实现方式都依赖这个内积,函数式写作 d o t ( A , B ) dot(A, B) dot(A,B)
假设:
A = [ a 00 a 01 a 02 a 10 a 11 a 12 ] A =begin{bmatrix} a_{00} & a_{01} & a_{02} \ a_{10} & a_{11} & a_{12} end{bmatrix} A=[a00a10a01a11a02a12]
B = [ b 00 b 01 b 02 b 10 b 11 b 12 ] B =begin{bmatrix} b_{00} & b_{01} & b_{02} \ b_{10} & b_{11} & b_{12} end{bmatrix} B=[b00b10b01b11b02b12]
则 A B = a 00 ⋅ b 00 + a 01 ⋅ b 01 + a 02 ⋅ b 02 + a 10 ⋅ b 10 + a 11 ⋅ b 11 + a 12 ⋅ b 12 AB= a_{00} cdot b_{00} + a_{01} cdot b_{01} + a_{02} cdot b_{02} + a_{10} cdot b_{10} + a_{11} cdot b_{11} + a_{12} cdot b_{12} AB=a00⋅b00+a01⋅b01+a02⋅b02+a10⋅b10+a11⋅b11+a12⋅b12
运算法则
满足交换律
A
B
=
B
A
AB = BA
AB=BA
满足结合律
A
B
C
=
(
A
B
)
C
=
A
(
B
C
)
ABC = (AB)C = A(BC)
ABC=(AB)C=A(BC)
矩阵乘法——克罗内科积(Kronecker product)(维度没有要求)
这是唯一个对矩阵维度没有要求的积,可以认为是一种排列组合。
A ⊗ B = [ a 11 B ⋯ a 1 n B ⋮ ⋱ ⋮ a m 1 B ⋯ a m n B ] Aotimes B={begin{bmatrix}a_{{11}}B&cdots &a_{{1n}}B\vdots &ddots &vdots \a_{{m1}}B&cdots &a_{{mn}}Bend{bmatrix}} A⊗B=⎣⎢⎡a11B⋮am1B⋯⋱⋯a1nB⋮amnB⎦⎥⎤
[ 1 2 3 1 ] ⊗ [ 0 3 2 1 ] = [ 1 ⋅ 0 1 ⋅ 3 2 ⋅ 0 2 ⋅ 3 1 ⋅ 2 1 ⋅ 1 2 ⋅ 2 2 ⋅ 1 3 ⋅ 0 3 ⋅ 3 1 ⋅ 0 1 ⋅ 3 3 ⋅ 2 3 ⋅ 1 1 ⋅ 2 1 ⋅ 1 ] = [ 0 3 0 6 2 1 4 2 0 9 0 3 6 3 2 1 ] {begin{bmatrix}1&2\3&1\end{bmatrix}}otimes {begin{bmatrix}0&3\2&1\end{bmatrix}}={begin{bmatrix}1cdot 0&1cdot 3&2cdot 0&2cdot 3\1cdot 2&1cdot 1&2cdot 2&2cdot 1\3cdot 0&3cdot 3&1cdot 0&1cdot 3\3cdot 2&3cdot 1&1cdot 2&1cdot 1\end{bmatrix}}={begin{bmatrix}0&3&0&6\2&1&4&2\0&9&0&3\6&3&2&1end{bmatrix}} [1321]⊗[0231]=⎣⎢⎢⎡1⋅01⋅23⋅03⋅21⋅31⋅13⋅33⋅12⋅02⋅21⋅01⋅22⋅32⋅11⋅31⋅1⎦⎥⎥⎤=⎣⎢⎢⎡0206319304026231⎦⎥⎥⎤
运算法则
满足交换律
A
⊗
B
=
B
⊗
A
A otimes B = B otimes A
A⊗B=B⊗A
满足结合律
A
⊗
B
⊗
C
=
(
A
⊗
B
)
⊗
C
=
A
⊗
(
B
⊗
C
)
A otimes B otimes C = (A otimes B) otimes C = A otimes (B otimes C)
A⊗B⊗C=(A⊗B)⊗C=A⊗(B⊗C)
矩阵与常数的运算
常数与矩阵的加法、减法、乘法,都可以认为是常数对矩阵的全部元素的运算。通常我们以空心字母表示矩阵比如 M mathbb{M} M,以实心小写字母表示常数比如 c c c,它们的运算关系表示如下。因此,可以得到这样的一个模板:
M ⋆ c = [ M 00 ⋆ c , M 01 ⋆ c , ⋯ , M 0 m ⋆ c M 10 ⋆ c , M 11 ⋆ c , ⋯ , M 1 m ⋆ c ⋮ ⋮ M n 0 ⋆ c , M n 1 ⋆ , ⋯ M n m ⋆ c ] mathbb{M} star c = begin{bmatrix} M_{00} star c, & M_{01} star c, & cdots, & M_{0m} star c \ M_{10} star c, & M_{11} star c, & cdots, & M_{1m} star c \ vdots & & & vdots \ M_{n0} star c, & M_{n1} star, & cdots & M_{nm} star c end{bmatrix} M⋆c=⎣⎢⎢⎢⎡M00⋆c,M10⋆c,⋮Mn0⋆c,M01⋆c,M11⋆c,Mn1⋆,⋯,⋯,⋯M0m⋆cM1m⋆c⋮Mnm⋆c⎦⎥⎥⎥⎤
⋆ star ⋆ 可以是 + − × ÷ + - times div +−×÷。
运算法则
满足交换律,结合律
最后
以上就是笨笨鞋子为你收集整理的数学基础知识总结 —— 6. 基本矩阵运算公式矩阵运算公式矩阵与常数的运算的全部内容,希望文章能够帮你解决数学基础知识总结 —— 6. 基本矩阵运算公式矩阵运算公式矩阵与常数的运算所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复