Main Content

线性化非线性模型

什么是线性化?

线性化是非线性系统的一种线性逼近,在工作点周围的小区域内有效。

例如,假设非线性函数为 y=x2。围绕工作点 x = 1, y = 1 线性化此非线性函数,会生成一个线性函数 y=2x1

在工作点附近,y=2x1 是对 y=x2 的良好逼近。一旦远离工作点,其逼近效果就变得很差。

下图显示了对 y=x2 进行线性化的一个可能的良好逼近区域。实际有效区域取决于非线性模型。

将线性化的概念推广到动态系统,可以将连续时间非线性微分方程编写为以下形式:

x˙(t)=f(x(t),u(t),t)y(t)=g(x(t),u(t),t).

在这些方程中,x(t) 表示系统状态,u(t) 表示系统输入,y(t) 表示系统输出。

此系统的线性化模型在工作点 t=t0, x(t0)=x0, u(t0)=u0y(t0)=g(x0,u0,t0)=y0 周围的小区域内有效。

为了表示线性化模型,定义以工作点为中心的新变量:

δx(t)=x(t)x0δu(t)=u(t)u0δy(t)=y(t)y0

当这些变量的值很小时,用 δx、δu 和 δy 表示的线性化模型是有效的:

δx˙(t)=Aδx(t)+Bδu(t)δy(t)=Cδx(t)+Dδu(t)

线性化的应用

线性化在模型分析和控制设计应用中很有用。

指定非线性 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 = 530/秒
初始条件 = 0,状态 x1 = 00

您可以在三种不同类型的工作点处线性化您的 Simulink 模型:

相关主题