矩阵:修订间差异
AIContentBot(留言 | 贡献) 扩充双语数学百科:定义条件、证明算例、历史来源与 AI 编者评注;补齐学科导航 |
AIContentBot(留言 | 贡献) 重编数学讲解:连贯例题、逐步推导与多幅过程图;更新写作规范 |
||
| 第1行: | 第1行: | ||
'''矩阵''' | '''矩阵'''(matrix)是把一组数按行、列排成的长方形数表。矩阵的运算可以把多个数量之间的关系放在一起计算:一组方程的系数、一次平面变换,或几种投入与产出的关系,都能用矩阵表示。 | ||
理解矩阵,可以先记住一个具体含义:'''每一列记录一种单位输入会产生多少输出。''' 下面先用这个含义计算,再解释矩阵的乘法、方程和逆。本文主要使用实数;复数矩阵的基本运算遵循相同规则。 | |||
== 一张数表怎样表示一个计算过程 == | |||
设有两种原料包,含有甲、乙两种成分。第一种包含甲一份、乙零份,第二种包含甲一份、乙一份。按“每行一种成分,每列一种原料包”排列,得到 | |||
<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>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 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"> | 因此 <math>m\times n</math> 矩阵把 <math>n</math> 个输入变成 <math>m</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"> | 求和号只是把前面逐项相乘再相加的过程压缩写下;它没有增加新的运算规则。 | ||
同形状矩阵的加法按对应位置进行;数乘则把每个元素乘以同一个数。例如 | |||
<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>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 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 | [[File:Gezhi-teaching-matrix-order.svg|frame|center|alt=相同输入一一先经过B再经过A得到三一,先A后B得到四一|从左向右跟踪同一个输入。上行对应 AB,下行对应 BA;两行中间结果相同,第二步不同使最终结果分开。]] | ||
图中的箭头按实际执行顺序排列;乘积记号则把先执行的矩阵写在右边。 | |||
取 <math>(u,v)=(1,1)</math>,两种次序分别得到 <math>(3,1)</math> 和 <math>(4,1)</math>。这就说明矩阵乘法通常不交换。它仍满足结合律:三个过程依次执行,先把哪两步合并不改变总效果,因此 <math>A(BC)=(AB)C</math>。 | |||
== | == 从数表看到图形的变化 == | ||
把 <math>(u,v)</math> 看作平面点,<math>A</math> 的作用仍是 <math>(u,v)\mapsto(u+v,v)</math>:点的高度不变,水平位置增加一个高度值。横轴上的点不动,越高的点向右移动得越多,这种变换称为'''剪切'''。 | |||
<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"> | <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 的矩阵与行列式史]记载了这些工作。 | |||
== 参考资料与后续阅读 == | == 参考资料与后续阅读 == | ||
2026年9月20日 (日) 07:16的最新版本
矩阵(matrix)是把一组数按行、列排成的长方形数表。矩阵的运算可以把多个数量之间的关系放在一起计算:一组方程的系数、一次平面变换,或几种投入与产出的关系,都能用矩阵表示。
理解矩阵,可以先记住一个具体含义:每一列记录一种单位输入会产生多少输出。 下面先用这个含义计算,再解释矩阵的乘法、方程和逆。本文主要使用实数;复数矩阵的基本运算遵循相同规则。
一张数表怎样表示一个计算过程
设有两种原料包,含有甲、乙两种成分。第一种包含甲一份、乙零份,第二种包含甲一份、乙一份。按“每行一种成分,每列一种原料包”排列,得到 第一列 是第一种包的成分,第二列 是第二种包的成分。
取第一种包两包、第二种包一包,总成分是多少?先分别计算两类成分:甲有 份,乙有 份。把输入的两种包数竖排,计算可简写成 这就是矩阵乘向量。左边的向量记录投入,右边的向量记录产出。把两包和一包换成任意数量 ,便有 中间的式子尤其有用:矩阵乘向量,就是用输入的各个数给矩阵各列加权,再相加。 实际配料量应非负;作为数学运算,这个式子对任意实数 都有定义。
行、列与元素的记号
有 行、 列的矩阵称为 矩阵,第 行、第 列的数记作 。例如 是一个二行三列矩阵,。下标先写行号,再写列号。
由于每列对应一种输入, 可以接收三个数;由于每行计算一种输出,结果有两个数。例如 因此 矩阵把 个输入变成 个输出。一般公式是 求和号只是把前面逐项相乘再相加的过程压缩写下;它没有增加新的运算规则。
同形状矩阵的加法按对应位置进行;数乘则把每个元素乘以同一个数。例如 若两张表的行列分别表示相同种类的量,相加便是在合计它们。若一列是长度、另一列是时间,组合这些列以前仍需说明计算的实际含义。
矩阵乘矩阵:把两个过程接起来
回到原料矩阵 。再设 先把第一种投入加倍, 再把投入换算成成分。连续计算得到 若想只用一个矩阵完成这两步,它的第一列应是输入 时的输出 ,第二列应是输入 时的输出 。所以 这里右边的 先做,左边的 后做。乘积的每一列,也就是把 的对应列交给 计算。由此得到通常的“行乘列”规则: 若 是 , 是 ,中间的 相同,表示前一步输出的数量恰好等于后一步需要的输入数量;乘积是 。
交换两步会怎样?先做 ,再做 ,得到
图中的箭头按实际执行顺序排列;乘积记号则把先执行的矩阵写在右边。
取 ,两种次序分别得到 和 。这就说明矩阵乘法通常不交换。它仍满足结合律:三个过程依次执行,先把哪两步合并不改变总效果,因此 。
从数表看到图形的变化
把 看作平面点, 的作用仍是 :点的高度不变,水平位置增加一个高度值。横轴上的点不动,越高的点向右移动得越多,这种变换称为剪切。
图中单位正方形的四个顶点依次变为 。下边保持不变,上边整体右移一格,于是得到平行四边形。它的底和高仍为一,面积也仍为一。
一般二阶矩阵的两列 与 围成平行四边形。用四边形的有向面积公式,按顶点 绕行一周,所得有向面积是 这就是二阶行列式 ;普通面积是它的绝对值,符号记录绕行方向。剪切矩阵的行列式为一。如果两列在同一直线上,围成的面积为零,平面就被压到一条线或一个点。
图中每个小格的面积是一。右图虽然列向量都不为零,所有输入仍只能产生同一条线上的输出;行列式为零反映的是方向之间的依赖。
亲手改变矩阵
先保持 ,只改变 。上边沿左右移动,底边与高都不变,因而面积不变。再选择“压成直线”,观察两个列向量怎样变得共线,正方形怎样失去面积。最后试着找一个面积仍为 1、方向却翻转的矩阵,用 核验。
矩阵怎样改变平面
改变矩阵的四个数,观察单位正方形、两个基向量与面积怎样变化。
静态配图与完整推导见本节正文;交互演示需浏览器启用 JavaScript。
反过来计算:由输出寻找输入
现在给定目标输出 ,要找输入 ,就得到矩阵方程 。每一行是一条普通方程。例如 表示 第二式减去第一式的两倍:,于是 。代回第一式,剩下 。任取 ,就得到 例如 给出 , 给出 ,两者代入都产生同一输出。三个未知量只有两条独立约束,还留下一个可以自由改变的方向。
两个标出的解之差是 ,沿这个方向移动,输出保持不变;直线上每个点都代表一个解。
消元之所以保留全部解,是因为操作可以撤销:交换两行可以换回来,加上另一行的倍数可以再减去。右端必须跟随同样的操作。若消元得到 ,则没有解;若每个未知量都被确定,则解唯一;否则保留自由参数。这比单纯比较方程数和未知数个数更准确。
核是所有产生零输出的输入,记作 ;秩是列向量中独立方向的个数。上例第二列是第一列的两倍,第一、第三列独立,所以秩为二;核由 的所有倍数组成。一般的维数关系及证明见线性代数,线性无关的含义见向量空间。
逆矩阵:完整撤销一次变换
若每种目标输出都对应唯一输入,就可以把计算反向进行。对方阵,这个反向过程用逆矩阵表示: 单位矩阵 的对角线为一,其余为零,乘上它等于不改变输入。
以 为例。给定输出 ,输入满足 、。两式相减得 ,再代回得 。所以 逆矩阵的元素由反解方程得来,并非把原元素各自取倒数。给定输出 ,逆运算得到 ;代回有 、。
二阶矩阵 在 时,其逆为 将两矩阵相乘,非对角项分别是 和 ,两个对角项都是 ,除去这个数便得到 。若行列式为零,两列不能提供两个独立方向,变换丢失信息,因而无法用双侧逆恢复整个平面。
逆若存在就是唯一的。若 都能撤销 ,则 。撤销两个连续操作还要倒序进行,因此 。
可逆与容易计算并不是一回事
考虑两个很接近的方程 相减得 ,故 。如果第二个测量值增加 ,相减后变为 ,于是 例如 ,,右端只改变万分之一,解却从 变成 。两条约束几乎在说同一件事,细小差异决定的那个方向就很敏感。
实际求解大矩阵时,通常直接消元或分解求解,而不先算完整逆矩阵。算出答案后,应把它代回原方程检查残差;若问题本身敏感,还需结合数据误差评价解的可靠程度。投影与不精确数据的拟合继续见最小二乘法。
矩阵语言怎样形成
《九章算术》的“方程”章已经用算筹排列系数并消去未知量,排列方向与今天的行列习惯不同,但可以辨认出对应的消元步骤。MAA 的研究介绍展示了原问题及其算法。
现代术语 matrix 由 Sylvester 于 1850 年使用,Cayley 在 1858 年的论文中系统研究矩阵运算。行列式、方程求解与线性变换逐渐汇入同一套记号,形成今天的矩阵理论。MacTutor 的矩阵与行列式史记载了这些工作。
参考资料与后续阅读
- MIT OpenCourseWare,Gilbert Strang,18.06 Linear Algebra:矩阵乘法、消元、秩和逆矩阵。
- Strang,《Introduction to Linear Algebra》第 3.5 节:行变换与四个基本子空间。
- J. J. O’Connor、E. F. Robertson,Matrices and determinants:术语与理论形成史。
- 后续可读向量空间、线性代数、最小二乘法和图论。