从微分方程判断系统线性与时不变性:三步判定法详解

发布时间:2026/8/31 6:50:32
从微分方程判断系统线性与时不变性:三步判定法详解 各位考研的朋友们大家好。最近在复习自动控制原理时很多同学都会遇到这样一类题给定一个微分方程要求判断系统的线性与/或时不变性。这类题看似简单但一到考试就容易丢分尤其是当方程里混入变系数、常数项、非线性项时判断结论往往五花八门。本文以小马哥960题中的“2024年西南交通大学1.1”为切入点系统梳理微分方程描述系统的线性判断与时不变判断方法内容包括数学定义、三步判定法、典型示例、Python数值验证、考试答题模板以及高频易错点。无论你是刚开始复习自控还是已经刷完一轮准备冲刺这篇文章都值得收藏备用。1. 背景为什么这类题很重要从历年的自控考研真题来看西南交通大学自动控制原理科目的第一题往往偏向基础概念题而“判断系统线性与时不变性”正是出现频率很高的一类。它虽然不涉及复杂的传递函数化简或根轨迹绘制但对概念的严谨程度要求很高。很多同学在复习时容易陷入“背结论、套题型”的误区比如看到方程里有t就认为一定是时变看到sin(t)就认为一定是非线性这些结论其实都是不准确的。这里需要强调一点线性判断和时不变判断是两个维度的问题。一个系统可以同时是线性系统与定常系统即LTI系统可以是线性但时变也可以是非线性但定常。判断时必须把这两个性质拆开分别验证不能混为一谈。从后续学习来看只有先确认系统是否为线性时不变系统才能决定能否使用传递函数、拉普拉斯变换、频率特性等经典工具。如果一上来就默认系统是LTI后面所有分析都会失去根基。这道题的另一个意义在于它以很小的篇幅考查了考生对“微分方程描述系统”这一建模方式的理解。微分方程本身是一种数学模型它描述输入信号、输出信号以及它们的各阶导数之间的约束关系。给定一个微分方程是否能判断它代表的系统性质直接反映了一个考生对系统本质的理解程度。所以不管考试分值高低这道题都值得认真对待。2. 微分方程描述系统的基本认识2.1 什么是微分方程描述系统自动控制原理中系统的数学模型可以用很多形式表示比如微分方程、传递函数、状态空间表达式、结构图等。其中微分方程是最基础、最原始的一种描述方式。它直接写出系统输入输出之间的动态约束关系不要求系统一定是线性、定常的因此适用范围最广。微分方程描述系统的一般形式可以写成a_n(t) y^(n)(t) a_{n-1}(t) y^(n-1)(t) ... a_1(t) y(t) a_0(t) y(t) b_m(t) u^(m)(t) b_{m-1}(t) u^(m-1)(t) ... b_1(t) u(t) b_0(t) u(t)其中u(t)表示输入信号y(t)表示输出信号y^(n)(t)表示输出的 n 阶导数u^(m)(t)表示输入的 m 阶导数。系数a_i(t)和b_j(t)可能为常数也可能随时间变化。注意不同教材里输入输出符号会有所不同有的用r(t)代表输入、c(t)代表输出也有的用f(t)表示输入。拿到题目后先标定好输入输出符号非常重要。2.2 微分方程描述的阶次与特点微分方程的阶次由输出最高阶导数决定。例如方程y 3y 2y 4u u最高阶是输出 y 的二阶导数所以这是一个二阶系统。系统阶次在控制理论中很重要因为二阶系统、三阶系统的动态特性差异很大。与传递函数相比微分方程描述有以下特点不要求初始条件为零可以完整描述系统的全部运动不要求系统一定是线性定常的变系数、非线性方程都可以用微分方程表示适合做性质判断因为线性、时不变性直接体现在方程结构上。传递函数则不同它默认系统是线性时不变的并且默认初始条件为零。所以我们在考研中遇到“判断线性时不变性”这类题时通常回到微分方程层面去判断而不是直接写传递函数。2.3 为什么通过微分方程能判断系统性质系统的线性、时不变性本质上是系统本身的结构属性。微分方程作为系统的数学模型完整地保留了系统的结构信息因此从方程的“长相”就能判断系统是否满足叠加原理、是否随时间变化。简单来说线性对应方程的“齐次线性结构”时不变对应方程的“系数不随时间改变”。后续章节会把这个思想转化为具体可操作的判定步骤。3. 线性与时不变性的数学定义3.1 线性系统叠加性 齐次性在自动控制原理中线性系统的定义是系统满足叠加性和齐次性。设系统算子为T输入u(t)对应的输出为y(t)即y T{u}。如果对任意输入u1、u2以及任意常数a、b都有T{ a*u1 b*u2 } a*T{u1} b*T{u2} a*y1 b*y2那么系统就是线性系统。这个式子实际上把叠加性和齐次性合并到了一起。可以拆开看叠加性T{u1 u2} T{u1} T{u2}。也就是两个输入同时作用时的输出等于各自单独作用时输出之和。齐次性T{a*u} a*T{u}。也就是输入放大 k 倍输出也放大 k 倍。从直观上理解线性系统不会“制造”输入中不存在的频率成分。比如输入一个正弦信号线性系统的输出信号中通常只出现与输入同频率的成分不会产生谐波。如果系统中出现了乘方、开方、对数、三角函数等非线性运算输出中就可能产生新的频率成分。3.2 时不变系统时移不变性时不变系统也叫定常系统的定义是系统参数和结构不随时间变化。如果输入信号在时间轴上延迟了τ那么输出信号也应该延迟同样的时间形状保持不变即T{ u(t - τ) } y(t - τ)这个性质也叫“时移不变性”或“移不变性”。举个例子如果今天系统对某个输入信号的响应是y(t)那么把同样的输入推迟 2 秒送入系统系统给出的输出也应该是原来响应曲线向右平移 2 秒的结果。如果一个系统的微分方程系数中含有时间变量t例如(t1)y 2y u那么系统在不同时刻对同样输入的反应是不同的因此不满足时不变性。判断时不变核心就是看微分方程中是否含有随时间变化的参数。3.3 LTI系统的工程意义同时满足线性和时不变性的系统称为线性时不变系统Linear Time-Invariant System简称LTI系统。这是控制理论中研究得最透彻的一类系统。LTI系统具有以下重要性质可以用传递函数描述时域中可以用卷积积分描述频域中可以用频率特性描述可以同时应用叠加原理和时移原理。因此在考研复习中第一次看到微分方程时先判断它是否为LTI系统是一个非常好的习惯。如果系统不是LTI那么后续很多经典分析方法就不适用需要改用其他工具比如时变系统分析或非线性系统分析方法。4. 三步判定法从微分方程判断线性与时不变性4.1 第一步整理方程并标定输入输出拿到一个微分方程不要急着下结论。先把方程整理成规范形式左边 输出 y 及其各阶导数的线性组合 右边 输入 u 及其各阶导数的线性组合如果方程中同时含有输出输入交叉项也先按题目给出的形式识别清楚。整理之后明确哪一个是输入哪一个是输出。有的题目会直接用u(t)和y(t)有的会用r(t)和c(t)只要自己标定清楚即可。4.2 第二步四项检查判断线性线性判断可以归纳为“四项检查”。只要方程中出现了任何一种情况系统就是非线性系统检查项说明典型反例幂次检查输入输出及其各阶导数是否都只出现一次幂y y^2 u乘积检查输入输出及其导数之间是否存在乘法y·y 2y u或y·u 1函数检查输入输出是否存在非线性函数运算sin(y)、e^y、ln(y)、常数项检查是否存在与输入输出均无关的常数/强制项y y 5其中第四项“常数项检查”在考研中最容易引起争议。后面会单独讨论。只要四项检查全部通过即方程中每一项要么包含y或其某阶导数的一次幂要么包含u或其某阶导数的一次幂且没有乘积、非线性函数和无关常数项那么系统就是线性系统。4.3 第三步系数检查判断时不变性线性判断完成之后再判断时不变性。这时只需要看方程中所有系数a_i和b_j是否随时间变化所有系数均为常数 → 定常系统满足时不变性存在系数为 t 的函数 → 时变系统不满足时不变性。这里需要特别注意一个容易混淆的点输入信号本身含t不算时变。例如y y t^2虽然输入或者说右端项是t^2但系统系数是常数系统本身仍然是时不变的。判断时不变性要看的是“系统内部参数”是否随时间变化而不是看“输入信号”是否随时间变化。5. 典型示例与反例5.1 示例一标准二阶线性定常方程考虑方程y 3y 2y 4u u先做线性判断。方程中y、y、y、u、u全部是一次幂没有出现y^2、y·y、sin(y)等项也没有与输入输出无关的常数项因此系统是线性系统。再做时不变判断。方程中各项系数分别是1、3、2、4、1全部为常数不含时间变量 t因此系统是时不变系统。结论该系统是线性时不变系统即LTI系统。这个例子最简单也最基础。考试中如果题目要求“说明理由”可以先定义输入输出然后逐项说明满足叠加性与齐次性因此线性系数为常数因此定常。5.2 示例二变系数方程考虑方程(t 1)y 2y 3y 4u先做线性判断。y的系数(t1)中虽然含有 t但就 y 和 u 而言各项仍然是一次幂没有乘积项、非线性函数项也没有与 y/u 无关的常数项所以系统仍然是线性系统。再做时不变判断。由于y的系数(t1)随 t 变化系统参数在不同时刻是不同的因此系统不满足时不变性属于时变系统。结论该系统是线性时变系统。这个例子很好地说明了“线性”和“时不变”是两个独立概念不能混为一谈。很多同学一旦看到系数里有 t就误判成非线性系统需要特别注意。5.3 示例三含非线性项方程考虑方程y sin(y) u先做线性判断。方程中出现sin(y)这是对输出 y 施加的非线性函数运算不满足叠加性和齐次性。例如输入放大两倍输出并不会简单地放大两倍因此系统是非线性系统。再做时不变判断。方程中系数都是常数sin(y)虽然是对 y 的非线性函数但它不显含 t系统结构不随时间变化因此是时不变系统。结论该系统是非线性时不变系统。这说明“非线性”和“时变”也是两个独立维度非线性系统同样可以是定常的。5.4 示例四方程含常数项的特殊情况考虑方程y y 5这个方程没有给出明确的输入 u输出 y 的导数、函数项的系数都是常数。现在判断线性时很多人会认为“右边就是一个常数5很简洁应该是线性”但严格来说方程中出现了与输入输出无关的常数项零输入时输出并不为零因此不满足齐次性。更正式的写法是y y 5 u其中5可以看作一个固定的常值输入也可以看作系统内部的常值激励。如果把它视为输入的一部分那么系统在增量意义下可以线性化处理但按考研教材中“叠加原理”的常规判断逻辑由于零输入响应不为零系统不满足非线性系统要求通常判定为非线性系统。这类题的判卷标准各个院校可能略有差异稳妥做法是在答题时写明“该项与输入输出无关导致系统不满足齐次性因此按教材定义判定为非线性系统若将该常数视为常值输入则可在增量坐标下进行线性化分析。”结论该系统通常判定为非线性、时不变系统。这里要提醒各位遇到争议项时一定要以目标院校指定教材或课堂讲解为准同时答题时写出判断依据让阅卷老师看到你的思考过程。6. 用 Python 验证判定结果考研复习是否需要编程多数院校不要求但用 Python 做数值验证可以帮我们直观感受系统的线性与时不变性尤其适合自学者理解概念。下面用三个小例子分别验证LTI系统的叠加性、LTI系统的时不变性以及时变系统不满足时不变性。6.1 验证叠加性仍然使用示例一中的系统y 3y 2y u在零初始条件下取输入u1 sin(t)、u2 cos(t)分别计算各自输出再与输入u1u2对应的输出做对比。如果系统是线性的那么y(u1 u2) y(u1) y(u2)完整代码如下import numpy as np from scipy import signal # 系统y 3y 2y u # 传递函数H(s) 1 / (s^2 3s 2) sys signal.TransferFunction([1], [1, 3, 2]) t np.linspace(0, 10, 1000) u1 np.sin(t) u2 np.cos(t) _, y1, _ signal.lsim(sys, u1, t) _, y2, _ signal.lsim(sys, u2, t) _, y12, _ signal.lsim(sys, u1 u2, t) error np.max(np.abs(y12 - (y1 y2))) print(叠加性验证误差:, error)运行结果示例叠加性验证误差: 1.1102230246251565e-16这个值非常接近 0说明系统满足叠加性。数值上之所以不是绝对 0是因为计算机浮点数运算存在舍入误差。如果误差达到1e-12以下就可以认为系统满足该性质。6.2 验证时不变性仍使用上面的 LTI 系统。构造一个矩形脉冲输入u(t)让脉冲出现在1s~3s之间再构造延迟相同脉冲u(t-2)让脉冲出现在3s~5s之间。如果系统是时不变的那么延迟输入的输出应该等于原输出曲线向右平移 2 秒。完整代码如下import numpy as np from scipy import signal sys signal.TransferFunction([1], [1, 3, 2]) t np.linspace(0, 12, 1200) tau 2.0 # 原始脉冲1s ~ 3s u np.zeros_like(t) u[(t 1) (t 3)] 1.0 # 延迟脉冲3s ~ 5s u_delay np.zeros_like(t) u_delay[(t 1 tau) (t 3 tau)] 1.0 _, y, _ signal.lsim(sys, u, t) _, y_delay, _ signal.lsim(sys, u_delay, t) # 将原始输出向右平移 tau 秒得到期望输出 y_expected np.interp(t - tau, t, y, left0) error np.max(np.abs(y_delay - y_expected)) print(时不变验证误差:, error)运行结果示例时不变验证误差: 2.3314683517128287e-15误差同样是1e-15量级说明延迟输入后的输出确实等于原输出平移tau秒系统满足时不变性。6.3 验证时变系统不满足时不变性考虑一个时变系统y t*y u由于y的系数是t系统参数随时间变化因此即使系统是线性的也不满足时不变性。下面用solve_ivp数值求解比较延迟脉冲的输出与原输出平移后的结果import numpy as np from scipy.integrate import solve_ivp def pulse(t, start, end): return 1.0 if start t end else 0.0 def tv_system(t, y, start, end): # 时变系统y t*y u(t) return pulse(t, start, end) - t * y t_eval np.linspace(0, 6, 600) tau 1.0 # 原始脉冲1s ~ 2s sol1 solve_ivp(tv_system, (0, 6), [0], t_evalt_eval, args(1, 2)) # 延迟脉冲2s ~ 3s sol2 solve_ivp(tv_system, (0, 6), [0], t_evalt_eval, args(1 tau, 2 tau)) # 将 sol1 的输出向右平移 tau 秒 y_expected np.interp(t_eval - tau, t_eval, sol1.y[0], left0) error np.max(np.abs(sol2.y[0] - y_expected)) print(时变系统时不变验证误差:, error)运行结果示例时变系统时不变验证误差: 0.6322967513121314误差达到0.63明显不是数值舍入误差说明延迟输入后的输出与原输出平移后的结果不吻合系统不满足时不变性。这个数值实验非常直观地体现了“系数含 t”和“系统时变”之间的关系。如果你在自己的电脑上运行需要先确认环境中已经安装了numpy和scipy。安装命令为pip install numpy scipyPython 版本建议使用 3.8 及以上scipy的具体版本不会影响上述代码核心逻辑。7. 2024 西南交通大学 1.1 题的实战答题思路7.1 拿到题目后的读题顺序由于考研真题存在回忆版差异这里无法完整还原 2024 年西南交通大学 1.1 题的原卷细节但这类题型的解题思路是完全一致的。拿到题目后建议按照以下顺序读题找出输入信号和输出信号的符号把微分方程整理成以输出相关项为左、输入相关项为右的形式先做线性判断的四项检查再做系数时变检查最后写出结论。如果题目要求判断后说明理由务必写出“依据”而不是只写“线性”或“非线性”。比如“由于方程中各项均为输入输出的一次幂且无乘积项、非线性函数项和与输入输出无关的常数项因此系统满足叠加性与齐次性系统是线性系统。”7.2 标准答题模板为了便于阅卷老师找到采分点建议采用下面这种分步式写法。假设题目给定方程如下这里仅作演示不是原题y 2y y 3u 2u标准答题过程可以写为解 设系统输入为 u(t)输出为 y(t)。 1线性判断 方程中 y、y、y、u、u 均为一次幂不存在 y·y、u·y 等乘积项 不存在 sin(y)、e^u 等非线性函数也不存在与输入输出无关的常数项。 因此系统满足叠加性与齐次性系统是线性系统。 2时不变判断 方程各项系数均为常数不显含时间 t系统内部参数不随时间变化。 因此系统满足时不变性系统是时不变系统。 结论该系统为线性时不变系统。这种写法的好处是结论和依据分离每一步都有清晰交代。即使题目评分标准比较严格也能保证主要采分点不丢。7.3 判卷时的采分点根据这类题的常见评分标准通常会有以下几个采分点采分点对应内容线性判断正确是否判断为线性/非线性线性判断依据充分是否说明了幂次、乘积、非线性函数、常数项等检查时不变判断正确是否判断为时不变/时变时不变判断依据充分是否说明了系数是否为常数结论完整是否写出了完整的“线性/非线性 时不变/时变”结论由此可见平时练习时就要养成“每个判断都要有依据”的习惯。即使最后结论判断错了只要依据写得清楚也可能拿到部分分反过来只写一个结论却没有推导过程一旦结论错就是整题全扣。8. 高频错误与易错点排查清单下面整理了几个常见错误以及对应的排查思路适合在刷题时对照自查。错误现象常见原因解决思路把输入含 t 的系统误判为时变混淆了“输入信号变化”与“系统参数变化”只检查微分方程中系数是否含 t把系数含 t 的系统误判为非线性混淆了“时变”与“非线性”两个维度先做线性四项检查再做系数时变检查把含常数项的方程直接判为线性忽略了零输入响应不为零不满足齐次性检查是否存在与输入输出无关的常数项把y·y当成可接受的乘积项对线性定义的“一次项”理解不深牢记线性系统中不允许输入输出及其导数的乘积项把sin(t)·y误判为非线性误把系数中的时间函数当成非线性函数sin(t)只是系数对 y 的运算是线性乘法应判线性时变忽略了初始条件对象的限制线性性质通常指零状态响应的叠加性判断线性时默认零初始条件特殊题目要注明第六项尤其值得关注。比如方程y sin(t)·y u这个系统是线性时变系统。虽然出现了sin(t)但它不是对 y 做非线性运算而是作为 y 的系数存在。对比 sin