线性化非线性模型
什么是线性化?
线性化是非线性系统的一种线性逼近,在工作点周围的小区域内有效。
例如,假设非线性函数为 。围绕工作点 x = 1, y = 1 线性化此非线性函数,会生成一个线性函数 。
在工作点附近, 是对 的良好逼近。一旦远离工作点,其逼近效果就变得很差。
下图显示了对 进行线性化的一个可能的良好逼近区域。实际有效区域取决于非线性模型。
将线性化的概念推广到动态系统,可以将连续时间非线性微分方程编写为以下形式:
在这些方程中,x(t) 表示系统状态,u(t) 表示系统输入,y(t) 表示系统输出。
此系统的线性化模型在工作点 t=t0, x(t0)=x0, u(t0)=u0 且 y(t0)=g(x0,u0,t0)=y0 周围的小区域内有效。
为了表示线性化模型,定义以工作点为中心的新变量:
当这些变量的值很小时,用 δx、δu 和 δy 表示的线性化模型是有效的:
线性化的应用
线性化在模型分析和控制设计应用中很有用。
指定非线性 Simulink® 模型的精确线性化可以得到线性状态空间、传递函数或零极点增益方程,可用于:
绘制 Simulink 模型的波特响应。
通过计算开环响应求环路稳定裕度。
分析和比较不同工作点附近的被控对象响应。
设计线性控制器
经典的控制系统分析和设计方法需要线性时不变模型。当您调节补偿器时,Simulink Control Design™ 会自动线性化被控对象。请参阅Choose a Control Design Approach。
分析闭环稳定性。
通过计算控制系统的闭环线性模型来测量频率响应中共振的大小。
生成对参数变化和建模误差灵敏度较低的控制器。
Simulink Control Design 中的线性化
您可以使用 Simulink Control Design 软件对连续时间、离散时间或多速率 Simulink 模型进行线性化。生成的线性时不变模型以状态空间形式呈现。
默认情况下,Simulink Control Design 使用逐模块方法线性化模型。这种逐模块方法单独线性化 Simulink 模型中的每个模块,再将结果进行合并以生成指定系统的线性化。
您也可以使用完整模型数值扰动来线性化系统,其中软件通过扰动根级输入和状态的值来计算完整模型的线性化。对于每个输入和状态,软件对模型进行微小扰动,并根据模型对这些扰动的响应计算线性模型。您可以使用前向差分或中心差分来扰动模型。
相对于完整模型数值扰动,逐模块线性化方法有几项优势:
大多数 Simulink 模块都有预编程的线性化,可提供模块的精确线性化。
您可以使用线性分析点来指定要线性化的模型部分。
您可以配置模块以使用自定义线性化,而不会影响模型仿真。
会自动删除结构上的非最小状态。
您可以指定包含不确定性的线性化(需要 Robust Control Toolbox™ 软件)。
您可以获得详细的诊断信息。
线性化多速率模型时,您可以使用不同速率转换方法。完整模型数值扰动只能使用零阶保持速率转换。
精确线性化的模型要求
精确线性化支持大多数 Simulink 模块。
然而,具有强不连续性或基于事件的动态特性的 Simulink 模块会被(正确地)线性化为零或大(无穷大)增益。包含基于事件或不连续行为的模型需要 Simulink Control Design 软件进行特殊处理。这种基于事件或不连续的行为可能来自以下模块:
Discontinuities 库中的模块
Stateflow® 图
触发子系统
脉冲宽度调制 (PWM) 信号
对于大多数应用程序,您的 Simulink 模型中的状态应处于稳态。否则,您的线性模型仅在很短的时间区间内有效。
工作点对线性化的影响
选择合适的线性化工作点对于获得精确的线性模型至关重要。线性模型是非线性模型的一种逼近,它仅在线性化模型所基于的工作点附近有效。
尽管您指定了要线性化哪些 Simulink 模块,但模型中的所有模块都会影响工作点。
当您围绕不同工作点进行线性化时,一个非线性模型可能出现两个差异很大的线性逼近。
此模型的线性化结果如下所示,积分的初始条件为 x0 = 0。
下表总结了两个不同工作点的不同线性化结果。
工作点 | 线性化结果 |
---|---|
初始条件 = 5,状态 x1 = 5 | 30/秒 |
初始条件 = 0,状态 x1 = 0 | 0 |
您可以在三种不同类型的工作点处线性化您的 Simulink 模型:
配平的工作点 - 在配平工作点处进行线性化
仿真快照 - 在仿真快照处线性化
触发的仿真事件 - Linearize at Triggered Simulation Events