数学基础知识总结 您所在的位置:网站首页 矩阵运算方法大全图片 数学基础知识总结

数学基础知识总结

2024-05-27 23:53| 来源: 网络整理| 查看: 265

常量与变量的运算公式非常简单,这里不做赘述。所以我们重点会放在矩阵、行列式,以及向量的运算公式上。

文章目录 矩阵运算公式矩阵加减法(两矩阵之间要求维度相同)运算法则 矩阵乘法——哈达玛积(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=⎣⎢⎢⎡​a00​a10​⋯ai0​​a01​a11​⋯ai1​​⋯⋯⋯⋯​a0j​a1j​⋯aij​​⎦⎥⎥⎤​

你会发现我这里用了一个跟传统教科书不太一样的下标表示。如果你写过程序,就能明白矩阵的元素遍历,和程序里常见的二维数组遍历的形式很像:

用C系语言描述,大概就是这一个样子的

for (int i = 0; i /// } }

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​±b0j​a1j​±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​⋅b0j​a1j​⋅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​=[a00​a10​​a01​a11​​a02​a12​​]×⎣⎡​b00​b10​b20​​b01​b11​b21​​⎦⎤​

= [ 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​⋅b21​a10​⋅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=[a00​a10​​a01​a11​​a02​a12​​]

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=[b00​b10​​b01​b11​​b02​b12​​]

则 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 ] A\otimes B={\begin{bmatrix}a_{{11}}B&\cdots &a_{{1n}}B\\\vdots &\ddots &\vdots \\a_{{m1}}B&\cdots &a_{{mn}}B\end{bmatrix}} A⊗B=⎣⎢⎡​a11​B⋮am1​B​⋯⋱⋯​a1n​B⋮amn​B​⎦⎥⎤​

[ 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}1\cdot 0&1\cdot 3&2\cdot 0&2\cdot 3\\1\cdot 2&1\cdot 1&2\cdot 2&2\cdot 1\\3\cdot 0&3\cdot 3&1\cdot 0&1\cdot 3\\3\cdot 2&3\cdot 1&1\cdot 2&1\cdot 1\\\end{bmatrix}}={\begin{bmatrix}0&3&0&6\\2&1&4&2\\0&9&0&3\\6&3&2&1\end{bmatrix}} [13​21​]⊗[02​31​]=⎣⎢⎢⎡​1⋅01⋅23⋅03⋅2​1⋅31⋅13⋅33⋅1​2⋅02⋅21⋅01⋅2​2⋅32⋅11⋅31⋅1​⎦⎥⎥⎤​=⎣⎢⎢⎡​0206​3193​0402​6231​⎦⎥⎥⎤​

运算法则

满足交换律 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 +−×÷。

运算法则

满足交换律,结合律



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有