← 返回《人工智能数学基础》
📑 查看全课大纲(第 59 / 93 节)
  1. 1.概论和集合的定义
  2. 2.逼疯康托的实数集理论
  3. 3.常用不等式与映射
  4. 4.函数及特殊函数
  5. 5.序列极限的定义
  6. 6.序列极限的性质与夹逼定理
  7. 7.重要极限
  8. 8.无穷小量,无穷大量和一组重要的阶的比较关系
  9. 9.聚点原理
  10. 10.函数极限及其性质
  11. 11.重要极限与等价无穷小
  12. 12.连续函数
  13. 13.导数的概念(那些年,扛起牛顿的胡克)
  14. 14.定义法求导
  15. 15.函数四则运算的导数与反函数求导法则
  16. 16.复合函数,隐函数,参数式求导
  17. 17.不定式求导之“洛必达与伯努利的师生情”
  18. 18.一阶微分
  19. 19.高阶导数
  20. 20.高阶微分
  21. 21.罗尔中值定理与拉格朗日中值定理
  22. 22.柯西空降科学院遭排挤
  23. 23.泰勒公式与泰勒的克妻属性
  24. 24.利用泰勒展开唯一性定理计算泰勒展开
  25. 25.泰勒公式的余项估计
  26. 26.极值问题与导数
  27. 27.函数凹凸性
  28. 28.无卵用的渐近线与函数作图
  29. 29.不定积分的定义
  30. 30.第一换元法
  31. 31.第二换元法
  32. 32.分部积分法
  33. 33.有理式积分
  34. 34.三角替换
  35. 35.定积分的概念
  36. 36.定积分的性质与积分中值定理
  37. 37.变上限定积分
  38. 38.微积分基本定理之“高斯教你如何优雅地装逼”
  39. 39.定积分的换元法
  40. 40.奇偶函数与周期函数的定积分
  41. 41.曲线求长与不可求长曲线(海岸线居然算不出长度?)
  42. 42.旋转体体积
  43. 43.旋转体侧面积
  44. 44.极坐标下图形的面积(数学系常用表白曲线)
  45. 45.欧式空间
  46. 46.点列极限,开集与闭集
  47. 47.多元函数的定义
  48. 48.多元函数的极限
  49. 49.多元连续函数
  50. 50.一阶偏导数
  51. 51.高阶偏导数
  52. 52.全微分
  53. 53.方向导数与梯度
  54. 54.链式法则
  55. 55.一阶全微分形式的不变性与高阶微分
  56. 56.多元函数的泰勒公式
  57. 57.隐函数存在定理与逆映射存在定理
  58. 58.多元函数的极值
  59. 59.矩阵基础知识
  60. 60.行列式的定义与特殊矩阵的行列式
  61. 61.行列式的性质
  62. 62.行列式按k行展开
  63. 63.线性方程组初步与高斯消元法
  64. 64.齐次线性方程组与Cramer法则
  65. 65.线性空间
  66. 66.线性相关与线性无关
  67. 67.向量组的秩
  68. 68.矩阵的秩与线性方程组有解的充要条件
  69. 69.齐次线性方程组的解集结构
  70. 70.非齐次线性方程组解集结构
  71. 71.基与维数
  72. 72.矩阵的乘法
  73. 73.特殊矩阵
  74. 74.矩阵乘积的秩与行列式
  75. 75.矩阵的逆
  76. 76.正交矩阵
  77. 77.矩阵对角化与特征值特征向量
  78. 78.实对称矩阵对角化
  79. 79.二次型与正定矩阵
  80. 80.LU分解
  81. 81.Cholesky分解
  82. 82.SVD分解
  83. 83.线搜索
  84. 84.步长
  85. 85.最速下降法和牛顿法
  86. 86.共轭梯度法
  87. 87.拟牛顿法
  88. 88.无约束优化
  89. 89.若干知识点补充(一)
  90. 90.若干知识点补充(二)
  91. 91.凸优化问题
  92. 92.对偶问题(一)
  93. 93.对偶问题(二)

矩阵基础知识

约 18 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

矩阵基础知识

小象实战讲义 · 人工智能数学基础

线性代数是人工智能领域的核心数学语言,而矩阵则是这门语言的“字母”。本节将系统介绍矩阵的基本定义、表示方法、特殊类型以及核心运算,为后续学习矩阵的乘法、特征值、奇异值分解等高级概念打下坚实基础。学完本节,你将能够理解并运用矩阵的基本运算,并初步掌握矩阵分块这一重要的结构化思想。

💡 核心导读

本节将围绕矩阵展开,重点掌握以下核心内容:

  1. 矩阵的定义与表示:理解矩阵作为“数表”的本质,掌握其元素、维度和标准记号。
  2. 特殊矩阵与对角线:认识零矩阵、方阵,并区分主对角线、次对角线和反对角线。
  3. 矩阵的基本运算:掌握矩阵的转置、加法、数量乘法,理解其运算规则。
  4. 矩阵的初等变换:学习对矩阵行与列的三种基本操作,这是后续求解线性方程组、矩阵化简的基础。
  5. 矩阵的分块:理解如何将大矩阵划分为子矩阵,这是处理大规模矩阵计算和理论推导的关键技巧。

矩阵的定义与基本概念

矩阵本质上是由数构成的一张矩形表格。具体地,一个具有 ss 行、mm 列的数表,称为一个 s×ms \times m 的矩阵。表格中的每一个数称为矩阵的元素

位于第 ii 行、第 jj 列的元素,称为该矩阵的 (i,j)(i, j) 元或 ijij 元。矩阵通常用大写英文字母表示,例如 AA。一个 s×ms \times m 的矩阵 AA 可以记作 As×mA_{s \times m},其 ijij 元记作 AijA_{ij}aija_{ij}。矩阵也可以整体表示为所有元素构成的阵列: A=(aij)s×m=(a11a12a1ma21a22a2mas1as2asm).A = (a_{ij}){s \times m} = \begin{pmatrix} a{11} & a_{12} & \cdots & a_{1m} \ a_{21} & a_{22} & \cdots & a_{2m} \ \vdots & \vdots & \ddots & \vdots \ a_{s1} & a_{s2} & \cdots & a_{sm} \end{pmatrix}.

示例A=(1234),B=(0100),C=(123456).A = \begin{pmatrix} 1 & 2 \ 3 & 4 \end{pmatrix}, \quad B = \begin{pmatrix} 0 & 1 \ 0 & 0 \end{pmatrix}, \quad C = \begin{pmatrix} 1 & 2 & 3 \ 4 & 5 & 6 \end{pmatrix}. 在矩阵 AA 中,A11=1,A12=2,A21=3,A22=4A_{11}=1, A_{12}=2, A_{21}=3, A_{22}=4BB 是一个 2×22 \times 2 矩阵,B21=0B_{21}=0CC 是一个 2×32 \times 3 矩阵。

接下来定义几种特殊的矩阵:

  • 零矩阵:所有元素均为 00 的矩阵,记作 00。为明确维度,可记 s×ms \times m 的零矩阵为 0s×m0_{s \times m}。例如,02×2=(0000)0_{2 \times 2} = \begin{pmatrix} 0 & 0 \ 0 & 0 \end{pmatrix}
  • 方阵:行数与列数相等的矩阵,即 s=ms = m。一个 mmmm 列的方阵也称为 mm 阶矩阵。例如,上面的 AABB 都是 22 阶方阵。

对于方阵,我们定义几条重要的“线”:

  • 主对角线:从左上角到右下角的连线上的元素,即 a11,a22,,amma_{11}, a_{22}, \dots, a_{mm}
  • 次对角线:紧邻主对角线两侧的平行线上的元素。一个 nn 阶方阵有 (n1)(n-1) 条次对角线。
  • 反对角线:从右上角到左下角的连线上的元素,即 a1m,a2,m1,,am1a_{1m}, a_{2, m-1}, \dots, a_{m1}

示例:对于三阶方阵 A=(123456789)A = \begin{pmatrix} 1 & 2 & 3 \ 4 & 5 & 6 \ 7 & 8 & 9 \end{pmatrix}

  • 主对角线元素:1,5,91, 5, 9
  • 第一条次对角线(主对角线右上方)元素:2,62, 6
  • 第二条次对角线(主对角线左下方)元素:4,84, 8
  • 反对角线元素:3,5,73, 5, 7

列向量可以看作是一个 n×1n \times 1 的特殊矩阵,例如 v=(159)\mathbf{v} = \begin{pmatrix} 1 \ 5 \ 9 \end{pmatrix}

矩阵的基本运算

转置

矩阵的转置是一种基本运算,它将矩阵的行和列互换。对于一个 s×ms \times m 的矩阵 A=(aij)A = (a_{ij}),其转置是一个 m×sm \times s 的矩阵,记作 ATA^TAA’(更推荐使用 ATA^T,以避免与导数记号混淆),定义为: (AT)ij=aji.(A^T){ij} = a{ji}. 即原矩阵 AA 的第 ii 行变成了 ATA^T 的第 ii 列。

示例: 若 A=(123456)A = \begin{pmatrix} 1 & 2 & 3 \ 4 & 5 & 6 \end{pmatrix},则 AT=(142536)A^T = \begin{pmatrix} 1 & 4 \ 2 & 5 \ 3 & 6 \end{pmatrix}

加法

只有当两个矩阵行列数完全相同时,才能进行加法运算。设 A=(aij)s×mA = (a_{ij}){s \times m}B=(bij)s×mB = (b{ij}){s \times m},则它们的和 C=A+BC = A + B 也是一个 s×ms \times m 的矩阵,其元素定义为对应元素之和: cij=aij+bij,对所有 i=1,,s,  j=1,,m.c{ij} = a_{ij} + b_{ij}, \quad \text{对所有 } i=1,\dots,s, ; j=1,\dots,m.

示例(1234)+(0112)=(1+02+13+(1)4+2)=(1326).\begin{pmatrix} 1 & 2 \ 3 & 4 \end{pmatrix} + \begin{pmatrix} 0 & 1 \ -1 & 2 \end{pmatrix} = \begin{pmatrix} 1+0 & 2+1 \ 3+(-1) & 4+2 \end{pmatrix} = \begin{pmatrix} 1 & 3 \ 2 & 6 \end{pmatrix}.

数量乘法

一个数(标量)cc 与矩阵 A=(aij)s×mA = (a_{ij}){s \times m} 相乘,结果是每个元素都乘以 cc,矩阵维度不变: (cA)ij=caij.(cA){ij} = c \cdot a_{ij}.

示例3×(1204)=(3×13×(2)3×03×4)=(36012).3 \times \begin{pmatrix} 1 & -2 \ 0 & 4 \end{pmatrix} = \begin{pmatrix} 3 \times 1 & 3 \times (-2) \ 3 \times 0 & 3 \times 4 \end{pmatrix} = \begin{pmatrix} 3 & -6 \ 0 & 12 \end{pmatrix}.

矩阵的初等变换

初等变换是化简矩阵、求解线性方程组的核心工具。它们是对矩阵行或列的三种基本操作。

初等行变换

对矩阵的进行以下三种操作,统称为初等行变换:

  1. 倍加变换:把某一行的 kk 倍加到另一行上。
  2. 对换变换:互换两行的位置。
  3. 倍乘变换:用一個非零数 kk 乘以某一行。

在书写变换过程时,我们使用箭头“\rightarrow”,并将具体操作写在箭头的上方

  • ri+krjr_i + k r_j:表示将第 jj 行的 kk 倍加到第 ii 行。
  • rirjr_i \leftrightarrow r_j:表示互换第 ii 行与第 jj 行。
  • krik r_i:表示将第 ii 行乘以 kk

示例:对矩阵 A=(235242723)A = \begin{pmatrix} 2 & -3 & 5 \ -2 & 4 & 2 \ 7 & -2 & 3 \end{pmatrix} 进行初等行变换。

  1. 将第一行的 22 倍加到第二行:r2+2r1\xrightarrow{r_2 + 2r_1} (2352+44+(6)2+10723)=(2352212723).\begin{pmatrix} 2 & -3 & 5 \ -2+4 & 4+(-6) & 2+10 \ 7 & -2 & 3 \end{pmatrix} = \begin{pmatrix} 2 & -3 & 5 \ 2 & -2 & 12 \ 7 & -2 & 3 \end{pmatrix}.
  2. 互换第二、三行:r2r3\xrightarrow{r_2 \leftrightarrow r_3} (2357232212).\begin{pmatrix} 2 & -3 & 5 \ 7 & -2 & 3 \ 2 & -2 & 12 \end{pmatrix}.
  3. 将第一行乘以 12\frac{1}{2}12r1\xrightarrow{\frac{1}{2}r_1} (13/25/27232212).\begin{pmatrix} 1 & -3/2 & 5/2 \ 7 & -2 & 3 \ 2 & -2 & 12 \end{pmatrix}.

初等列变换

类似地,对矩阵的进行以下三种操作,统称为初等列变换:

  1. 把某一列的 kk 倍加到另一列上。
  2. 互换两列的位置。
  3. 用一個非零数 kk 乘以某一列。

为了与行变换区分,列变换的具体操作写在箭头的下方

  • ci+kcjc_i + k c_j:表示将第 jj 列的 kk 倍加到第 ii 列。
  • cicjc_i \leftrightarrow c_j:表示互换第 ii 列与第 jj 列。
  • kcik c_i:表示将第 ii 列乘以 kk

示例:对矩阵 B=(127352743)B = \begin{pmatrix} 1 & -2 & 7 \ 3 & -5 & -2 \ -7 & 4 & 3 \end{pmatrix} 进行初等列变换。

  1. 将第一列加到第二列:c2+1c1\xrightarrow[c_2 + 1\cdot c_1]{} (12+1735+3274+(7)3)=(117322733).\begin{pmatrix} 1 & -2+1 & 7 \ 3 & -5+3 & -2 \ -7 & 4+(-7) & 3 \end{pmatrix} = \begin{pmatrix} 1 & -1 & 7 \ 3 & -2 & -2 \ -7 & -3 & 3 \end{pmatrix}.
  2. 互换第一、二列:c1c2\xrightarrow[c_1 \leftrightarrow c_2]{} (117232373).\begin{pmatrix} -1 & 1 & 7 \ -2 & 3 & -2 \ -3 & -7 & 3 \end{pmatrix}.
  3. 将第一列乘以 1-11c1\xrightarrow[-1\cdot c_1]{} (117232373).\begin{pmatrix} 1 & 1 & 7 \ 2 & 3 & -2 \ 3 & -7 & 3 \end{pmatrix}.

矩阵的分块

在处理大型矩阵或进行理论推导时,矩阵分块是一种极其有用的技术。它将一个大矩阵用若干条贯穿整个矩阵的横线和竖线,分割成若干个更小的矩形区域,每个区域称为一个子矩阵

AA 是一个 s×ms \times m 的矩阵。如果我们用横线将其分成 pp 个行块,用竖线将其分成 qq 个列块,则 AA 可以写成分块矩阵的形式: A=(A11A12A1qA21A22A2qAp1Ap2Apq).A = \begin{pmatrix} A_{11} & A_{12} & \cdots & A_{1q} \ A_{21} & A_{22} & \cdots & A_{2q} \ \vdots & \vdots & \ddots & \vdots \ A_{p1} & A_{p2} & \cdots & A_{pq} \end{pmatrix}. 其中,每个 AijA_{ij} 都是一个子矩阵。关键要求是:分割线必须贯穿整个矩阵,从而保证同一行的所有子矩阵具有相同的行数,同一列的所有子矩阵具有相同的列数。

示例:将 4×54 \times 5 矩阵 AA 分块。 A=(10231011041205331420)=(A11A12A21A22).A = \left(\begin{array}{cc|ccc} 1 & 0 & 2 & 3 & -1 \ 0 & 1 & 1 & 0 & 4 \ \hline -1 & 2 & 0 & 5 & 3 \ 3 & -1 & 4 & 2 & 0 \end{array}\right) = \begin{pmatrix} A_{11} & A_{12} \ A_{21} & A_{22} \end{pmatrix}. 这里,

  • A11=(1001)A_{11} = \begin{pmatrix} 1 & 0 \ 0 & 1 \end{pmatrix} 是一个 2×22 \times 2 子矩阵。
  • A12=(231104)A_{12} = \begin{pmatrix} 2 & 3 & -1 \ 1 & 0 & 4 \end{pmatrix} 是一个 2×32 \times 3 子矩阵。
  • A21=(1231)A_{21} = \begin{pmatrix} -1 & 2 \ 3 & -1 \end{pmatrix} 是一个 2×22 \times 2 子矩阵。
  • A22=(053420)A_{22} = \begin{pmatrix} 0 & 5 & 3 \ 4 & 2 & 0 \end{pmatrix} 是一个 2×32 \times 3 子矩阵。

注意:分块时,分割线必须“切穿”矩阵。不彻底的、随意的划分(例如只画部分横线或竖线)不能构成规范的分块矩阵结构,在后续的分块运算中会导致错误。

📝 动手练一练

  1. 矩阵运算练习 已知矩阵 A=(112034)A = \begin{pmatrix} 1 & -1 & 2 \ 0 & 3 & 4 \end{pmatrix}, B=(211520)B = \begin{pmatrix} 2 & 1 & -1 \ 5 & -2 & 0 \end{pmatrix},标量 c=3c = 3。 请计算: a) A+BA + B b) ATA^T c) cABcA - B

  2. 初等变换练习 对矩阵 C=(246123102)C = \begin{pmatrix} 2 & 4 & 6 \ 1 & 2 & 3 \ -1 & 0 & 2 \end{pmatrix} 依次执行以下初等行变换,写出每一步变换后的矩阵: a) 交换第1行和第2行。 b) 将新的第1行乘以 12\frac{1}{2}。 c) 将新的第3行加上第1行的1倍。

参考答案

  1. a) A+B=(301514)A+B = \begin{pmatrix} 3 & 0 & 1 \ 5 & 1 & 4 \end{pmatrix} b) AT=(101324)A^T = \begin{pmatrix} 1 & 0 \ -1 & 3 \ 2 & 4 \end{pmatrix} c) cAB=(14751112)cA - B = \begin{pmatrix} 1 & -4 & 7 \ -5 & 11 & 12 \end{pmatrix}
  2. a) (123246102)\begin{pmatrix} 1 & 2 & 3 \ 2 & 4 & 6 \ -1 & 0 & 2 \end{pmatrix} b) (0.511.5246102)\begin{pmatrix} 0.5 & 1 & 1.5 \ 2 & 4 & 6 \ -1 & 0 & 2 \end{pmatrix} c) (0.511.52460.513.5)\begin{pmatrix} 0.5 & 1 & 1.5 \ 2 & 4 & 6 \ -0.5 & 1 & 3.5 \end{pmatrix}

本章小结

本节我们建立了关于矩阵的最基础认知:

  • 矩阵是什么:一个 s×ms \times m 的数表,是线性代数的基本对象。
  • 矩阵怎么表示:用大写字母 A,B,A, B, \ldots 表示,元素用 aija_{ij} 标记,需掌握零矩阵、方阵等特殊形式。
  • 矩阵怎么算:掌握了转置(ATA^T)、加法(同型矩阵对应元素相加)、数量乘法(每个元素乘标量)三种基本运算。
  • 矩阵怎么变:学习了对矩阵行或列进行“倍加”、“互换”、“倍乘”三种初等变换,这是矩阵化简的基石。
  • 矩阵怎么分:理解了矩阵分块的思想,即将大矩阵用贯穿的线划分为规整的子矩阵,这是处理复杂问题的有效手段。

行动清单

  1. 动手验证:使用下面的Python代码示例,亲自验证矩阵的加法、转置和初等变换,加深对运算规则的理解。
  2. 概念辨析:默写矩阵加法、数乘、转置的定义,并各举一例。清晰区分主对角线、反对角线。
  3. 变换练习:任找一个 3×33 \times 3 矩阵,手动对其执行一系列行变换和列变换,记录每一步的过程和结果。
import numpy as np

# 1. 定义矩阵和标量
A = np.array([[1, -1, 2],
              [0, 3, 4]], dtype=float)
B = np.array([[2, 1, -1],
              [5, -2, 0]], dtype=float)
c = 3

print("矩阵 A:")
print(A)
print("\n矩阵 B:")
print(B)

# 2. 基本运算验证
print("\n=== 基本运算验证 ===")
# a) 矩阵加法
A_plus_B = A + B
print(f"A + B = \n{A_plus_B}")

# b) 矩阵转置
A_transpose = A.T
print(f"A 的转置 A^T = \n{A_transpose}")

# c) 数量乘法与减法
cA_minus_B = c * A - B
print(f"c*A - B = \n{cA_minus_B}")

# 3. 初等行变换演示
print("\n=== 初等行变换演示 ===")
C = np.array([[2, 4, 6],
              [1, 2, 3],
              [-1, 0, 2]], dtype=float)
print("原始矩阵 C:")
print(C)

# 复制矩阵以避免修改原数据
C_transformed = C.copy()

# a) 交换第0行和第1行 (Python索引从0开始)
C_transformed[[0, 1]] = C_transformed[[1, 0]]
print("\na) 交换第1行和第2行后:")
print(C_transformed)

# b) 将第0行乘以 1/2
C_transformed[0] = C_transformed[0] * 0.5
print("\nb) 将新的第1行乘以 1/2 后:")
print(C_transformed)

# c) 将第2行加上第0行的1倍
C_transformed[2] = C_transformed[2] + C_transformed[0]
print("\nc) 将新的第3行加上第1行的1倍后:")
print(C_transformed)

# 4. 矩阵分块示例 (使用切片)
print("\n=== 矩阵分块示例 ===")
D = np.array([[1, 0, 2, 3, -1],
              [0, 1, 1, 0, 4],
              [-1, 2, 0, 5, 3],
              [3, -1, 4, 2, 0]])
print("大矩阵 D (4x5):")
print(D)

# 进行分块:前2行前2列 -> D11, 前2行后3列 -> D12, 后2行前2列 -> D21, 后2行后3列 -> D22
D11 = D[0:2, 0:2]
D12 = D[0:2, 2:5]
D21 = D[2:4, 0:2]
D22 = D[2:4, 2:5]

print("\n子矩阵 D11 (2x2):")
print(D11)
print("\n子矩阵 D12 (2x3):")
print(D12)
print("\n子矩阵 D21 (2x2):")
print(D21)
print("\n子矩阵 D22 (2x3):")
print(D22)

— 小象教研组

配套学习资源与课件
  • 第10章讲义(含板书):线性代数(PDF · 15.5MB)
    下载
  • 课程示例程序:SVD 奇异值分解(ZIP · 50KB)
    下载
🎁 免费学习资源

领取《小象 11GB VIP 课件资料包与大厂真题手册》

包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。

  • 完整 Python / 数据分析 Jupyter 实战源码
  • 大厂真实业务数据集与练习题
  • 微信扫码添加课程顾问,免费获取网盘下载链接
微信二维码:扫码添加课程顾问微信扫码添加顾问