1. 自治系统:当你的系统“忘记”了时间
想象一下,你正在玩一个简单的弹球游戏。你用一个弹簧发射一个小球,小球在空中飞行,然后落回地面。你每次都用同样的力度、同样的角度去发射它。你会发现,无论你是上午10点玩,还是晚上8点玩,只要初始条件(力度、角度)一样,小球飞行的轨迹就完全一样。这个系统,就很像一个自治系统,或者说时不变系统。
用数学家的“黑话”来说,一个自治系统可以用这样一个微分方程来描述: dx/dt = f(x)
这个方程看起来有点唬人,但其实很简单。x 代表系统的状态,比如小球的位置和速度。dx/dt 就是这个状态随时间的变化率,也就是小球飞得多快、方向如何变化。最关键的是右边这个 f(x),它只依赖于当前的状态 x,而不显式地包含时间 t。
这是什么意思呢?我打个比方。你开车,决定你下一秒车速和方向的,是你现在踩了多少油门、打了多少方向盘、路面是什么状况。至于现在是星期一还是星期天,是早上9点还是下午3点,只要你踩油门的脚法和方向盘的角度不变,车在相同路况下的动态响应就是一样的。系统(车)的“行为规则” f 本身,不随着日历或钟表的时间而改变。这就是“时不变”的精髓。
注意一个常见的误解:说系统是时不变的,并不是说系统的状态不随时间变化。小球当然会飞,车当然会跑,状态 x(t) 肯定是时间的函数。这里的“不变”,指的是支配系统演化的规则 f 本身不随时间改变。规则是固定的,就像游戏的物理引擎是写死的,不管你在什么时间点启动游戏,引擎的计算法则都一样。
让我给你看两个具体的“代码”例子,这样更直观:
例子1:线性自治系统
# 假设系统状态 x 是一个二维向量 [位置, 速度]
# 系统方程: dx/dt = A * x
import numpy as np
A = np.array([[0, 1], # 这个矩阵描述了位置和速度之间的关系
[-2, -1]]) # 比如,加速度和位置、速度有关
def autonomous_system(x):
# f(x) = A * x, 这里没有时间 t 作为输入!
return np.dot(A, x)
# 无论 t 是 0, 10, 还是 100,计算状态变化率的方式都一样
x_current = np.array([1.0, 0.5])
dxdt_at_noon = autonomous_system(x_current)
dxdt_at_midnight = autonomous_system(x_current) # 结果和上面一模一样!
这个系统里,矩阵 A 是常数。只要 x 相同,算出来的 dx/dt 就相同,跟你什么时候算没关系。
例子2:非线性自治系统
# 一个更复杂的例子,比如描述单摆的无阻尼运动(小角度近似下)
# dx/dt = [x2, -sin(x1)], 其中 x1 是角度, x2 是角速度
def pendulum(x)


9335

被折叠的 条评论
为什么被折叠?



