2. 相平面与相轨迹:相平面的定义、相轨迹的概念、相轨迹的绘制方法

2.1 相平面——系统状态的“地图”

各位工程师,咱们先聊聊相平面。说白了,相平面就是一个二维的坐标系。横轴是系统的状态变量 x,纵轴是它的导数 ẋ(也就是速度)。

我刚开始接触这个概念时,也觉得有点抽象。后来我把它想象成一张地图——地图上每个点代表一个位置,而相平面上的每个点代表系统的一个“状态”。

举个例子。一个弹簧-质量-阻尼系统,它的状态可以用位移 x 和速度 v 来描述。那么相平面上的点 (x, v) 就唯一确定了系统在某一时刻的“处境”。

相平面的定义:

由系统状态变量 x 及其导数 ẋ 构成的二维平面。平面上的每一点 (x, ẋ) 对应系统的一个瞬时状态。

你想想看,有了这张“地图”,我们就能直观地看到系统从任意初始状态出发,会怎么演变。是不是比看一堆微分方程舒服多了?

2.2 相轨迹——系统运动的“足迹”

相轨迹是什么?就是系统状态点在相平面上留下的运动轨迹。

我记得有一次调试一个伺服系统,系统老是振荡。我盯着示波器看波形,看了半天没头绪。后来我把位置和速度画到相平面上,一条清晰的螺旋线出现了——系统在慢慢收敛,但阻尼不够。嗯,问题一下就找到了。

相轨迹有几个重要性质,我列出来:

  • 唯一性:除奇点外,相轨迹不会相交。因为系统状态是确定的,一个点只能有一个运动方向。
  • 方向性:相轨迹有方向,通常用箭头表示。上半平面(ẋ > 0)表示 x 在增大,下半平面(ẋ < 0)表示 x 在减小。
  • 奇点:ẋ = 0 且 ẍ = 0 的点,系统处于平衡状态。奇点类型决定了系统稳定性。

个人经验: 我在做电机位置控制时,经常用相轨迹来判断系统是否进入极限环。如果相轨迹闭合且稳定,那就是极限环振荡——说白了就是系统在“自嗨”,需要加阻尼或调整控制器参数。

2.3 相轨迹的绘制方法

绘制相轨迹,我常用的方法有三种。每种都有它的适用场景。

2.3.1 解析法

对于简单的二阶系统,可以直接从微分方程推导出相轨迹方程。

比如一个无阻尼弹簧系统:

ẍ + ω²x = 0

两边乘以 ẋ 再积分,得到:

ẋ² + ω²x² = C

这是个椭圆方程。相轨迹就是一圈圈的椭圆,代表系统在做等幅振荡。

我曾经用这个方法给学生演示过,他们一开始觉得数学推导很枯燥。但当我画出相轨迹图,看到椭圆一圈圈转时,大家都“哦”了一声——原来这就是无阻尼振荡啊。

2.3.2 等倾线法

这个方法更通用,适合非线性系统。核心思想是:相轨迹的斜率等于 ẍ/ẋ。

具体步骤:

  1. 写出系统微分方程 ẍ = f(x, ẋ)
  2. 计算斜率 k = ẍ/ẋ = f(x, ẋ)/ẋ
  3. 令 k 为常数,得到等倾线方程
  4. 在相平面上画出多条等倾线,每条线上标出对应斜率方向
  5. 从初始点出发,沿着等倾线指示的方向画曲线

避坑指南: 我曾经用等倾线法画一个强非线性系统,等倾线间距取得太大,结果画出来的相轨迹严重失真。后来我学乖了——等倾线要画密一些,尤其在斜率变化剧烈的区域。建议至少画 10-15 条等倾线。

2.3.3 数值法

现在谁还手画啊?用 MATLAB 或 Python 几行代码就搞定了。

我常用的 Python 代码:

import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint

def system(state, t):
    x, v = state
    dxdt = v
    dvdt = -x - 0.5*v  # 阻尼振荡
    return [dxdt, dvdt]

t = np.linspace(0, 20, 1000)
initial_states = [[1, 0], [2, 1], [-1, -2]]

for init in initial_states:
    sol = odeint(system, init, t)
    plt.plot(sol[:, 0], sol[:, 1], label=f'初始点 ({init[0]}, {init[1]})')

plt.xlabel('x')
plt.ylabel('ẋ')
plt.grid(True)
plt.legend()
plt.show()

这段代码能画出多条相轨迹,方便观察不同初始条件下的系统行为。

2.4 相平面分析的核心逻辑

为了让大家更直观地理解相平面分析的整体框架,我画了一张图:

相平面分析核心逻辑 系统微分方程 相平面 (x, ẋ) 相轨迹 三种绘制方法 解析法 等倾线法 数值法 系统行为分析

这张图把整个流程串起来了:从微分方程出发,建立相平面,绘制相轨迹,最后分析系统行为。每一步都有它的意义。

2.5 实际应用中的注意事项

方法 适用场景 注意事项
解析法 线性系统、简单非线性系统 推导过程容易出错,建议用数值法验证
等倾线法 任意二阶系统 等倾线数量要足够,斜率变化剧烈区域加密
数值法 复杂系统、高阶系统降阶后 注意数值积分步长,步长太大会丢失细节

核心要点:

  • 相平面是分析二阶系统的利器,尤其适合非线性系统
  • 相轨迹的形态直接反映系统稳定性、振荡特性
  • 三种绘制方法各有优劣,实际中我常用数值法快速验证,再用等倾线法深入理解

好了,这一章就到这里。相平面和相轨迹是后续分析的基础,大家一定要亲手画几条相轨迹感受一下。光看是学不会的,得动手。


公众号:蓝海资料掘金营,微信deep3321