跳到正文
格致开物MATHWIKI

矩阵:修订间差异

AIContentBot留言 | 贡献
扩充定义、推导、算例、边界条件与原创 SVG 配图(AI 辅助整理,算例已复算)
AIContentBot留言 | 贡献
重编数学讲解:连贯例题、逐步推导与多幅过程图;更新写作规范
 
(未显示同一用户的1个中间版本)
第1行: 第1行:
矩阵是按行与列排列的元素构成的矩形数组。一个 <math>m\times n</math> 矩阵有 <math>m</math> 行、<math>n</math> 列;元素通常来自实数或复数。矩阵既可以记录数据,也可以在选定基后表示[[向量空间]]之间的线性映射。
'''矩阵'''(matrix)是把一组数按行、列排成的长方形数表。矩阵的运算可以把多个数量之间的关系放在一起计算:一组方程的系数、一次平面变换,或几种投入与产出的关系,都能用矩阵表示。


== 形状决定运算是否有意义 ==
理解矩阵,可以先记住一个具体含义:'''每一列记录一种单位输入会产生多少输出。''' 下面先用这个含义计算,再解释矩阵的乘法、方程和逆。本文主要使用实数;复数矩阵的基本运算遵循相同规则。
记 <math>A=(a_{ij})</math>,下标 <math>i</math> 表示行,<math>j</math> 表示列。同形状矩阵可逐项相加;数乘是把每项乘以同一个数。矩阵乘法则不是逐项相乘。


若 <math>A</math> 是 <math>m\times n</math> 矩阵,<math>B</math> 是 <math>n\times p</math> 矩阵,乘积 <math>AB</math> 的形状为 <math>m\times p</math>,其元素是
== 一张数表怎样表示一个计算过程 ==
<math display="block">(AB)_{ij}=\sum_{k=1}^n a_{ik}b_{kj}.</math>
设有两种原料包,含有甲、乙两种成分。第一种包含甲一份、乙零份,第二种包含甲一份、乙一份。按“每行一种成分,每列一种原料包”排列,得到
中间维数必须相同。这条规则使得 <math>A(Bx)=(AB)x</math>,也就是先做 <math>B</math> 再做 <math>A</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> 是第二种包的成分。


== 矩阵乘向量:列的线性组合 ==
取第一种包两包、第二种包一包,总成分是多少?先分别计算两类成分:甲有 <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 display="block">A=\begin{pmatrix}1&1\\0&1\end{pmatrix},\qquad x=\begin{pmatrix}u\\v\end{pmatrix}.</math>
这就是矩阵乘向量。左边的向量记录投入,右边的向量记录产出。把两包和一包换成任意数量 <math>u,v</math>,便有
那么 <math>Ax=(u+v,v)^{\mathsf T}</math>,也可看作第一列的 <math>u</math> 倍与第二列的 <math>v</math> 倍相加。上标 <math>\mathsf T</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> 都有定义。


[[File:Gezhi-matrix-shear.svg|frame|center|alt=单位正方形经过矩阵一一零一变换成为面积不变的平行四边形|变换 (u,v)→(u+v,v) 是水平剪切:横向基向量不变,纵向基向量移动到 (1,1)。]]
== 行、列与元素的记号 ==
例如 <math>A(1,1)^{\mathsf T}=(2,1)^{\mathsf T}</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>B=\begin{pmatrix}2&0\\0&1\end{pmatrix}</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=\begin{pmatrix}2&1\\0&1\end{pmatrix},\qquad BA=\begin{pmatrix}2&2\\0&1\end{pmatrix}.</math>
因此 <math>m\times n</math> 矩阵把 <math>n</math> 个输入变成 <math>m</math> 个输出。一般公式是
因此 <math>AB\ne BA</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>A</math> 若存在 <math>A^{-1}</math> 使 <math>A^{-1}A=AA^{-1}=I</math>,称为可逆。上例的逆矩阵为 <math>\begin{pmatrix}1&-1\\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>C=\begin{pmatrix}1&2\\2&4\end{pmatrix}</math> 的第二列是第一列的两倍,秩为 1。它把平面压缩到一条直线,不同输入可能得到相同输出,所以没有逆矩阵。
== 矩阵乘矩阵:把两个过程接起来 ==
回到原料矩阵 <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>2\times2</math> 矩阵,行列式为 <math>ad-bc</math>。实二维情形下,其绝对值给出面积缩放倍数,符号记录定向是否翻转。上例剪切的行列式为 1,所以保面积;<math>C</math> 的行列式为 0,面积被压为零。只有方阵才有通常意义下的行列式与双侧逆矩阵。
交换两步会怎样?先做 <math>A</math>,再做 <math>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>
[[File:Gezhi-teaching-matrix-order.svg|frame|center|alt=相同输入一一先经过B再经过A得到三一,先A后B得到四一|从左向右跟踪同一个输入。上行对应 AB,下行对应 BA;两行中间结果相同,第二步不同使最终结果分开。]]


== 从方程组到数据 ==
图中的箭头按实际执行顺序排列;乘积记号则把先执行的矩阵写在右边。
方程组可以写成 <math>Ax=b</math>,但实际数值求解通常直接采用消元或矩阵分解,不必先显式计算逆矩阵。矩阵还用于图的邻接关系、坐标变换、最小二乘拟合等;若仅把表格存成矩阵,仍需解释每一行、每一列与单位代表什么。


== 延伸阅读 ==
取 <math>(u,v)=(1,1)</math>,两种次序分别得到 <math>(3,1)</math> 和 <math>(4,1)</math>。这就说明矩阵乘法通常不交换。它仍满足结合律:三个过程依次执行,先把哪两步合并不改变总效果,因此 <math>A(BC)=(AB)C</math>。
* [https://ocw.mit.edu/courses/18-06-linear-algebra-spring-2010/ MIT OpenCourseWare,18.06 Linear Algebra]:矩阵运算、列空间与线性方程组。
 
* [[线性代数]] · [[向量空间]] · [[图论]]
== 从数表看到图形的变化 ==
把 <math>(u,v)</math> 看作平面点,<math>A</math> 的作用仍是 <math>(u,v)\mapsto(u+v,v)</math>:点的高度不变,水平位置增加一个高度值。横轴上的点不动,越高的点向右移动得越多,这种变换称为'''剪切'''。
 
[[File:Gezhi-matrix-shear-theme.svg|frame|center|alt=单位正方形的两个边向量经过剪切后变为一零和一一,围成平行四边形|先找两条从原点出发的边,再看它们的和:右上顶点由 (1,1) 移到 (2,1)。]]
 
图中单位正方形的四个顶点依次变为 <math>(0,0),(1,0),(2,1),(1,1)</math>。下边保持不变,上边整体右移一格,于是得到平行四边形。它的底和高仍为一,面积也仍为一。
 
一般二阶矩阵的两列 <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=d=1,c=0</math>,只改变 <math>b</math>。上边沿左右移动,底边与高都不变,因而面积不变。再选择“压成直线”,观察两个列向量怎样变得共线,正方形怎样失去面积。最后试着找一个面积仍为 1、方向却翻转的矩阵,用 <math>ad-bc</math> 核验。
 
<math-experiment type="matrix" />
 
== 反过来计算:由输出寻找输入 ==
现在给定目标输出 <math>b</math>,要找输入 <math>x</math>,就得到矩阵方程 <math>Ax=b</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 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 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>B,C</math> 都能撤销 <math>A</math>,则 <math>B=B(AC)=(BA)C=C</math>。撤销两个连续操作还要倒序进行,因此 <math>(AB)^{-1}=B^{-1}A^{-1}</math>。
 
== 可逆与容易计算并不是一回事 ==
考虑两个很接近的方程
<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>。两条约束几乎在说同一件事,细小差异决定的那个方向就很敏感。
 
实际求解大矩阵时,通常直接消元或分解求解,而不先算完整逆矩阵。算出答案后,应把它代回原方程检查残差;若问题本身敏感,还需结合数据误差评价解的可靠程度。投影与不精确数据的拟合继续见[[最小二乘法]]。
 
== 矩阵语言怎样形成 ==
《九章算术》的“方程”章已经用算筹排列系数并消去未知量,排列方向与今天的行列习惯不同,但可以辨认出对应的消元步骤。[https://old.maa.org/press/periodicals/convergence/a-classic-from-china-the-nine-chapters-matrices MAA 的研究介绍]展示了原问题及其算法。
 
现代术语 matrix 由 Sylvester 于 1850 年使用,Cayley 在 1858 年的论文中系统研究矩阵运算。行列式、方程求解与线性变换逐渐汇入同一套记号,形成今天的矩阵理论。[https://mathshistory.st-andrews.ac.uk/HistTopics/Matrices_and_determinants/ MacTutor 的矩阵与行列式史]记载了这些工作。
 
== 参考资料与后续阅读 ==
* [https://ocw.mit.edu/courses/18-06-linear-algebra-spring-2010/ MIT OpenCourseWare,Gilbert Strang,18.06 Linear Algebra]:矩阵乘法、消元、秩和逆矩阵。
* [https://math.mit.edu/~gs/linearalgebra/ila5/linearalgebra5_3-5.pdf Strang,《Introduction to Linear Algebra》第 3.5 节]:行变换与四个基本子空间。
* [https://mathshistory.st-andrews.ac.uk/HistTopics/Matrices_and_determinants/ J. J. O’Connor、E. F. Robertson,Matrices and determinants]:术语与理论形成史。
* 后续可读[[向量空间]]、[[线性代数]][[最小二乘法]][[图论]]
[[分类:代数]]
[[分类:代数]]

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 的矩阵与行列式史记载了这些工作。

参考资料与后续阅读