相平面 不动点
到目前为止,我们一直在时间轴上画 x 随时间变化的图像。不过,要理解振动和流动,还有一幅更有力的图:抹掉时间,直接画出状态本身。摆动的重物的状态,光靠位置 x 是不够的。同一个位置,它是正在飞快经过,还是即将停下,情况并不相同。所以把位置 x 和速度 x' 绑成一对,把 (x, x') 看作平面上的一个点,这个平面就是相平面。随着时间推移,这个点在平面上边走边画出曲线,系统的微分方程在每一点用箭头规定它下一步往哪里去。这里会发生神奇的事:只要知道箭头变成 0 的那些特殊点,也就是不动点的类型,就能知道系统最终去向何方,是趋于稳定、发散,还是不停打转。而决定这些类型的,正是线性代数里见过的特征值。在这一讲,微分方程这条线将整个被特征值串联起来。
先理解相平面这个舞台。横轴是位置 x,纵轴是速度 x'。某一时刻系统的状态,完全由这个平面上的一个点,也就是状态点决定。按下“播放”,做阻尼振动的系统的状态点以金色移动,留下走过的轨迹。重物被推到一侧时 (x 大,速度 0),点在横轴的右侧;重物飞快地穿过中间返回时 (x 为 0,速度大),点到达纵轴的下方,因为它正向左运动,速度为负。位置和速度就这样交替转换,点绕着原点顺时针转动。由于有阻尼,能量不断流失,点画出一条向内卷的螺线,最终被吸进原点,也就是静止状态。点到达原点后,会回到起始位置重新开始画。在时间轴图像上起伏的曲线,在这里变成了一条向内卷的干净螺线。抹掉时间,换来的是一眼看清运动的整体形状。
状态点往哪里走,由系统的方程决定。回想一下前面见过的方向场:那里给每一点一个斜率。相平面更进一步,给每一点一支完整的箭头,也就是状态从那里朝哪个方向、以多快的速度移动。联立方程 x'=y, y'=−x−0.4y 让整个平面布满了箭头。这就是向量场。把起点拖到任何地方,状态点都会顺着那里的箭头走,到了下一点又顺着那里的箭头走。这样忠实地一支接一支踩着箭头走,就画出一条轨迹:深金色是将要走的路,浅金色是走过的路。就像落进河里的树叶随水流漂走一样,状态点也沿着向量场流动。前面见过的 1 维流动,在这里长成了 2 维流动。
在整个向量场里,只有一类点特殊:箭头长度为 0 的点,即不动点。在那里状态哪里也不去,一旦放上去就永远不变,是平衡状态。可是同样是不动点,性格却完全不同。图中是单摆的相图,单摆笔直下垂的位置就是不动点。放在那里它就静止不动,轻轻碰一下,它只会绕着转,不离开那一带。这样的点叫作中心,属于稳定的不动点。单摆倒立的位置也是不动点。完美立住时理论上静止不动,可只要推一根头发丝那么一点,它就哗地倒下、远远跑开。这样的点叫作鞍点,是不稳定的不动点。用两个按钮依次点亮两个不动点,经过它们周围的金色轨迹也会一起画出来。系统的命运,取决于起点落在哪个不动点的势力范围里,以及那个不动点是什么类型。
不动点附近的流动形状,可以干净地分成几类。逐个按下标签,就能像翻图鉴一样看。在稳定结点,所有箭头都直接被吸进不动点,所以轻轻碰一下,它也会毫无怨言地回到原位。稳定螺旋是一边打转一边进去:会回来,但一路晃荡着回来,前几讲见过的阻尼振动正是这样。鞍点从一个方向把东西吸进来,却从另一个方向把它们甩出去,所以几乎所有起点最终都会远远跑开,是不稳定的点。中心既不吸进也不推出,永远绕着同一条轨道转,是没有阻尼的振动。“不稳定”标签里的螺旋反向打转,越来越往外甩。这几类就是 2 维线性系统所能表现出的全部行为。复杂的系统在不动点附近,也会像这本图鉴里的某一类那样行动。那么,一个系统属于哪一类,由什么决定?
终于,一切汇聚到一处。决定不动点类型的,是系统在那一点线性化后的矩阵,即雅可比矩阵的特征值。在线性代数里,特征值说明变换朝哪个方向拉伸多少。在这里,它们决定状态点在不动点附近朝哪个方向、以多快的速度被推开或被吸入。特征值是 2 次式 λ²−τλ+Δ=0 的根,τ 是矩阵的迹,Δ 是行列式。在上方的 (τ, Δ) 平面里拖动点,下方的相图会整个改变,同时写出特征值和类型名称。虚线抛物线是特征值从实数变为复数的边界。两个特征值都是负实数时 (Δ>0, τ<0, 判别式为正),所有方向都在收缩,是稳定结点。特征值是复数时 (判别式为负),复数那条线上见过的旋转加入进来,形成螺旋:实部为负是稳定螺旋,为正是不稳定螺旋。实部为 0 的纯虚特征值给出中心,也就是永远持续的振动。特征值符号相反时 (Δ<0),是一边吸入一边甩出的鞍点。前一讲的特征根其实正是这个雅可比矩阵的特征值(一个 2 阶方程本身就是这样的 2 维系统),而复指数就是螺旋的真面目。线性代数的特征值、复数的旋转、微分方程的稳定性,全都在这一幅图里相遇。