相平面动画演示

本页面含有交互动画,建议使用chrome或者edge浏览器,不兼容ie浏览器。本页以动画交互为主,解说较少,建议搭配b站专栏食用。

点击上面的进度条进入下一步。

左图模拟了一个无摩擦力的滑块在一维地面上的运动,上面是相平面,下面是实物示意图。

一般的平面直角坐标系中,横轴和纵轴通常是x和y,表示空间的两个维度,或者是两个不同的物理量,表示两个物理量的关系。 然而,相平面和一般的平面不一样。它的横轴是位移x,而纵轴是x随时间的变化率,也就是速度u。

在相平面上,每一个点都有唯一的坐标(x, u),代表了滑块的一种运动状态。 随着时间的流动,滑块会根据dx=u*dt的规律运动,反映到相平面上就是代表滑块的点会沿水平方向运动。图上的箭头表示了处于不同状态下点的运动方向。 由于没有外力,速度不会改变,所以所有箭头都是水平方向的,表示无论如何只有x坐标会改变,而u坐标不变。

用鼠标左键点击相平面可以将滑块初始状态置于指定位置,观察其运动。

现在点击下列按钮,可以按照一定规则来施加外力。

下面文本框里可以自定义添加外力的规则。点击下面的预设可以查看其对应的代码作为参考。

可能你已经找到了一个比较好的算法能让滑块快速稳定到原点,然而这只是理想情况下的结果, 现实中的控制系统有很多的限制。比如说发动机的推力有限,加速度的大小不可能太大(饱和非线性), 或者发动机推力有下限,不能精细调节,或者发动机调整推力是有延迟的,发出指令后过一段时间才有响应。 试一下在限制下同样的算法是否还能正常运行。

施加外力会产生加速度,加速度会使速度随着时间改变,反映到相平面上就是代表滑块的点在竖直方向移动(绿色箭头)。 这个竖直方向的运动和之前的水平方向的运动(灰色箭头)合成之后,就得到了总的运动方向(紫色箭头)。 质点总是会沿着紫色箭头的指向运动。

在不同的外力下,紫色箭头的分布会有所不同,因此滑块的运动会有不同的结果。 有的时候会发散,有的时候会等幅振荡,有的时候能稳定到一个点上。

因为速度与位移的关系(灰色箭头)是刚体的固有属性,不能改变,所以要想控制刚体, 就是要想办法设计出合理的施力规则(绿色箭头分布),使得紫色箭头的分布能让刚体稳定到目标点上

语法为javascript,其中x表示位移,u表示x方向的速度,返回值代表算法的输出。

a = function(x, u){
}