CONCEPT / linear-algebra

矩阵:组织线性关系的坐标语言

从形状、行列与列向量出发,理解矩阵运算、矩阵乘法、单位矩阵、逆矩阵和分块计算的结构含义。

尚未开始仅保存在此浏览器
先修vectors

本页目标

  1. 用形状、行、列和元素索引准确描述矩阵。
  2. 计算矩阵加法、数乘、转置、矩阵向量乘法和矩阵乘法。
  3. 从映射复合解释乘法顺序,并判断单位矩阵与逆矩阵的作用。
  4. 使用分块矩阵组织大型线性计算并识别维度错误。
本页目录

学习目标

矩阵既能记录一张有限数据表,也能表示线性方程组的系数和有限维线性映射。本章从形状与索引开始,逐步推导矩阵向量乘法和矩阵乘法,说明单位矩阵、逆矩阵与分块矩阵为何不是孤立规则。

先修知识

阅读前应熟悉向量加法、数乘和内积,并知道一组向量可以按列排列。行列式不是本章的先修;可逆性的讨论先使用“是否存在逆矩阵”这一代数定义,行列式判据留到后续章节。

本章只讨论实矩阵。矩阵用大写字母表示,向量用粗体小写字母表示。若 AAmm 行、nn 列,则写作 ARm×nA\in\mathbb R^{m\times n},第 ii 行第 jj 列元素记为 aija_{ij}

为什么需要矩阵

三个线性方程可以逐条书写,也可以把所有系数放在同一结构中;一个线性变换可以描述每个输入坐标如何影响每个输出坐标,也可以由一张系数表一次给出。矩阵的价值不只是“排整齐”,而是让相同的行列结构参与统一运算。

例如,灰度图像可表示为像素矩阵,关系网络可表示为邻接矩阵,样本数据可按“样本为行、特征为列”排列。三者的语义不同,不能仅凭形状互换;但形状检查、转置、分块和乘法仍遵守同一套代数规则。

定义、形状与索引

定义

一个 m×nm\times n 矩阵是按 mm 行、nn 列排列的标量数组

A=[a11a12a1na21a22a2nam1am2amn].A= \begin{bmatrix} a_{11}&a_{12}&\cdots&a_{1n}\\ a_{21}&a_{22}&\cdots&a_{2n}\\ \vdots&\vdots&\ddots&\vdots\\ a_{m1}&a_{m2}&\cdots&a_{mn} \end{bmatrix}.

两个矩阵相等,当且仅当形状相同且每个对应元素相等。

矩阵的第 jj 列是一个 mm 维向量,第 ii 行可视为一个长度为 nn 的行向量。方阵是行数与列数相等的矩阵;对角矩阵除主对角线外元素全为零;单位矩阵 InI_n 的主对角线全为一,其余元素为零。零矩阵的形状必须由上下文说明,因为 2×32\times3 零矩阵与 3×23\times2 零矩阵不是同一个对象。

示例一:从语义确认形状

从数据语义确认矩阵形状

记录四名学生在三次测验中的分数。若每名学生占一行、每次测验占一列,则数据矩阵 XR4×3X\in\mathbb R^{4\times3}。向量 wR3\mathbf w\in\mathbb R^3 给出三次测验的权重,乘积 XwR4X\mathbf w\in\mathbb R^4 为每名学生产生一个加权总分。若误把学生放在列上,则必须使用 XTX^\mathsf T 才能与同一个权重向量相乘。形状改变反映的是索引语义改变,并非排版选择。

加法、数乘与转置

同形矩阵逐元素相加,标量乘法也逐元素进行:

(A+B)ij=aij+bij,(cA)ij=caij.(A+B)_{ij}=a_{ij}+b_{ij}, \qquad (cA)_{ij}=ca_{ij}.

不同形状的矩阵没有逐元素加法,因为无法建立全部对应位置。转置把行列互换:若 ARm×nA\in\mathbb R^{m\times n},则 ATRn×mA^\mathsf T\in\mathbb R^{n\times m},并且 (AT)ij=aji(A^\mathsf T)_{ij}=a_{ji}。由索引直接可得

(A+B)T=AT+BT,(AT)T=A.(A+B)^\mathsf T=A^\mathsf T+B^\mathsf T, \qquad (A^\mathsf T)^\mathsf T=A.

转置不是“把矩阵转九十度”的几何变换;它交换输入输出索引的位置。在内积中,列向量的转置变成行向量,因此 xTy\mathbf x^\mathsf T\mathbf y 是一个标量,而 xyT\mathbf x\mathbf y^\mathsf T 是一个矩阵。

矩阵乘向量:列的线性组合

ARm×nA\in\mathbb R^{m\times n} 的列为 a1,,an\mathbf a_1,\ldots,\mathbf a_n,输入 x=(x1,ldots,xn)T\mathbf x=(x_1,ldots,x_n)^\mathsf T。定义

Ax=x1a1+cdots+xnan.A\mathbf x =x_1\mathbf a_1+cdots+x_n\mathbf a_n.

输出属于 Rm\mathbb R^m。从第 ii 个分量看,同一运算写成第 ii 行与输入向量的内积:

(Ax)i=j=1naijxj.(A\mathbf x)_i=\sum_{j=1}^{n}a_{ij}x_j.

“列的线性组合”和“行与输入做内积”是同一个乘法的两种读法。前者解释输出落在哪个列空间中,后者适合逐个计算输出坐标。

矩阵乘法来自映射复合

BRn×pB\in\mathbb R^{n\times p},它把 pp 维输入送到 nn 维;再由 ARm×nA\in\mathbb R^{m\times n} 把结果送到 mm 维。复合映射对任意 xRp\mathbf x\in\mathbb R^p 满足

A(Bx)=(AB)x,A(B\mathbf x)=(AB)\mathbf x,

所以乘积 ABAB 必须是 m×pm\times p 矩阵。其元素为

(AB)ij=k=1naikbkj.(AB)_{ij}=\sum_{k=1}^{n}a_{ik}b_{kj}.

中间维 nn 被求和消去。也可以逐列理解:ABAB 的第 jj 列等于 AA 作用在 BB 的第 jj 列上。因此矩阵乘法保留结合律 (AB)C=A(BC)(AB)C=A(BC),因为两边都表示三个映射按同一顺序复合;它一般不满足交换律,因为交换矩阵等于交换操作顺序,甚至可能因形状不匹配而无定义。

示例二:比较乘法顺序

比较两种乘法顺序

A=[1101],B=[2001].A=\begin{bmatrix}1&1\\0&1\end{bmatrix}, \qquad B=\begin{bmatrix}2&0\\0&1\end{bmatrix}.

AA 表示水平剪切,BB 表示横向放大。计算得

AB=[2101],BA=[2201].AB=\begin{bmatrix}2&1\\0&1\end{bmatrix}, \qquad BA=\begin{bmatrix}2&2\\0&1\end{bmatrix}.

对向量 (0,1)T(0,1)^\mathsf T,前者输出 (1,1)T(1,1)^\mathsf T,后者输出 (2,1)T(2,1)^\mathsf T。先放大再剪切与先剪切再放大并不相同,差异正由非交换性记录。

单位矩阵、逆矩阵与方程求解

单位矩阵满足 ImA=AI_mA=AAIn=AAI_n=A。对方阵 ARn×nA\in\mathbb R^{n\times n},若存在矩阵 BB 使 AB=BA=InAB=BA=I_n,则称 AA 可逆,并把唯一的逆记为 A1A^{-1}。唯一性可由结合律证明:若 B,CB,C 都是逆,则

B=B(AC)=(BA)C=C.B=B(AC)=(BA)C=C.

矩阵方程 Ax=bA\mathbf x=\mathbf bAA 可逆时有唯一解 x=A1b\mathbf x=A^{-1}\mathbf b。这是一条结构结论,不表示实际计算应先显式形成逆矩阵。数值计算通常通过消元或分解直接求解方程,以减少运算并改善稳定性。

只有方阵才可能拥有双侧逆。非方阵仍可能在某一侧有逆,或者通过最小二乘与广义逆得到受限意义的恢复,但这些概念需要额外条件,不能统称为普通逆矩阵。

分块矩阵

大型矩阵常按行列切成相容的块。例如

A=[A11A12A21A22],x=[x1x2].A=\begin{bmatrix}A_{11}&A_{12}\\A_{21}&A_{22}\end{bmatrix}, \qquad \mathbf x=\begin{bmatrix}\mathbf x_1\\\mathbf x_2\end{bmatrix}.

只要块的尺寸匹配,就可写成

Ax=[A11x1+A12x2A21x1+A22x2].A\mathbf x= \begin{bmatrix} A_{11}\mathbf x_1+A_{12}\mathbf x_2\\ A_{21}\mathbf x_1+A_{22}\mathbf x_2 \end{bmatrix}.

分块沿用原有乘法,只是把求和按索引范围分组。它能暴露变量组之间的耦合,也适合表达多模态数据、约束系统和神经网络层。块不能只凭视觉位置相加;每个块的实际形状仍须逐项核对。

读写矩阵的三层检查

面对一个矩阵表达式,第一层先检查形状:每个乘积的内维是否相同,最终输出是否具有问题所需的行数与列数。第二层检查语义:约定一列代表一个样本还是一种特征,输入向量的分量顺序是否与矩阵列的含义一致。第三层检查运算:把输出的某个分量展开成求和,确认索引恰好遍历了应当聚合的对象。

例如数据矩阵若约定“行是样本、列是特征”,右乘权重向量会为每个样本产生一个标量;若约定相反,则同一任务通常要左乘或先转置。两种存储约定都可以成立,但不能在推导中途悄悄切换。形状正确只是必要条件,因为两个语义不同、尺寸恰好相同的矩阵仍可能被错误相乘。写清每个轴的含义,能同时减少代数错误与程序中的数据排列错误。

常见误区

常见误区

“矩阵乘法就是逐元素相乘。”逐元素乘积要求两个矩阵同形,输出仍同形;矩阵乘法要求左矩阵列数等于右矩阵行数,并对中间索引求和。两者定义、形状和用途都不同。

反例

“只要 AB=IAB=I 就可以立刻把 BB 当作任意形状矩阵的双侧逆。”对无限维算子或非方阵,单侧逆未必给出另一侧逆。有限维同阶方阵中一侧逆确实推出双侧逆,但结论依赖维数与方阵条件,不能省略前提。

常见误区

“维度能对上,乘法就一定有合理含义。”形状匹配只保证代数运算有定义。若行表示样本而列表示特征,却把两个语义不相容的数据矩阵相乘,结果仍可能毫无建模意义。索引对应的对象和单位必须同时说明。

代码:带形状检查的矩阵乘法

type Matrix = readonly (readonly number[])[];

export function multiply(a: Matrix, b: Matrix): number[][] {
  const rows = a.length;
  const inner = a[0]?.length ?? 0;
  const columns = b[0]?.length ?? 0;
  if (rows === 0 || inner === 0 || b.length !== inner) {
    throw new Error("Matrix dimensions are not compatible.");
  }
  if (a.some((row) => row.length !== inner) || b.some((row) => row.length !== columns)) {
    throw new Error("Matrices must be rectangular.");
  }
  return Array.from({ length: rows }, (_, i) =>
    Array.from({ length: columns }, (_, j) =>
      Array.from({ length: inner }, (_, k) => a[i][k] * b[k][j]).reduce(
        (sum, value) => sum + value,
        0,
      ),
    ),
  );
}

教学实现明确展示三重索引,但没有处理稀疏结构、缓存布局和浮点误差。实际大型计算应使用经过测试的数值库,并在接口层保留形状和数据类型信息。

练习

练习

形状检查:若 AR3×4A\in\mathbb R^{3\times4}BR4×2B\in\mathbb R^{4\times2}CR2×3C\in\mathbb R^{2\times3},判断 ABABBABA(AB)C(AB)CA(BC)A(BC) 是否有定义,并写出结果形状。

查看解答

ABAB 有定义且为 3×23\times2BABA 无定义,因为 BB 的列数 22 不等于 AA 的行数 33(AB)C(AB)C3×33\times3BCBC4×34\times3,所以 A(BC)A(BC) 也是 3×33\times3,两者由结合律相等。

练习

计算:设 A=[1213]A=\begin{bmatrix}1&2\\-1&3\end{bmatrix}x=(2,1)T\mathbf x=(2,-1)^\mathsf T。分别用“列的线性组合”和“行与输入内积”计算 AxA\mathbf x,并核对结果一致。

查看解答

按列计算为 2(1,1)T(2,3)T=(0,5)T2(1,-1)^\mathsf T-(2,3)^\mathsf T=(0,-5)^\mathsf T。按行计算为 (12+2(1),12+3(1))T=(0,5)T(1\cdot2+2\cdot(-1),-1\cdot2+3\cdot(-1))^\mathsf T=(0,-5)^\mathsf T

练习

证明转置会反转矩阵乘法顺序: (AB)T=BTAT(AB)^\mathsf T=B^\mathsf T A^\mathsf T。说明为什么不能写成 ATBTA^\mathsf T B^\mathsf T

查看解答

(i,j)(i,j) 个元素满足 ((AB)T)ij=(AB)ji=kajkbki((AB)^\mathsf T)_{ij}=(AB)_{ji}=\sum_k a_{jk}b_{ki}。另一方面, (BTAT)ij=kbkiajk(B^\mathsf T A^\mathsf T)_{ij}=\sum_k b_{ki}a_{jk},两式相同。若保持原顺序,形状可能不匹配,即使匹配也通常得到另一个复合顺序。

与其他知识的关系

  • 向量 提供矩阵列、矩阵行和矩阵向量乘法的基本对象。
  • 矩阵运算 继续研究转置、分块和特殊矩阵结构。
  • 矩阵乘法 深入分析复合映射、计算复杂度和非交换性。
  • 线性方程组 把约束统一写成 Ax=bA\mathbf x=\mathbf b
  • 线性变换 解释矩阵为何是选定基后的映射表示。

资源

lecture · 2011

MIT 18.06SC Linear Algebra

Gilbert Strang

提供线性代数核心概念的完整课程顺序、例题、习题和考试材料。

打开官方来源

MIT OpenCourseWare 18.06SC 从列向量、方程组和线性映射三条线索讲解矩阵,并系统展开消元、逆矩阵、子空间和矩阵分解。

lecture · 2010

MIT 18.02SC Multivariable Calculus

Denis Auroux

把线性代数对象用于几何与多变量问题,并提供例题、习题和解答。

打开官方来源

MIT OpenCourseWare 18.02SC 使用矩阵和向量组织三维坐标、多变量线性近似与几何计算,可用于观察矩阵语言如何进入微积分问题;矩阵分解与抽象可逆性仍以线性代数课程为主。

下一步

接下来阅读 线性变换,把矩阵乘向量理解为整个空间的映射;再学习 行列式,获得方阵可逆性和有向体积缩放的快速判据。若目标是求解方程,应转到 线性方程组高斯消元

作者one-forth-core
最近修订2026-07-11
审阅状态待独立人工审阅