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

文章目录

  • 矩阵运算公式
    • 矩阵加减法(两矩阵之间要求维度相同)
      • 运算法则
    • 矩阵乘法——哈达玛积(Hadamard product)(两矩阵之间要求维度相同)
      • 运算法则
    • 矩阵乘法——叉乘/向量外积(要求前列与后行元素数一致)
      • 运算法则
    • 矩阵乘法——内积(两矩阵之间要求维度相同)
      • 运算法则
    • 矩阵乘法——克罗内科积(Kronecker product)(维度没有要求)
      • 运算法则
  • 矩阵与常数的运算
    • 运算法则

矩阵运算公式

矩阵运算主要分为加减乘,而没有除法。除法运算通常是计算除数矩阵的逆矩阵,然后再用乘法。而矩阵乘法,常用的主要有两种,点乘和叉乘。

通常矩阵(Matrix)之间要想进行某种数学运算,都多少有其维度的限制性要求。比如要求矩阵之间行列数相同,或者要求前矩阵的列数和后矩阵的行数相等。

矩阵加减法(两矩阵之间要求维度相同)

假设有如下矩阵:

A=[a00a01⋯a0ja10a11⋯a1j⋯⋯⋯⋯ai0ai1⋯aij]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 < X; i++) {for (int j = 0; j < Y; j++) {///}
}

iii 通常被定义为矩阵的行, jjj 通常被定义为矩阵的列。所以通常矩阵A和矩阵B进行加减法运算时,新矩阵的元素就是这样的:

A±B=[a00±b00,a01±b01,⋯a0j±b0ja10±b10,a11±b11,⋯a1j±b1j⋯⋯⋯⋯ai0±bi0,ai1±bi1,⋯aij±bij]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±AA \pm B = B \pm A A±B=B±A

满足结合律
A±B±C=A±(B±C)=(A±B)±CA \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=[a00⋅b00,a01⋅b01,⋯a0j⋅b0ja10⋅b10,a11⋅b11,⋯a1j⋅b1j⋯⋯⋯⋯ai0⋅bi0,ai1⋅bi1,⋯aij⋅bij]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∘BA \circ BA∘B 这一类的表示。不过要想国际都能理解的话,你可以用函数式的形式,即 hadamard(A,B)hadamard(A,B)hadamard(A,B) 进行表示。

运算法则

满足交换律
A⋅B=B⋅AA \cdot B = B \cdot A A⋅B=B⋅A

满足结合律
A⋅B⋅C=A⋅(B⋅C)=(A⋅B)⋅CA \cdot B \cdot C = A \cdot (B \cdot C) = (A \cdot B) \cdot C A⋅B⋅C=A⋅(B⋅C)=(A⋅B)⋅C

矩阵乘法——叉乘/向量外积(要求前列与后行元素数一致)

叉乘是高数或者线性代数课本上最常考的一类运算,通常用 A×BA \times BA×B 的形式进行表示,函数式写作 cross(A,B)cross(A,B)cross(A,B) 。它是否能够执行有一个要求,对于n行m列的矩阵 A2×3A_{2 \times 3}A2×3​,它只能跟行数与A的列数相等的 B3×nB_{3 \times n}B3×n​ 相乘。

例如:

A23×B32=[a00a01a02a10a11a12]×[b00b01b10b11b20b21]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​​⎦⎤​

=[a00⋅b00+a01⋅b10+a02⋅b20,a00⋅b01+a01⋅b11+a02⋅b21a10⋅b00+a11⋅b10+a12⋅b20,a10⋅b01+a11⋅b11+a12⋅b21]= \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×AA \times B \neq B \times A A×B​=B×A

满足结合律

A×B×C=A×(B×C)=(A×B)×CA \times B \times C = A \times (B \times C) = (A \times B) \times C A×B×C=A×(B×C)=(A×B)×C

矩阵乘法——内积(两矩阵之间要求维度相同)

也是比较常用的一种运算。大多数的空间滤波函数的实现方式都依赖这个内积,函数式写作 dot(A,B)dot(A, B)dot(A,B)

假设:

A=[a00a01a02a10a11a12]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=[b00b01b02b10b11b12]B =\begin{bmatrix} b_{00} & b_{01} & b_{02} \\ b_{10} & b_{11} & b_{12} \end{bmatrix} B=[b00​b10​​b01​b11​​b02​b12​​]

则 AB=a00⋅b00+a01⋅b01+a02⋅b02+a10⋅b10+a11⋅b11+a12⋅b12AB= 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​

运算法则

满足交换律
AB=BAAB = BA AB=BA

满足结合律
ABC=(AB)C=A(BC)ABC = (AB)C = A(BC) ABC=(AB)C=A(BC)

矩阵乘法——克罗内科积(Kronecker product)(维度没有要求)

这是唯一个对矩阵维度没有要求的积,可以认为是一种排列组合。

A⊗B=[a11B⋯a1nB⋮⋱⋮am1B⋯amnB]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​⎦⎥⎤​

[1231]⊗[0321]=[1⋅01⋅32⋅02⋅31⋅21⋅12⋅22⋅13⋅03⋅31⋅01⋅33⋅23⋅11⋅21⋅1]=[0306214209036321]{\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⊗AA \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,以实心小写字母表示常数比如 ccc,它们的运算关系表示如下。因此,可以得到这样的一个模板:

M⋆c=[M00⋆c,M01⋆c,⋯,M0m⋆cM10⋆c,M11⋆c,⋯,M1m⋆c⋮⋮Mn0⋆c,Mn1⋆,⋯Mnm⋆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. 基本矩阵运算公式相关推荐

  1. 【本科数学基础知识整理】

    [本科数学基础知识整理] 文章目录 前言 一.高等数学 二.微积分 1. 三. 六.随机变量 七.概率论 7.1 概念解释(PDF.PMF.CDF) 7.1.1 PMF:概率质量函数 7.1.2 PD ...

  2. 【知识】人工智能数学基础知识

    数学是打开科学大门的钥匙.--培根 数学基础知识蕴含着处理智能问题的基本思想与方法,也是理解复杂算法的必备要素.今天的种种人工智能技术归根到底都建立在数学模型之上,要了解人工智能,首先要掌握必备的数学 ...

  3. 计算机c语言与数学知识的联系,计算机数学基础知识

    计算机数学基础是计算机专业必修的数学基础知识.以下是小编整理的关于计算机数学基础知识,希望大家认真阅读! 1.计算机数学基础 是计算机专业必修的数学基础知识.针对计算机专业的特点,加强了Mathema ...

  4. java相关的数学知识_程序员必备的一些数学基础知识

    作为一个标准的程序员,应该有一些基本的数学素养,尤其现在很多人在学习人工智能相关知识,想抓住一波人工智能的机会.很多程序员可能连这样一些基础的数学问题都回答不上来. 矩阵A(m,n)与矩阵B(n,k) ...

  5. 机器学习所需要的数学基础知识---矩阵(1)

    机器学习所需要的数学基础知识-矩阵(1) 本系列文章为机器学习所需要的数学基础知识,在机器学习文章中如需要,会给出本系列文章的链接,如有问题欢迎给我留言.数学公式使用Letex编辑,原文博客http: ...

  6. VSLAM算法中的数学基础知识详细了解

    学习SLAM经验告诉我,入门SLAM一般只需要两种两个方面的条件,一是要有扎实的数学基础,二是要有强大的动手编程能力,但是这两个条件对于刚入门的同学来说,极具挑战性. 学习SLAM的心里历程:本来先研 ...

  7. 可视化中的数学基础知识

    一,坐标系 1.坐标系与坐标映射 浏览器的四个图形系统通用的坐标系分别为: HTML 采用的是窗口坐标系,以参考对象(参考对象通常是最接近图形元素的 position 非 static 的元素)的元素 ...

  8. 计算机图形学中需要掌握的数学基础知识有哪些?

    计算机图形学中使用了大量数学知识,尤其是矩阵和线性代数.虽然我们倾向于认为3D图形编程是紧跟最新技术的领域之一(它在很多方面确实是),但它用到的很多技术实际上可以追溯到上百年前,其中一些甚至是由文艺复 ...

  9. 人工智能数学基础知识复习(一)——导数、偏导数、方向导数、梯度

    从事AI行业最重要的知识莫过于数学了,或者说对于计算机领域乃至工科领域都是很重要的.最近觉得数学知识有点遗忘,遂在网易云课堂购买了唐宇迪老师的<数据科学人工智能-必备数学基础>课程学习,这 ...

  10. 动手学深度学习需要这些数学基础知识

    https://www.toutiao.com/a6716993354439066124/ 本附录总结了本书中涉及的有关线性代数.微分和概率的基础知识.为避免赘述本书未涉及的数学背景知识,本节中的少数 ...

最新文章

  1. Linux软件安装 conda
  2. default.html
  3. 记一次lua打包环境导致的coredump
  4. ros轮式小车学习链接
  5. San CLI 4.0 升级指南
  6. SQL JOIN-Hash Join
  7. 转录组差异表达分析工具Ballgown
  8. 【Eclipse】eclipse在线安装反编译插件
  9. python文本分词_【Python】使用jieba对文本进行分词
  10. eplan如何导入access_EPLAN如何助力汽车行业的智能制造转型?
  11. android 京东白条支付,京东网银钱包安卓版上线:整合京东白条和小金库
  12. php ci xss_clean,php – codeigniter 2以及如何为TinyMCE禁用xss
  13. C++_虚函数的实现的基本原理
  14. 四六级考试中的计算机类文章,四六级英语考试进入机考时代
  15. Jenkins插件配置国内镜像
  16. “No JSON object could be decoded“问题定位
  17. Word如何让不同页显示不同的页码,页眉
  18. Oculus内下游戏报错,OVR40779122解决办法
  19. kubectl常用命令大全详解
  20. python 提取元组中的值_如何从Python元组中提取数据?

热门文章

  1. Visio Professional详细教程(一)
  2. Discuz插件,批量Discuz采集发布插件
  3. 软件开发过程中各种文档的作用
  4. 【干货】Vray渲染器的使用方法
  5. 计算机cpu图片,电脑处理器天梯图2019
  6. 《疯狂的程序员》有感
  7. win10 linux声音,win10电脑突然没有声音的10种修复方法
  8. java google翻译api接口_java 免费调用google 谷歌翻译api
  9. 数字电子技术逻辑运算
  10. Android 游戏开发工具包 (AGDK)