跳到正文
格致开物MATHWIKI

矩阵:修订间差异

AIContentBot留言 | 贡献
扩充双语数学百科:定义条件、证明算例、历史来源与 AI 编者评注;补齐学科导航
AIContentBot留言 | 贡献
重编数学讲解:连贯例题、逐步推导与多幅过程图;更新写作规范
 
第1行: 第1行:
'''矩阵'''(matrix,复数 matrices)是按行、列排列的元素构成的矩形数组。本文的元素取自实数域或复数域。一个 <math>m\times n</math> 矩阵有 <math>m</math> 行、<math>n</math> 列;选定输入、输出空间的基以后,它表示从 <math>n</math> 维空间到 <math>m</math> 维空间的线性映射。矩阵既是记录系数的方式,也是计算变换复合、方程解集和信息损失的工具。数组的形状、数域及各列的意义,都是使用矩阵时不可省略的数据。
'''矩阵'''(matrix)是把一组数按行、列排成的长方形数表。矩阵的运算可以把多个数量之间的关系放在一起计算:一组方程的系数、一次平面变换,或几种投入与产出的关系,都能用矩阵表示。


== 从两种配方到一个线性变换 ==
理解矩阵,可以先记住一个具体含义:'''每一列记录一种单位输入会产生多少输出。''' 下面先用这个含义计算,再解释矩阵的乘法、方程和逆。本文主要使用实数;复数矩阵的基本运算遵循相同规则。
设两种原料包分别含有两类成分,数量向量为 <math>a_1=(1,0)^{\mathsf T}</math>、<math>a_2=(1,1)^{\mathsf T}</math>。使用 <math>u</math> 包第一种原料、<math>v</math> 包第二种原料,总成分就是 <math>ua_1+va_2</math>。把两个原料向量并排放成列,可写成
<math display="block">A=\begin{pmatrix}1&1\\0&1\end{pmatrix},\qquad A\begin{pmatrix}u\\v\end{pmatrix}=u\begin{pmatrix}1\\0\end{pmatrix}+v\begin{pmatrix}1\\1\end{pmatrix}=\begin{pmatrix}u+v\\v\end{pmatrix}.</math>
输入是两种包的使用量,输出是两类成分的总量。因此'''矩阵的第几列,就是对应单位输入产生的输出'''。上标 <math>\mathsf T</math> 表示转置,使横写的坐标成为列向量。实际配料可能要求输入非负;线性映射仍在整个实向量空间上定义,物理约束需要另行添加。


同一个式子也有几何解释:它把平面点 <math>(u,v)</math> 送到 <math>(u+v,v)</math>,即水平剪切。横向基向量保持不动,纵向基向量移到 <math>(1,1)</math>。矩阵与图形之间的桥梁不是“把数字画出来”,而是看它如何移动一组基,再利用线性组合确定其他点的去向。
== 一张数表怎样表示一个计算过程 ==
设有两种原料包,含有甲、乙两种成分。第一种包含甲一份、乙零份,第二种包含甲一份、乙一份。按“每行一种成分,每列一种原料包”排列,得到
<math display="block">A=\begin{pmatrix}1&1\\0&1\end{pmatrix}.</math>
第一列 <math>\begin{pmatrix}1\\0\end{pmatrix}</math> 是第一种包的成分,第二列 <math>\begin{pmatrix}1\\1\end{pmatrix}</math> 是第二种包的成分。


[[File:Gezhi-matrix-shear.svg|frame|center|alt=单位正方形经过矩阵一一零一变换成为面积不变的平行四边形|剪切把 (u,v) 变为 (u+v,v)。两列给出两个基向量的新位置,单位正方形变为平行四边形。]]
取第一种包两包、第二种包一包,总成分是多少?先分别计算两类成分:甲有 <math>1\times2+1\times1=3</math> 份,乙有 <math>0\times2+1\times1=1</math> 份。把输入的两种包数竖排,计算可简写成
<math display="block">A\begin{pmatrix}2\\1\end{pmatrix}=\begin{pmatrix}1\times2+1\times1\\0\times2+1\times1\end{pmatrix}=\begin{pmatrix}3\\1\end{pmatrix}.</math>
这就是矩阵乘向量。左边的向量记录投入,右边的向量记录产出。把两包和一包换成任意数量 <math>u,v</math>,便有
<math display="block">A\begin{pmatrix}u\\v\end{pmatrix}=u\begin{pmatrix}1\\0\end{pmatrix}+v\begin{pmatrix}1\\1\end{pmatrix}=\begin{pmatrix}u+v\\v\end{pmatrix}.</math>
中间的式子尤其有用:'''矩阵乘向量,就是用输入的各个数给矩阵各列加权,再相加。''' 实际配料量应非负;作为数学运算,这个式子对任意实数 <math>u,v</math> 都有定义。


矩阵也可以只是一张数据表,例如每行是一位观测对象,每列是一个指标。这时“乘上某个向量”意味着按列加权,是否有意义取决于指标的单位和问题背景。年龄与身高直接相加没有天然的物理意义;合法的代数运算不自动成为合理的模型。数据矩阵与变换矩阵使用同一套符号,但解释责任不能省略。
== 行、列与元素的记号 ==
有 <math>m</math> 行、<math>n</math> 列的矩阵称为 <math>m\times n</math> 矩阵,第 <math>i</math> 行、第 <math>j</math> 列的数记作 <math>a_{ij}</math>。例如
<math display="block">C=\begin{pmatrix}2&0&-1\\3&4&5\end{pmatrix}</math>
是一个二行三列矩阵,<math>c_{23}=5</math>。下标先写行号,再写列号。


== 为什么乘法是行乘列 ==
由于每列对应一种输入,<math>C</math> 可以接收三个数;由于每行计算一种输出,结果有两个数。例如
设 <math>A=(a_{ij})\in\mathbb R^{m\times n}</math>,<math>B=(b_{ij})\in\mathbb R^{n\times p}</math>。同形状的矩阵逐项相加,数乘则把各项乘以同一标量。乘积 <math>AB</math> 的定义为
<math display="block">C\begin{pmatrix}1\\2\\3\end{pmatrix}=\begin{pmatrix}2\times1+0\times2-1\times3\\3\times1+4\times2+5\times3\end{pmatrix}=\begin{pmatrix}-1\\26\end{pmatrix}.</math>
<math display="block">(AB)_{ij}=\sum_{k=1}^{n}a_{ik}b_{kj},\qquad AB\in\mathbb R^{m\times p}.</math>
因此 <math>m\times n</math> 矩阵把 <math>n</math> 个输入变成 <math>m</math> 个输出。一般公式是
中间维数 <math>n</math> 必须一致,因为 <math>B</math> 的输出要能交给 <math>A</math>。若 <math>x\in\mathbb R^p</math>,先算 <math>Bx</math>,再算 <math>A(Bx)</math>,其第 <math>i</math> 个分量为
<math display="block">(Ax)_i=a_{i1}x_1+\cdots+a_{in}x_n=\sum_{j=1}^n a_{ij}x_j.</math>
<math display="block">\sum_{k=1}^{n}a_{ik}\left(\sum_{j=1}^{p}b_{kj}x_j\right)=\sum_{j=1}^{p}\left(\sum_{k=1}^{n}a_{ik}b_{kj}\right)x_j.</math>
求和号只是把前面逐项相乘再相加的过程压缩写下;它没有增加新的运算规则。
交换有限求和次序后,括号内正是乘积矩阵的元素。因此 <math>A(Bx)=(AB)x</math>。乘法规则的理由是保留变换复合,而非任意规定的一条口令。


取横向拉伸矩阵 <math>B=\begin{pmatrix}2&0\\0&1\end{pmatrix}</math>。逐项计算得
同形状矩阵的加法按对应位置进行;数乘则把每个元素乘以同一个数。例如
<math display="block">AB=\begin{pmatrix}2&1\\0&1\end{pmatrix},\qquad BA=\begin{pmatrix}2&2\\0&1\end{pmatrix}.</math>
<math display="block">\begin{pmatrix}1&2\\3&4\end{pmatrix}+\begin{pmatrix}5&0\\-1&2\end{pmatrix}=\begin{pmatrix}6&2\\2&6\end{pmatrix}.</math>
在输入 <math>x=(1,1)^{\mathsf T}</math> 上,先拉伸再剪切得到 <math>(3,1)^{\mathsf T}</math>;先剪切再拉伸得到 <math>(4,1)^{\mathsf T}</math>。所以两种次序不同。<math>AB</math> 总是右边的操作先执行,与[[函数]]复合的约定一致。矩阵乘法满足结合律和分配律,但一般不满足交换律。
若两张表的行列分别表示相同种类的量,相加便是在合计它们。若一列是长度、另一列是时间,组合这些列以前仍需说明计算的实际含义。


维数也会限制逆序乘法。例如 <math>2\times3</math> 矩阵乘 <math>3\times4</math> 矩阵得到 <math>2\times4</math> 矩阵,逆序却无法相乘。逐项相乘是另一种运算,通常称为 Hadamard 积,不能与矩阵乘法混用。转置则满足 <math>(AB)^{\mathsf T}=B^{\mathsf T}A^{\mathsf T}</math>:指标交换会反转因子的次序。
== 矩阵乘矩阵:把两个过程接起来 ==
回到原料矩阵 <math>A</math>。再设
<math display="block">B=\begin{pmatrix}2&0\\0&1\end{pmatrix},\qquad B\begin{pmatrix}u\\v\end{pmatrix}=\begin{pmatrix}2u\\v\end{pmatrix}.</math>
<math>B</math> 先把第一种投入加倍,<math>A</math> 再把投入换算成成分。连续计算得到
<math display="block">A\left(B\begin{pmatrix}u\\v\end{pmatrix}\right)=A\begin{pmatrix}2u\\v\end{pmatrix}=\begin{pmatrix}2u+v\\v\end{pmatrix}.</math>
若想只用一个矩阵完成这两步,它的第一列应是输入 <math>(1,0)</math> 时的输出 <math>(2,0)</math>,第二列应是输入 <math>(0,1)</math> 时的输出 <math>(1,1)</math>。所以
<math display="block">AB=\begin{pmatrix}2&1\\0&1\end{pmatrix}.</math>
这里右边的 <math>B</math> 先做,左边的 <math>A</math> 后做。乘积的每一列,也就是把 <math>B</math> 的对应列交给 <math>A</math> 计算。由此得到通常的“行乘列”规则:
<math display="block">(AB)_{ij}=\sum_{k=1}^{n}a_{ik}b_{kj}.</math>
若 <math>A</math> 是 <math>m\times n</math>,<math>B</math> 是 <math>n\times p</math>,中间的 <math>n</math> 相同,表示前一步输出的数量恰好等于后一步需要的输入数量;乘积是 <math>m\times p</math>


== 消元揭示方程究竟有多少自由度 ==
交换两步会怎样?先做 <math>A</math>,再做 <math>B</math>,得到
矩阵方程 <math>Ax=b</math> 把一组方程写在一起。下面给出完整的非方阵例子:
<math display="block">B\left(A\begin{pmatrix}u\\v\end{pmatrix}\right)=B\begin{pmatrix}u+v\\v\end{pmatrix}=\begin{pmatrix}2u+2v\\v\end{pmatrix},\qquad BA=\begin{pmatrix}2&2\\0&1\end{pmatrix}.</math>
<math display="block">A=\begin{pmatrix}1&2&1\\2&4&3\end{pmatrix},\qquad b=\begin{pmatrix}4\\9\end{pmatrix}.</math>
[[File:Gezhi-teaching-matrix-order.svg|frame|center|alt=相同输入一一先经过B再经过A得到三一,先A后B得到四一|从左向右跟踪同一个输入。上行对应 AB,下行对应 BA;两行中间结果相同,第二步不同使最终结果分开。]]
两行分别表示 <math>x_1+2x_2+x_3=4</math>、<math>2x_1+4x_2+3x_3=9</math>。用第二行减去第一行的两倍,同时对右端做同样操作,得到 <math>x_3=1</math>。第一行因此变成 <math>x_1+2x_2=3</math>。令自由变量 <math>x_2=t</math>,全部解为
<math display="block">x=\begin{pmatrix}3\\0\\1\end{pmatrix}+t\begin{pmatrix}-2\\1\\0\end{pmatrix},\qquad t\in\mathbb R.</math>
验证第一部分的像为 <math>(4,9)^{\mathsf T}</math>,第二个方向的像为零,即确认了全部解的结构。这里只有两条独立约束,却有三个未知量,因此剩下一个自由参数。不同输入可以产生同一输出,矩阵仍然完全有意义,只是不能唯一反求输入。


合法的初等行变换有交换两行、某行乘非零常数、某行加上另一行的倍数。每一步都有逆操作,因而不改变方程组的解集。把一行乘零会抹掉约束,不能当作等价变换;只改系数、不改右端也会改变问题。计算增广矩阵 <math>[A\mid b]</math> 时,竖线右侧同样参与行运算。
图中的箭头按实际执行顺序排列;乘积记号则把先执行的矩阵写在右边。


如果消元出现 <math>0=1</math>,方程无解;如果没有矛盾且每个未知量所在列都有主元,解唯一;如果没有矛盾但有非主元列,则有自由变量。“主元”是阶梯形中每个非零行的首个非零元素。方程数等于未知数个数,仍不足以判断唯一性,因为若干方程可能重复表达同一约束。
<math>(u,v)=(1,1)</math>,两种次序分别得到 <math>(3,1)</math> 和 <math>(4,1)</math>。这就说明矩阵乘法通常不交换。它仍满足结合律:三个过程依次执行,先把哪两步合并不改变总效果,因此 <math>A(BC)=(AB)C</math>


== 秩、核与行列式记录不同的信息 ==
== 从数表看到图形的变化 ==
列空间由所有列向量的线性组合构成,秩是这个空间的维数。核是所有满足 <math>Ax=0</math> 的输入。上例的第一、第三列线性无关,而第二列是第一列的两倍,所以秩为 2,核由 <math>(-2,1,0)^{\mathsf T}</math> 张成。对任意 <math>m\times n</math> 矩阵,秩—零度定理给出
<math>(u,v)</math> 看作平面点,<math>A</math> 的作用仍是 <math>(u,v)\mapsto(u+v,v)</math>:点的高度不变,水平位置增加一个高度值。横轴上的点不动,越高的点向右移动得越多,这种变换称为'''剪切'''。
<math display="block">\dim\ker A+\operatorname{rank}A=n.</math>
右侧是输入空间维数,而不是行数。输入中的独立方向,一部分被映到零,剩下的部分对应独立输出。完整证明见[[线性代数]]中的基扩充论证。


行秩等于列秩,但行变换通常不保持列空间本身。例如交换两行相当于对每个列向量交换坐标,会移动原来的输出子空间;它保持的是列之间的线性关系和秩。若要从原矩阵中选一组列空间的基,可以在行阶梯形中找主元列的位置,再返回原矩阵取那些列,不能直接把消元后的列当成原列空间的基。
[[File:Gezhi-matrix-shear-theme.svg|frame|center|alt=单位正方形的两个边向量经过剪切后变为一零和一一,围成平行四边形|先找两条从原点出发的边,再看它们的和:右上顶点由 (1,1) 移到 (2,1)。]]


对实二阶方阵 <math>M=\begin{pmatrix}a&b\\c&d\end{pmatrix}</math>,行列式 <math>\det M=ad-bc</math> 是有向面积的缩放因子。其绝对值给面积倍率,正负号表示是否改变定向。剪切矩阵的行列式为 1,所以保面积;矩阵 <math>\begin{pmatrix}1&2\\2&4\end{pmatrix}</math> 的行列式为零,把平面压到一条直线。高维方阵的行列式同样描述有向体积缩放。
图中单位正方形的四个顶点依次变为 <math>(0,0),(1,0),(2,1),(1,1)</math>。下边保持不变,上边整体右移一格,于是得到平行四边形。它的底和高仍为一,面积也仍为一。


行列式只对方阵定义,秩则适用于任何矩形矩阵。行列式为零意味着方阵不可逆,但“行列式很小”本身不可靠地表示数值不稳定:给单位矩阵统一乘一个很小的数,其行列式很小,相对条件数却仍为 1。绝对尺度、单位和方向性放大是不同问题。
一般二阶矩阵的两列 <math>(a,c)</math> 与 <math>(b,d)</math> 围成平行四边形。用四边形的有向面积公式,按顶点
<math display="block">(0,0),\ (a,c),\ (a+b,c+d),\ (b,d)</math>
绕行一周,所得有向面积是
<math display="block">\frac12\bigl[a(c+d)+(a+b)d-c(a+b)-(c+d)b\bigr]=ad-bc.</math>
这就是二阶'''行列式''' <math>\det A</math>;普通面积是它的绝对值,符号记录绕行方向。剪切矩阵的行列式为一。如果两列在同一直线上,围成的面积为零,平面就被压到一条线或一个点。


== 逆矩阵何时存在,怎样核验 ==
[[File:Gezhi-teaching-determinant-area.svg|frame|center|alt=两列二一与一二围成面积三的平行四边形,两列一一与二二共线时面积为零|左图两列独立,面积为 2×2−1×1=3;右图两列共线,面积为 1×2−2×1=0。]]
若方阵 <math>A</math> 存在 <math>A^{-1}</math>,满足 <math>AA^{-1}=A^{-1}A=I</math>,则称其可逆。单位矩阵 <math>I</math> 保持每个向量不变。有限维方阵可逆,等价于核只有零向量、秩等于阶数、列构成整个空间的一组基,也等价于行列式非零。


取 <math>M=\begin{pmatrix}2&1\\1&1\end{pmatrix}</math>,行列式为 1,候选逆矩阵是 <math>N=\begin{pmatrix}1&-1\\-1&2\end{pmatrix}</math>。直接乘得两种次序的乘积都是 <math>I</math>。求解 <math>Mx=(5,3)^{\mathsf T}</math> 时,
图中每个小格的面积是一。右图虽然列向量都不为零,所有输入仍只能产生同一条线上的输出;行列式为零反映的是方向之间的依赖。
<math display="block">x=N\begin{pmatrix}5\\3\end{pmatrix}=\begin{pmatrix}2\\1\end{pmatrix}.</math>
回代得 <math>2\cdot2+1=5</math> 和 <math>2+1=3</math>。逆矩阵不是把每个元素取倒数,而是撤销整个线性变换。对于大规模数值方程,通常直接消元或分解求解,比先形成完整逆矩阵更合适。


矩形矩阵可能有单侧逆。例如 <math>L=(1\;0)</math> 与 <math>R=(1\;0)^{\mathsf T}</math> 满足 <math>LR=(1)</math>,但 <math>RL=\begin{pmatrix}1&0\\0&0\end{pmatrix}</math> 不是二阶单位矩阵。“能在一侧还原”不等于双侧可逆。另一个边界是零因子:非零矩阵 <math>P=\operatorname{diag}(1,0)</math><math>Q=\operatorname{diag}(0,1)</math> <math>PQ=0</math>,不能照搬实数乘法的消去规则。
=== 亲手改变矩阵 ===
先保持 <math>a=d=1,c=0</math>,只改变 <math>b</math>。上边沿左右移动,底边与高都不变,因而面积不变。再选择“压成直线”,观察两个列向量怎样变得共线,正方形怎样失去面积。最后试着找一个面积仍为 1、方向却翻转的矩阵,用 <math>ad-bc</math> 核验。


即使精确意义下可逆,反求输入仍可能敏感。令 <math>A_\varepsilon=\begin{pmatrix}1&1\\1&1+\varepsilon\end{pmatrix}</math>,其中 <math>\varepsilon\ne0</math>。对右端 <math>(2,2+\varepsilon)^{\mathsf T}</math>,解为 <math>(1,1)^{\mathsf T}</math>;把第二个右端增加 <math>\delta</math>,两式相减后得到 <math>x_2=1+\delta/\varepsilon</math>、<math>x_1=1-\delta/\varepsilon</math>。当 <math>|\varepsilon|</math> 很小时,微小测量误差也会被放大。这是精确可解性与数值稳定性的区别。
<math-experiment type="matrix" />


=== 逆变换为什么只能有一个 ===
== 反过来计算:由输出寻找输入 ==
<math>B</math> <math>C</math> 都是同一个方阵 <math>A</math> 的双侧逆,那么
现在给定目标输出 <math>b</math>,要找输入 <math>x</math>,就得到矩阵方程 <math>Ax=b</math>。每一行是一条普通方程。例如
<math display="block">B=BI=B(AC)=(BA)C=IC=C.</math>
<math display="block">\begin{pmatrix}1&2&1\\2&4&3\end{pmatrix}\begin{pmatrix}x_1\\x_2\\x_3\end{pmatrix}=\begin{pmatrix}4\\9\end{pmatrix}</math>
这里每一步只用了单位矩阵与结合律,没有交换任何因子。因此逆一旦存在就是唯一的。同理,先做两个可逆变换,再撤销它们时必须倒序进行,所以 <math>(AB)^{-1}=B^{-1}A^{-1}</math>。验证时把相邻的 <math>BB^{-1}</math> <math>AA^{-1}</math> 消去即可。这说明很多容易混淆的公式可以从“操作与撤销”的含义重建,不必孤立记忆。
表示
<math display="block">\begin{cases}x_1+2x_2+x_3=4,\\2x_1+4x_2+3x_3=9.\end{cases}</math>
第二式减去第一式的两倍:<math>(2x_1-2x_1)+(4x_2-4x_2)+(3x_3-2x_3)=9-8</math>,于是 <math>x_3=1</math>。代回第一式,剩下 <math>x_1+2x_2=3</math>。任取 <math>x_2=t</math>,就得到
<math display="block">x=\begin{pmatrix}3-2t\\t\\1\end{pmatrix}=\begin{pmatrix}3\\0\\1\end{pmatrix}+t\begin{pmatrix}-2\\1\\0\end{pmatrix},\qquad t\in\mathbb R.</math>
例如 <math>t=0</math> 给出 <math>(3,0,1)</math>,<math>t=1</math> 给出 <math>(1,1,1)</math>,两者代入都产生同一输出。三个未知量只有两条独立约束,还留下一个可以自由改变的方向。


=== 面积解释怎样产生二阶行列式 ===
[[File:Gezhi-teaching-matrix-solutions.svg|frame|center|alt=在第三坐标固定为一的平面中,解集为横坐标加两倍纵坐标等于三的直线,标出三零一与一一一两个解|这里画的是 x₃=1 这一层,横纵轴只表示 x₁、x₂,点旁仍标出完整的三个坐标。]]
两列向量围成平行四边形。先考虑第一列水平的情形:底长乘以另一列的竖直分量给出有向面积。一般情况下,可以沿一个方向剪切而不改变面积,把其中一列变为水平,再计算剩下的底和高;代数化以后得到两项乘积之差。交换两列改变绕行方向,所以行列式变号;两列相同则围不出面积,所以行列式为零。这些性质解释了减号从何而来,也表明行列式是列之间整体关系的量,不是逐项大小的总和。


更高维的行列式可以由对各列分别线性、交换两列变号以及单位矩阵行列式为一这三条性质刻画。这是对几何体积性质的代数抽象。实际计算中常用消元把矩阵化为三角形,同时记录换行与倍乘造成的行列式变化;三角矩阵的行列式是对角元素之积。逐项展开虽然是定义方式之一,却常使计算量迅速增加。
两个标出的解之差是 <math>(-2,1,0)</math>,沿这个方向移动,输出保持不变;直线上每个点都代表一个解。


=== 从块结构读懂较大的矩阵 ===
消元之所以保留全部解,是因为操作可以撤销:交换两行可以换回来,加上另一行的倍数可以再减去。右端必须跟随同样的操作。若消元得到 <math>0=1</math>,则没有解;若每个未知量都被确定,则解唯一;否则保留自由参数。这比单纯比较方程数和未知数个数更准确。
一张大矩阵有时包含自然分组,例如输入的前两项表示位置,后两项表示速度。此时可以把矩阵分成若干矩形块,每块描述一组输入对一组输出的影响。块乘法仍服从同一条行乘列规则,只是参与相乘的对象变成小矩阵。每个块的维数仍须匹配,不能因为画了分隔线就忽略形状要求。


若两个系统完全互不影响,其联合矩阵可以是块对角矩阵:对角块分别控制各系统,其他块为零。它可逆当且仅当各个方形对角块都可逆,逆矩阵也按块分别求逆。这种判断直接来自两个系统可以各自恢复输入,而不需要展开一个更大的行列式。如果非对角块不为零,便表示存在耦合,原先独立处理的结论需要重新检查。
'''核'''是所有产生零输出的输入,记作 <math>\ker A</math>;'''秩'''是列向量中独立方向的个数。上例第二列是第一列的两倍,第一、第三列独立,所以秩为二;核由 <math>(-2,1,0)</math> 的所有倍数组成。一般的维数关系及证明见[[线性代数]],线性无关的含义见[[向量空间]]。


== 精确符号与计算机输出之间 ==
== 逆矩阵:完整撤销一次变换 ==
手算中的整数和分数可以保持精确,计算机常用有限位浮点数近似。消元过程中一个理论上为零的数,实际可能得到极小非零量;反过来,真实但很小的独立方向也可能被舍入误差掩盖。因此数值软件报告的秩通常涉及容差,容差应结合数据尺度与测量精度解释。一个没有单位和误差说明的“秩为几”可能混淆精确代数结构与数值判断。
若每种目标输出都对应唯一输入,就可以把计算反向进行。对方阵,这个反向过程用'''逆矩阵'''表示:
<math display="block">A^{-1}A=AA^{-1}=I.</math>
单位矩阵 <math>I</math> 的对角线为一,其余为零,乘上它等于不改变输入。


求得候选解后计算残差,是最基本的独立检查:把解乘回原矩阵,再与原右端比较。残差小表明方程近似满足,却不必然说明输入估计准确,因为敏感矩阵会把很不同的输入送到很接近的输出。前面的近重合两行例子已经展示了这一点。可靠计算既检查残差,也关注问题是否接近不可逆;这与单纯增加显示的小数位数是两回事。
以 <math>M=\begin{pmatrix}2&1\\1&1\end{pmatrix}</math> 为例。给定输出 <math>(p,q)</math>,输入满足 <math>2x+y=p</math>、<math>x+y=q</math>。两式相减得 <math>x=p-q</math>,再代回得 <math>y=2q-p</math>。所以
<math display="block">\begin{pmatrix}x\\y\end{pmatrix}=\begin{pmatrix}1&-1\\-1&2\end{pmatrix}\begin{pmatrix}p\\q\end{pmatrix},\qquad M^{-1}=\begin{pmatrix}1&-1\\-1&2\end{pmatrix}.</math>
逆矩阵的元素由反解方程得来,并非把原元素各自取倒数。给定输出 <math>(5,3)</math>,逆运算得到 <math>(2,1)</math>;代回有 <math>2\times2+1=5</math>、<math>2+1=3</math>。


== 换坐标与研究不变的量 ==
二阶矩阵 <math>\begin{pmatrix}a&b\\c&d\end{pmatrix}</math> 在 <math>ad-bc\ne0</math> 时,其逆为
一个矩阵不是线性映射唯一的面貌。在同一空间上,设新基向量在旧基下组成可逆矩阵 <math>S</math>,那么同一线性算子的新矩阵为 <math>S^{-1}AS</math>。先用 <math>S</math> 把新坐标转为旧坐标,再施加 <math>A</math>,最后用 <math>S^{-1}</math> 转回来,便得到这个次序。
<math display="block">\frac1{ad-bc}\begin{pmatrix}d&-b\\-c&a\end{pmatrix}.</math>
将两矩阵相乘,非对角项分别是 <math>-ab+ba=0</math> <math>cd-dc=0</math>,两个对角项都是 <math>ad-bc</math>,除去这个数便得到 <math>I</math>。若行列式为零,两列不能提供两个独立方向,变换丢失信息,因而无法用双侧逆恢复整个平面。


改变基会改变矩阵元素,却不会改变算子是否可逆、秩及特征值。特征方程 <math>Av=\lambda v</math> 要求 <math>v\ne0</math>;零向量不能充当特征向量,否则任意数都会被错误地视为特征值。不是所有矩阵都能通过换基化成对角矩阵,例如非平凡剪切只有一条特征方向。矩阵计算应当服务于这些结构判断,而不只是完成数组运算。
逆若存在就是唯一的。若 <math>B,C</math> 都能撤销 <math>A</math>,则 <math>B=B(AC)=(BA)C=C</math>。撤销两个连续操作还要倒序进行,因此 <math>(AB)^{-1}=B^{-1}A^{-1}</math>


== 从系数表到矩阵代数的历史 ==
== 可逆与容易计算并不是一回事 ==
线性方程系数的矩形排列早于现代术语。《九章算术》的“方程”章用算筹排列系数并消元;古代排列方向与今天的行约定不完全一样,但消去未知量的思想可以明确比较。这并不意味着当时已经有现代抽象矩阵代数。[https://old.maa.org/press/periodicals/convergence/a-classic-from-china-the-nine-chapters-matrices MAA 的《九章算术》研究介绍]给出了原问题和排列方法。
考虑两个很接近的方程
<math display="block">\begin{cases}x+y=2,\\x+(1+\varepsilon)y=2+\varepsilon,\end{cases}\qquad \varepsilon\ne0.</math>
相减得 <math>\varepsilon y=\varepsilon</math>,故 <math>x=y=1</math>。如果第二个测量值增加 <math>\delta</math>,相减后变为 <math>\varepsilon y=\varepsilon+\delta</math>,于是
<math display="block">y=1+\frac\delta\varepsilon,\qquad x=1-\frac\delta\varepsilon.</math>
例如 <math>\varepsilon=0.001</math>,<math>\delta=0.0001</math>,右端只改变万分之一,解却从 <math>(1,1)</math> 变成 <math>(0.9,1.1)</math>。两条约束几乎在说同一件事,细小差异决定的那个方向就很敏感。


术语 matrix 由 Sylvester 于 1850 年使用;Cayley 在 1858 年的矩阵理论论文中系统讨论加法、乘法和逆等运算。历史上行列式、二次型、线性变换各有自己的发展路线,后来才汇入矩阵语言,所以不宜把整个概念归成一人一次发明。[https://mathshistory.st-andrews.ac.uk/HistTopics/Matrices_and_determinants/ MacTutor:Matrices and determinants]记录了术语及 Cayley 论文的具体背景。
实际求解大矩阵时,通常直接消元或分解求解,而不先算完整逆矩阵。算出答案后,应把它代回原方程检查残差;若问题本身敏感,还需结合数据误差评价解的可靠程度。投影与不精确数据的拟合继续见[[最小二乘法]]


== English overview ==
== 矩阵语言怎样形成 ==
<div lang="en" class="math-english-summary">
《九章算术》的“方程”章已经用算筹排列系数并消去未知量,排列方向与今天的行列习惯不同,但可以辨认出对应的消元步骤。[https://old.maa.org/press/periodicals/convergence/a-classic-from-china-the-nine-chapters-matrices MAA 的研究介绍]展示了原问题及其算法。
A matrix is a rectangular array of entries, usually taken from the real or complex numbers. After bases have been chosen, an m by n matrix represents a linear map from an n dimensional input space to an m dimensional output space. Its columns are the outputs of the coordinate basis vectors. This interpretation explains matrix multiplication: the product AB represents applying B first and A second, so the intermediate dimensions must match.


Rank measures the number of independent output directions. The null space contains inputs that disappear under the map, and the rank–nullity theorem accounts for all input dimensions. A square matrix is invertible exactly when its null space is trivial. Its determinant records signed volume scaling, but a small determinant alone is not a reliable measure of numerical instability.
现代术语 matrix 由 Sylvester 于 1850 年使用,Cayley 在 1858 年的论文中系统研究矩阵运算。行列式、方程求解与线性变换逐渐汇入同一套记号,形成今天的矩阵理论。[https://mathshistory.st-andrews.ac.uk/HistTopics/Matrices_and_determinants/ MacTutor 的矩阵与行列式史]记载了这些工作。
 
Worked examples connect shear transformations, noncommuting products, elimination, and inverse matrices. They distinguish exact solvability from sensitivity to measurement errors. Matrices can store observations as well as represent transformations; in either use, the meaning and units of rows and columns must be specified. Changing a basis changes the entries representing a map while preserving its structural properties.
</div>
 
== 编者评注(AI 辅助) ==
本条把“每列是一个单位输入的输出”放在行乘列口诀之前,因为这一解释同时说明乘法顺序、可解性和秩。消元算例特意选用非方阵,避免把矩阵误认为只能解方形方程组。行列式、秩和条件敏感性分别回答不同问题,不能用一个数代替全部判断。文字与算例由 AI 辅助整理,编者的教学取舍不构成新的数学结论;涉及实际数据时仍须核查单位、误差与模型假设。


== 参考资料与后续阅读 ==
== 参考资料与后续阅读 ==

2026年9月20日 (日) 07:16的最新版本

矩阵(matrix)是把一组数按行、列排成的长方形数表。矩阵的运算可以把多个数量之间的关系放在一起计算:一组方程的系数、一次平面变换,或几种投入与产出的关系,都能用矩阵表示。

理解矩阵,可以先记住一个具体含义:每一列记录一种单位输入会产生多少输出。 下面先用这个含义计算,再解释矩阵的乘法、方程和逆。本文主要使用实数;复数矩阵的基本运算遵循相同规则。

一张数表怎样表示一个计算过程

设有两种原料包,含有甲、乙两种成分。第一种包含甲一份、乙零份,第二种包含甲一份、乙一份。按“每行一种成分,每列一种原料包”排列,得到 A=(1101). 第一列 (10) 是第一种包的成分,第二列 (11) 是第二种包的成分。

取第一种包两包、第二种包一包,总成分是多少?先分别计算两类成分:甲有 1×2+1×1=3 份,乙有 0×2+1×1=1 份。把输入的两种包数竖排,计算可简写成 A(21)=(1×2+1×10×2+1×1)=(31). 这就是矩阵乘向量。左边的向量记录投入,右边的向量记录产出。把两包和一包换成任意数量 u,v,便有 A(uv)=u(10)+v(11)=(u+vv). 中间的式子尤其有用:矩阵乘向量,就是用输入的各个数给矩阵各列加权,再相加。 实际配料量应非负;作为数学运算,这个式子对任意实数 u,v 都有定义。

行、列与元素的记号

m 行、n 列的矩阵称为 m×n 矩阵,第 i 行、第 j 列的数记作 aij。例如 C=(201345) 是一个二行三列矩阵,c23=5。下标先写行号,再写列号。

由于每列对应一种输入,C 可以接收三个数;由于每行计算一种输出,结果有两个数。例如 C(123)=(2×1+0×21×33×1+4×2+5×3)=(126). 因此 m×n 矩阵把 n 个输入变成 m 个输出。一般公式是 (Ax)i=ai1x1++ainxn=j=1naijxj. 求和号只是把前面逐项相乘再相加的过程压缩写下;它没有增加新的运算规则。

同形状矩阵的加法按对应位置进行;数乘则把每个元素乘以同一个数。例如 (1234)+(5012)=(6226). 若两张表的行列分别表示相同种类的量,相加便是在合计它们。若一列是长度、另一列是时间,组合这些列以前仍需说明计算的实际含义。

矩阵乘矩阵:把两个过程接起来

回到原料矩阵 A。再设 B=(2001),B(uv)=(2uv). B 先把第一种投入加倍,A 再把投入换算成成分。连续计算得到 A(B(uv))=A(2uv)=(2u+vv). 若想只用一个矩阵完成这两步,它的第一列应是输入 (1,0) 时的输出 (2,0),第二列应是输入 (0,1) 时的输出 (1,1)。所以 AB=(2101). 这里右边的 B 先做,左边的 A 后做。乘积的每一列,也就是把 B 的对应列交给 A 计算。由此得到通常的“行乘列”规则: (AB)ij=k=1naikbkj.Am×nBn×p,中间的 n 相同,表示前一步输出的数量恰好等于后一步需要的输入数量;乘积是 m×p

交换两步会怎样?先做 A,再做 B,得到 B(A(uv))=B(u+vv)=(2u+2vv),BA=(2201).

相同输入一一先经过B再经过A得到三一,先A后B得到四一
从左向右跟踪同一个输入。上行对应 AB,下行对应 BA;两行中间结果相同,第二步不同使最终结果分开。

图中的箭头按实际执行顺序排列;乘积记号则把先执行的矩阵写在右边。

(u,v)=(1,1),两种次序分别得到 (3,1)(4,1)。这就说明矩阵乘法通常不交换。它仍满足结合律:三个过程依次执行,先把哪两步合并不改变总效果,因此 A(BC)=(AB)C

从数表看到图形的变化

(u,v) 看作平面点,A 的作用仍是 (u,v)(u+v,v):点的高度不变,水平位置增加一个高度值。横轴上的点不动,越高的点向右移动得越多,这种变换称为剪切

单位正方形的两个边向量经过剪切后变为一零和一一,围成平行四边形
先找两条从原点出发的边,再看它们的和:右上顶点由 (1,1) 移到 (2,1)。

图中单位正方形的四个顶点依次变为 (0,0),(1,0),(2,1),(1,1)。下边保持不变,上边整体右移一格,于是得到平行四边形。它的底和高仍为一,面积也仍为一。

一般二阶矩阵的两列 (a,c)(b,d) 围成平行四边形。用四边形的有向面积公式,按顶点 (0,0), (a,c), (a+b,c+d), (b,d) 绕行一周,所得有向面积是 12[a(c+d)+(a+b)dc(a+b)(c+d)b]=adbc. 这就是二阶行列式 detA;普通面积是它的绝对值,符号记录绕行方向。剪切矩阵的行列式为一。如果两列在同一直线上,围成的面积为零,平面就被压到一条线或一个点。

两列二一与一二围成面积三的平行四边形,两列一一与二二共线时面积为零
左图两列独立,面积为 2×2−1×1=3;右图两列共线,面积为 1×2−2×1=0。

图中每个小格的面积是一。右图虽然列向量都不为零,所有输入仍只能产生同一条线上的输出;行列式为零反映的是方向之间的依赖。

亲手改变矩阵

先保持 a=d=1,c=0,只改变 b。上边沿左右移动,底边与高都不变,因而面积不变。再选择“压成直线”,观察两个列向量怎样变得共线,正方形怎样失去面积。最后试着找一个面积仍为 1、方向却翻转的矩阵,用 adbc 核验。

矩阵怎样改变平面

改变矩阵的四个数,观察单位正方形、两个基向量与面积怎样变化。

静态配图与完整推导见本节正文;交互演示需浏览器启用 JavaScript。

反过来计算:由输出寻找输入

现在给定目标输出 b,要找输入 x,就得到矩阵方程 Ax=b。每一行是一条普通方程。例如 (121243)(x1x2x3)=(49) 表示 {x1+2x2+x3=4,2x1+4x2+3x3=9. 第二式减去第一式的两倍:(2x12x1)+(4x24x2)+(3x32x3)=98,于是 x3=1。代回第一式,剩下 x1+2x2=3。任取 x2=t,就得到 x=(32tt1)=(301)+t(210),t. 例如 t=0 给出 (3,0,1)t=1 给出 (1,1,1),两者代入都产生同一输出。三个未知量只有两条独立约束,还留下一个可以自由改变的方向。

在第三坐标固定为一的平面中,解集为横坐标加两倍纵坐标等于三的直线,标出三零一与一一一两个解
这里画的是 x₃=1 这一层,横纵轴只表示 x₁、x₂,点旁仍标出完整的三个坐标。

两个标出的解之差是 (2,1,0),沿这个方向移动,输出保持不变;直线上每个点都代表一个解。

消元之所以保留全部解,是因为操作可以撤销:交换两行可以换回来,加上另一行的倍数可以再减去。右端必须跟随同样的操作。若消元得到 0=1,则没有解;若每个未知量都被确定,则解唯一;否则保留自由参数。这比单纯比较方程数和未知数个数更准确。

是所有产生零输出的输入,记作 kerA是列向量中独立方向的个数。上例第二列是第一列的两倍,第一、第三列独立,所以秩为二;核由 (2,1,0) 的所有倍数组成。一般的维数关系及证明见线性代数,线性无关的含义见向量空间

逆矩阵:完整撤销一次变换

若每种目标输出都对应唯一输入,就可以把计算反向进行。对方阵,这个反向过程用逆矩阵表示: A1A=AA1=I. 单位矩阵 I 的对角线为一,其余为零,乘上它等于不改变输入。

M=(2111) 为例。给定输出 (p,q),输入满足 2x+y=px+y=q。两式相减得 x=pq,再代回得 y=2qp。所以 (xy)=(1112)(pq),M1=(1112). 逆矩阵的元素由反解方程得来,并非把原元素各自取倒数。给定输出 (5,3),逆运算得到 (2,1);代回有 2×2+1=52+1=3

二阶矩阵 (abcd)adbc0 时,其逆为 1adbc(dbca). 将两矩阵相乘,非对角项分别是 ab+ba=0cddc=0,两个对角项都是 adbc,除去这个数便得到 I。若行列式为零,两列不能提供两个独立方向,变换丢失信息,因而无法用双侧逆恢复整个平面。

逆若存在就是唯一的。若 B,C 都能撤销 A,则 B=B(AC)=(BA)C=C。撤销两个连续操作还要倒序进行,因此 (AB)1=B1A1

可逆与容易计算并不是一回事

考虑两个很接近的方程 {x+y=2,x+(1+ε)y=2+ε,ε0. 相减得 εy=ε,故 x=y=1。如果第二个测量值增加 δ,相减后变为 εy=ε+δ,于是 y=1+δε,x=1δε. 例如 ε=0.001δ=0.0001,右端只改变万分之一,解却从 (1,1) 变成 (0.9,1.1)。两条约束几乎在说同一件事,细小差异决定的那个方向就很敏感。

实际求解大矩阵时,通常直接消元或分解求解,而不先算完整逆矩阵。算出答案后,应把它代回原方程检查残差;若问题本身敏感,还需结合数据误差评价解的可靠程度。投影与不精确数据的拟合继续见最小二乘法

矩阵语言怎样形成

《九章算术》的“方程”章已经用算筹排列系数并消去未知量,排列方向与今天的行列习惯不同,但可以辨认出对应的消元步骤。MAA 的研究介绍展示了原问题及其算法。

现代术语 matrix 由 Sylvester 于 1850 年使用,Cayley 在 1858 年的论文中系统研究矩阵运算。行列式、方程求解与线性变换逐渐汇入同一套记号,形成今天的矩阵理论。MacTutor 的矩阵与行列式史记载了这些工作。

参考资料与后续阅读