CONCEPT / linear-algebra
矩阵:组织线性关系的坐标语言
从形状、行列与列向量出发,理解矩阵运算、矩阵乘法、单位矩阵、逆矩阵和分块计算的结构含义。
本页目标
- 用形状、行、列和元素索引准确描述矩阵。
- 计算矩阵加法、数乘、转置、矩阵向量乘法和矩阵乘法。
- 从映射复合解释乘法顺序,并判断单位矩阵与逆矩阵的作用。
- 使用分块矩阵组织大型线性计算并识别维度错误。
本页目录
学习目标
矩阵既能记录一张有限数据表,也能表示线性方程组的系数和有限维线性映射。本章从形状与索引开始,逐步推导矩阵向量乘法和矩阵乘法,说明单位矩阵、逆矩阵与分块矩阵为何不是孤立规则。
先修知识
阅读前应熟悉向量加法、数乘和内积,并知道一组向量可以按列排列。行列式不是本章的先修;可逆性的讨论先使用“是否存在逆矩阵”这一代数定义,行列式判据留到后续章节。
本章只讨论实矩阵。矩阵用大写字母表示,向量用粗体小写字母表示。若 有 行、 列,则写作 ,第 行第 列元素记为 。
为什么需要矩阵
三个线性方程可以逐条书写,也可以把所有系数放在同一结构中;一个线性变换可以描述每个输入坐标如何影响每个输出坐标,也可以由一张系数表一次给出。矩阵的价值不只是“排整齐”,而是让相同的行列结构参与统一运算。
例如,灰度图像可表示为像素矩阵,关系网络可表示为邻接矩阵,样本数据可按“样本为行、特征为列”排列。三者的语义不同,不能仅凭形状互换;但形状检查、转置、分块和乘法仍遵守同一套代数规则。
定义、形状与索引
一个 矩阵是按 行、 列排列的标量数组
两个矩阵相等,当且仅当形状相同且每个对应元素相等。
矩阵的第 列是一个 维向量,第 行可视为一个长度为 的行向量。方阵是行数与列数相等的矩阵;对角矩阵除主对角线外元素全为零;单位矩阵 的主对角线全为一,其余元素为零。零矩阵的形状必须由上下文说明,因为 零矩阵与 零矩阵不是同一个对象。
示例一:从语义确认形状
记录四名学生在三次测验中的分数。若每名学生占一行、每次测验占一列,则数据矩阵 。向量 给出三次测验的权重,乘积 为每名学生产生一个加权总分。若误把学生放在列上,则必须使用 才能与同一个权重向量相乘。形状改变反映的是索引语义改变,并非排版选择。
加法、数乘与转置
同形矩阵逐元素相加,标量乘法也逐元素进行:
不同形状的矩阵没有逐元素加法,因为无法建立全部对应位置。转置把行列互换:若 ,则 ,并且 。由索引直接可得
转置不是“把矩阵转九十度”的几何变换;它交换输入输出索引的位置。在内积中,列向量的转置变成行向量,因此 是一个标量,而 是一个矩阵。
矩阵乘向量:列的线性组合
设 的列为 ,输入 。定义
输出属于 。从第 个分量看,同一运算写成第 行与输入向量的内积:
“列的线性组合”和“行与输入做内积”是同一个乘法的两种读法。前者解释输出落在哪个列空间中,后者适合逐个计算输出坐标。
矩阵乘法来自映射复合
设 ,它把 维输入送到 维;再由 把结果送到 维。复合映射对任意 满足
所以乘积 必须是 矩阵。其元素为
中间维 被求和消去。也可以逐列理解: 的第 列等于 作用在 的第 列上。因此矩阵乘法保留结合律 ,因为两边都表示三个映射按同一顺序复合;它一般不满足交换律,因为交换矩阵等于交换操作顺序,甚至可能因形状不匹配而无定义。
示例二:比较乘法顺序
取
表示水平剪切, 表示横向放大。计算得
对向量 ,前者输出 ,后者输出 。先放大再剪切与先剪切再放大并不相同,差异正由非交换性记录。
单位矩阵、逆矩阵与方程求解
单位矩阵满足 与 。对方阵 ,若存在矩阵 使 ,则称 可逆,并把唯一的逆记为 。唯一性可由结合律证明:若 都是逆,则
矩阵方程 在 可逆时有唯一解 。这是一条结构结论,不表示实际计算应先显式形成逆矩阵。数值计算通常通过消元或分解直接求解方程,以减少运算并改善稳定性。
只有方阵才可能拥有双侧逆。非方阵仍可能在某一侧有逆,或者通过最小二乘与广义逆得到受限意义的恢复,但这些概念需要额外条件,不能统称为普通逆矩阵。
分块矩阵
大型矩阵常按行列切成相容的块。例如
只要块的尺寸匹配,就可写成
分块沿用原有乘法,只是把求和按索引范围分组。它能暴露变量组之间的耦合,也适合表达多模态数据、约束系统和神经网络层。块不能只凭视觉位置相加;每个块的实际形状仍须逐项核对。
读写矩阵的三层检查
面对一个矩阵表达式,第一层先检查形状:每个乘积的内维是否相同,最终输出是否具有问题所需的行数与列数。第二层检查语义:约定一列代表一个样本还是一种特征,输入向量的分量顺序是否与矩阵列的含义一致。第三层检查运算:把输出的某个分量展开成求和,确认索引恰好遍历了应当聚合的对象。
例如数据矩阵若约定“行是样本、列是特征”,右乘权重向量会为每个样本产生一个标量;若约定相反,则同一任务通常要左乘或先转置。两种存储约定都可以成立,但不能在推导中途悄悄切换。形状正确只是必要条件,因为两个语义不同、尺寸恰好相同的矩阵仍可能被错误相乘。写清每个轴的含义,能同时减少代数错误与程序中的数据排列错误。
常见误区
“矩阵乘法就是逐元素相乘。”逐元素乘积要求两个矩阵同形,输出仍同形;矩阵乘法要求左矩阵列数等于右矩阵行数,并对中间索引求和。两者定义、形状和用途都不同。
“只要 就可以立刻把 当作任意形状矩阵的双侧逆。”对无限维算子或非方阵,单侧逆未必给出另一侧逆。有限维同阶方阵中一侧逆确实推出双侧逆,但结论依赖维数与方阵条件,不能省略前提。
“维度能对上,乘法就一定有合理含义。”形状匹配只保证代数运算有定义。若行表示样本而列表示特征,却把两个语义不相容的数据矩阵相乘,结果仍可能毫无建模意义。索引对应的对象和单位必须同时说明。
代码:带形状检查的矩阵乘法
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,
),
),
);
}
教学实现明确展示三重索引,但没有处理稀疏结构、缓存布局和浮点误差。实际大型计算应使用经过测试的数值库,并在接口层保留形状和数据类型信息。
练习
形状检查:若 、 、 ,判断 、、 与 是否有定义,并写出结果形状。
查看解答
有定义且为 ; 无定义,因为 的列数 不等于 的行数 。 为 。 为 ,所以 也是 ,两者由结合律相等。
计算:设 、 。分别用“列的线性组合”和“行与输入内积”计算 ,并核对结果一致。
查看解答
按列计算为 。按行计算为 。
证明转置会反转矩阵乘法顺序: 。说明为什么不能写成 。
查看解答
第 个元素满足 。另一方面, ,两式相同。若保持原顺序,形状可能不匹配,即使匹配也通常得到另一个复合顺序。
与其他知识的关系
- 向量 提供矩阵列、矩阵行和矩阵向量乘法的基本对象。
- 矩阵运算 继续研究转置、分块和特殊矩阵结构。
- 矩阵乘法 深入分析复合映射、计算复杂度和非交换性。
- 线性方程组 把约束统一写成 。
- 线性变换 解释矩阵为何是选定基后的映射表示。
资源
MIT 18.06SC Linear Algebra
Gilbert Strang
提供线性代数核心概念的完整课程顺序、例题、习题和考试材料。
打开官方来源MIT OpenCourseWare 18.06SC 从列向量、方程组和线性映射三条线索讲解矩阵,并系统展开消元、逆矩阵、子空间和矩阵分解。
MIT 18.02SC Multivariable Calculus
Denis Auroux
把线性代数对象用于几何与多变量问题,并提供例题、习题和解答。
打开官方来源MIT OpenCourseWare 18.02SC 使用矩阵和向量组织三维坐标、多变量线性近似与几何计算,可用于观察矩阵语言如何进入微积分问题;矩阵分解与抽象可逆性仍以线性代数课程为主。
下一步
接下来阅读 线性变换,把矩阵乘向量理解为整个空间的映射;再学习 行列式,获得方阵可逆性和有向体积缩放的快速判据。若目标是求解方程,应转到 线性方程组 与 高斯消元。