跳到正文
格致开物
MATHWIKI
探索
学科导航
学习路径
搜索
☾
登录
探索
学科导航
学习路径
随机漫游
希腊字母
关于本站
管理员登录
搜索
数学百科
/
知识地图
查看“︁线性代数”︁的源代码
Linear algebra
←
线性代数
因为以下原因,您没有权限编辑该页面:
您请求的操作仅限属于这些用户组的用户执行:
管理员
、aipublisher
您可以查看和复制此页面的源代码。
'''线性代数'''(linear algebra)研究向量之间的线性关系,以及保持这些关系的变换。它从一次方程组的求解出发,发展出[[向量空间]]、[[矩阵]]、正交投影和特征值等方法。许多看似不同的问题——方程有多少解、怎样拟合有误差的数据、重复执行一个过程会怎样——都能在这套框架中联系起来。 本文以实数为系数。阅读下面的例子,只需会解简单的一次方程;矩阵的行列运算和基的定义可分别查阅[[矩阵]]与[[向量空间]]。 == 三条方程为什么未必能确定三个未知量 == 考虑方程组 <math display="block">\begin{cases}x+y+z=4,\\2x+3y+z=9,\\x+2y=5.\end{cases}</math> 先用第一条消去后两条中的 <math>x</math>。第二条减去第一条的两倍,得到 <math display="block">(2x+3y+z)-2(x+y+z)=9-8,\qquad y-z=1.</math> 第三条减去第一条,得到的仍是 <math>y-z=1</math>。所以两条新的方程重复了,只有一个关系限制 <math>y,z</math>。 令可以自由选择的 <math>z=t</math>,就有 <math>y=1+t</math>;代回第一条,得 <math>x=4-(1+t)-t=3-2t</math>。全部解为 <math display="block">\begin{pmatrix}x\\y\\z\end{pmatrix}=\begin{pmatrix}3\\1\\0\end{pmatrix}+t\begin{pmatrix}-2\\1\\1\end{pmatrix},\qquad t\in\mathbb R.</math> 当 <math>t=0</math>,解是 <math>(3,1,0)</math>;当 <math>t=2</math>,解是 <math>(-1,3,2)</math>。两者都满足原方程。几何上,全部解沿同一条直线排列;代数上,三个未知量只受到两条独立约束。 若第三条右端改成六,消元将同时要求 <math>y-z=1</math> 和 <math>y-z=2</math>,方程便无解。若保留前两条、把第三条换成 <math>z=2</math>,则自由参数被固定,解唯一。因此决定解的状态的是约束是否独立、彼此是否相容,而不仅是方程和未知量的数量。 == 把同一个问题读成向量的组合 == 把系数排成矩阵,方程组简写为 <math display="block">A\begin{pmatrix}x\\y\\z\end{pmatrix}=b,\qquad A=\begin{pmatrix}1&1&1\\2&3&1\\1&2&0\end{pmatrix},\qquad b=\begin{pmatrix}4\\9\\5\end{pmatrix}.</math> 按行读,就是刚才的三条方程。按列读,则是 <math display="block">x\begin{pmatrix}1\\2\\1\end{pmatrix}+y\begin{pmatrix}1\\3\\2\end{pmatrix}+z\begin{pmatrix}1\\1\\0\end{pmatrix}=b.</math> 求解是在问:给这三列各取多少倍,才能拼成目标输出 <math>b</math>?所有能拼成的输出称为矩阵的'''列空间''',也就是线性映射的'''像'''。目标在列空间中,方程才有解。 本例第二列加第三列等于第一列的两倍。因此,沿输入方向 <math>(-2,1,1)</math> 增加任意倍数,对输出的总改变都是零。这正是上一节留下的自由方向。 == 线性意味着保持组合 == 矩阵所描述的过程满足 <math display="block">T(au+bv)=aT(u)+bT(v),</math> 其中 <math>u,v</math> 是输入向量,<math>a,b</math> 是实数。这样的映射称为'''线性映射'''。先把输入相加、缩放,再计算输出,与分别计算后同样相加、缩放,结果一致。 例如 <math>T(x,y)=(x+2y,3x-y)</math> 满足这条规则。若 <math>u=(u_1,u_2)</math>、<math>v=(v_1,v_2)</math>,把 <math>au+bv</math> 代入第一个输出,就得到 <math display="block">a u_1+b v_1+2(a u_2+b v_2)=a(u_1+2u_2)+b(v_1+2v_2),</math> 第二个输出同理。这便验证了线性。 一次函数 <math>f(x)=x+1</math> 的图像虽是直线,却不是这里的线性映射:它把零送到一,而线性规则要求 <math>T(0)=0</math>。它属于仿射映射。线性代数中的“线性”指运算规律,不是图像是否为直线。 保持组合还有一个直接结果:知道一组基的输出,就知道所有输入的输出。若 <math>x=\sum_i x_i e_i</math>,则 <math>T(x)=\sum_i x_i T(e_i)</math>。把 <math>T(e_i)</math> 的坐标排成矩阵各列,便得到 <math>T(x)=Ax</math>;这正是矩阵表示线性映射的原因。 == 核、像与所有解的形状 == 产生零输出的输入构成'''核''',记作 <math display="block">\ker A=\{z:Az=0\}.</math> 它记录变换无法辨别的输入方向。若 <math>x_0</math> 是 <math>Ax=b</math> 的一个解,核中的每个 <math>z</math> 都给出另一个解,因为 <math display="block">A(x_0+z)=Ax_0+Az=b+0=b.</math> 反过来,任意解 <math>x</math> 与 <math>x_0</math> 之差满足 <math>A(x-x_0)=b-b=0</math>。所以全部解恰好是 <math display="block">x_0+\ker A.</math> 前面的方程组中,特解是 <math>(3,1,0)</math>,核是 <math>(-2,1,1)</math> 的所有倍数,因而解集是一条平移后的直线。 核与像都是向量子空间。以核为例,若 <math>Au=Av=0</math>,则 <math>A(au+bv)=a0+b0=0</math>,任意线性组合仍在核中。像也如此:两个可达输出的线性组合,可以由相应输入的组合产生。 像的维数称为'''秩''',核的维数称为'''零度'''。对于有 <math>n</math> 个输入坐标的矩阵,'''秩—零度定理'''给出 <math display="block">n=\dim\ker A+\operatorname{rank}A.</math> 本例有一个被消去的独立输入方向、两个独立输出方向,所以 <math>3=1+2</math>。 === 秩—零度关系的证明 === 先取核的一组基 <math>u_1,\ldots,u_k</math>,再补入 <math>v_1,\ldots,v_r</math>,使整个列表成为输入空间的基。于是输入维数是 <math>k+r</math>。 任意输入可写成 <math>\sum_i a_i u_i+\sum_j b_jv_j</math>。应用 <math>A</math> 后,核中的部分消失,输出成为 <math>\sum_j b_jAv_j</math>。所以 <math>Av_1,\ldots,Av_r</math> 张成像。 还需证明这些输出无关。若 <math>\sum_j c_jAv_j=0</math>,那么 <math>\sum_jc_jv_j</math> 属于核,可写成 <math>\sum_i d_i u_i</math>。移项得到 <math display="block">\sum_jc_jv_j-\sum_i d_i u_i=0.</math> 完整列表是一组基,故所有系数为零,特别是每个 <math>c_j=0</math>。因此这些输出是像的一组基,像的维数为 <math>r</math>,定理得证。 这个证明把“丢失的方向”和“仍能辨别的方向”分别计数。对于同样有 <math>n</math> 个输入和输出坐标的方阵,核只有零向量时,秩为 <math>n</math>;此时每个输出都有唯一输入,矩阵可逆。 == 数据不满足方程时:寻找最近的输出 == 测量数据往往不能被模型精确表示。这时可把问题改为:在允许的输出中,找与给定数据距离最近的点。 最简单的情形是允许输出只能在横轴上,而目标为 <math>b=(2,1)</math>。候选输出 <math>p=(a,0)</math> 与目标的距离平方为 <math display="block">\|b-p\|^2=(2-a)^2+1.</math> 当 <math>a=2</math> 时取最小值。因此最佳输出是 <math>(2,0)</math>,误差 <math>(0,1)</math> 与横轴垂直。 [[File:Gezhi-linear-projection-theme.svg|frame|center|alt=点二一向横轴作垂线,垂足为二零,残差为零一|目标到垂足的线段最短;移动垂足会增加一个非负的水平距离平方。]] 一般情况下,允许输出是矩阵的列空间。设最佳输出候选为 <math>p=A\hat x</math>,残差为 <math>r=b-p</math>。如果残差与所有列都垂直,它也与列空间中的任意 <math>Ah</math> 垂直。换一个输入 <math>\hat x+h</math> 后, <math display="block">\|b-A(\hat x+h)\|^2=\|r-Ah\|^2=\|r\|^2+\|Ah\|^2\ge\|r\|^2.</math> 中间没有交叉项,正是因为垂直。因此这样的输出必定最近。 反过来,如果残差与某列空间方向 <math>v</math> 的点积非零,把输出移动 <math>tv</math>,误差平方变为 <math display="block">\|r-tv\|^2=\|r\|^2-2t\,r^{\mathsf T}v+t^2\|v\|^2.</math> 选一个与 <math>r^{\mathsf T}v</math> 同号且足够小的 <math>t</math>,就能使误差减小。所以最优点处残差必须与列空间垂直。写成矩阵形式,就是 <math display="block">A^{\mathsf T}(b-A\hat x)=0,\qquad A^{\mathsf T}A\hat x=A^{\mathsf T}b.</math> 这称为正规方程,是[[最小二乘法]]的基本条件。 例如用直线拟合三个给定点 <math>(0,1),(1,2),(2,2)</math>。写成 <math>\hat y=a+c(t-1)</math>,设计矩阵两列分别为 <math>(1,1,1)</math> 和 <math>(-1,0,1)</math>。它们点积为零,平方长度分别为三、二,因此正规方程为 <math display="block">3a=1+2+2=5,\qquad 2c=(-1)\cdot1+0\cdot2+1\cdot2=1.</math> 得到 <math>a=5/3,c=1/2</math>,即 <math>\hat y=7/6+t/2</math>。三个残差为 <math>-1/6,1/3,-1/6</math>,其和为零,与 <math>(-1,0,1)</math> 的点积也为零,恰好验证了正交条件。 == 重复变换与特征方向 == 有些方向经过变换后仍在原来那条直线上,只改变倍数。若非零向量 <math>v</math> 满足 <math display="block">Av=\lambda v,</math> 就称它为'''特征向量''',<math>\lambda</math> 为特征值。重复作用时,<math>A^2v=\lambda^2v</math>,一般有 <math>A^kv=\lambda^kv</math>。沿这样的方向,不必每次重新做完整矩阵乘法。 考虑 <math display="block">A=\begin{pmatrix}2&1\\1&2\end{pmatrix}.</math> 直接计算可得 <math>A(1,1)=3(1,1)</math>、<math>A(1,-1)=(1,-1)</math>。两个方向独立,任意 <math>(x,y)</math> 都能分解为 <math display="block">(x,y)=\frac{x+y}{2}(1,1)+\frac{x-y}{2}(1,-1).</math> [[File:Gezhi-teaching-eigendirections.svg|frame|center|alt=矩阵把一一方向伸长三倍,保留一负一方向,二零向量分解成这两个方向之和|先把白色向量分解到两条虚线方向,再分别考虑各方向会缩放多少。]] 图中 <math>v=(1,1)</math> 被放大三倍,<math>w=(1,-1)</math> 保持不变。重复变换时,只需分别重复这两个缩放。 因此 <math display="block">A^k(x,y)=3^k\frac{x+y}{2}(1,1)+\frac{x-y}{2}(1,-1).</math> 例如 <math>(2,0)</math> 的两项系数都是一,做 <math>k</math> 次后就是 <math>(3^k+1,3^k-1)</math>。当 <math>k=1</math>,得到 <math>(4,2)</math>,与直接相乘一致。 当一组基全由特征向量组成时,称矩阵可对角化。在这组基下,变换只是分别缩放各个坐标。不过这并非总能做到:剪切矩阵 <math>S=\begin{pmatrix}1&1\\0&1\end{pmatrix}</math> 的特征方程给出 <math>\lambda=1</math>,而 <math>Sv=v</math> 要求第二坐标为零,只有一个独立特征方向,不能组成平面的基。 === 两个状态之间的迁移 === 设一个系统每步有第一状态的八成留在原处、两成转到第二状态;第二状态的三成转到第一状态、七成留在原处。用列向量记录比例,一步变化为 <math display="block">P=\begin{pmatrix}0.8&0.3\\0.2&0.7\end{pmatrix}.</math> 各列非负且和为一,保证更新后仍为总和一的比例。 稳定比例 <math>s=(u,v)</math> 应满足 <math>Ps=s</math> 和 <math>u+v=1</math>。第一条分量方程为 <math>0.8u+0.3v=u</math>,所以 <math>0.2u=0.3v</math>,即 <math>u:v=3:2</math>。于是 <math>s=(0.6,0.4)</math>。 偏离方向满足 <math>P(1,-1)=0.5(1,-1)</math>。从全部位于第一状态的 <math>(1,0)</math> 出发,先分解为 <math display="block">(1,0)=(0.6,0.4)+(0.4,-0.4).</math> 稳定部分不变,偏离部分每步减半,所以 <math display="block">P^k(1,0)=(0.6,0.4)+2^{-k}(0.4,-0.4).</math> 一步后为 <math>(0.8,0.2)</math>,两步后为 <math>(0.7,0.3)</math>,最终趋向 <math>(0.6,0.4)</math>。这个模型中,特征值一表示不变部分,特征值二分之一表示逐渐衰减的部分。 == 历史与进一步阅读 == 《九章算术》第八章“方程”已经通过排列系数、逐步消去来求解实际问题中的线性方程组。[https://old.maa.org/press/periodicals/convergence/illustrating-the-nine-chapters-on-the-mathematical-art-their-use-in-a-college-mathematics-history-1 美国数学协会对《九章算术》的介绍]提供了这些算法的背景。 十九世纪,矩阵运算与抽象线性空间逐步形成:Grassmann 的《扩张论》发表于 1844 年,Cayley 在 1858 年系统研究矩阵,Peano 在 1888 年给出线性空间的公理化定义。[https://mathshistory.st-andrews.ac.uk/HistTopics/Abstract_linear_spaces/ MacTutor:抽象线性空间史]。现代线性代数把消元、几何和抽象结构组织在一起,使同一结论能够用于坐标向量、多项式及其他线性对象。 进一步学习可沿两条方向展开:[[最小二乘法]]和[[优化]]研究近似与最优问题;[[微分方程]]研究连续时间中状态如何变化。计算中还需区分精确相关与近似相关:当数据有舍入误差时,接近相关的列可能使系数对误差敏感,这属于数值线性代数要处理的问题。 == 参考资料与后续阅读 == * [https://ocw.mit.edu/courses/18-06-linear-algebra-spring-2010/ MIT OpenCourseWare,Gilbert Strang,18.06 Linear Algebra]:消元、空间、最小二乘和特征值课程。 * [https://ocw.mit.edu/courses/18-06sc-linear-algebra-fall-2011/pages/ax-b-and-the-four-subspaces/the-four-fundamental-subspaces/ MIT 18.06SC,The Four Fundamental Subspaces]:四个基本子空间的课程单元。 * [https://math.mit.edu/~gs/linearalgebra/ila5/linearalgebra5_3-5.pdf Strang,《Introduction to Linear Algebra》第 3.5 节]:行空间与列空间在消元下的不同变化。 * 前置可读[[矩阵]]与[[向量空间]];继续阅读[[最小二乘法]]、[[优化]]、[[微分方程]]、[[数学建模]]。 [[分类:代数]]
返回
线性代数
。