来自系列:修剪和线性化
布莱恩道格拉斯
为什么要通过线性化模型的麻烦?为了释放Richard Feynman,这是因为我们知道如何解决线性系统。通过线性模型,我们可以更轻松地设计控制器,评估稳定性,并了解系统动态。
本视频介绍了线性化的概念,并涵盖了一些主题,这些主题将帮助你理解如何使用线性化,以及它为什么有用。
该视频还描述了操作点和修剪系统的过程,以使操作点均衡。
要结束,我们通过查看系统的一阶部分衍生物来完成雅各的线性化的一个例子。
在这个视频中,我将介绍线性化的概念,并介绍一些主题,这些主题将帮助你理解如何使用线性化,以及它为什么有用。考虑一个物理系统建模为一个微分方程的形式xdot是x的函数和u。这意味着系统如何随着时间的变化,取决于系统的当前状态,和外部输入到系统,这可能是外力,扭矩,能源等等。通常这种表示是非线性的,因为所有实际系统本质上都是非线性的。问题是,我们能否找到一个合适的线性的,定常的系统状态和外部输入的组合,在某种有限的意义上产生与非线性动力学相似的结果?也就是说,我们能否将x和u的非线性函数模型拟合成线性形式x导= Ax + Bu这样做的意义是什么?好吧,让我们谈谈这个。我是Brian,欢迎来到MATLAB技术讲座。
首先,让我们来看看水箱系统的Matlab示例。水通过顶部的开口泵入罐中,以与驱动泵的电压成比例的速率。底部有一个排水,水可以离开罐。罐中的水的高度会改变,并且可以通过控制泵的电压来影响。如果打开Matlab命令窗口并键入“WaterTank”,将弹出以下Simulink模型。金宝app这是一个经典的反馈系统;有一个参考水高,控制器和代表水箱系统动态的工厂,输入是电压,输出为水高。在工厂子系统中,我们有详细说明它是如何建模的。由此,我们可以为此系统写出微分方程。参数,a,b和大写a是罐的特定参数,并且它们代表与流速与罐和横截面积的流速相关的常数。 So what we have is the change in height of the water equals the amount of height gained by the water entering the tank minus the height lost by water leaving. And the amount lost is proportional to the square root of the water height. This square root makes it a nonlinear model. So at this point, we could linearize this model and fit it to the form x dot = Ax + Bu.
所以问题可能是,为什么要通过麻烦来获得线性模型?为什么不留下更准确的非线性模型?至少有三种原因。一,我们可以更容易地检查本地稳定性,并了解线性系统的动态,而不是我们可以是非线性系统。二,我们有一堆工具,我们可以用来设计用于线性模型的控制器。三,您可以通过用线性替换非线性模型来加速模拟。如果您正在运行Controller在目标硬件上运行的硬件循环测试,则这可能是很重要的,但它与系统的其余系统的模拟交互。在某些情况下,运行模拟中的非线性数学无法快速解决以便跟上实时硬件,因此将其更换更快,线性等效项是一个好的选择。所以让我们进入线性化的过程。
在任何时刻,动态系统都有一个状态 - 即,系统变量的特定配置,可定义系统的状态(位置,速度,电压等)。系统中可以输入的所有可能配置的集被称为状态空间。这是系统可以体验的每一个方向,运动和条件。例如,采取具有两个状态的摆锤:角度θ和角速率,θdot。状态空间将从0到2 PI延伸,以覆盖整个圆圈,并对Theta点的正无穷大,以涵盖它可以旋转的所有可能的速率。当然,实际上,你的钟摆可能永远不会超过10 rad / s这样的东西,所以我们可以将其砍下到这更小的运行状态空间或操作信封。如果我们可以获得在整个状态空间上运行良好的线性模型,这将是理想的。但这通常不是这种情况,因为单个线性模型可能代表某些州的动态井,而是由于系统的非线性,它将是对他人的不良表示。所以要解决这个问题,我们在特定位置线性化称为我们想要最低错误的操作点。一个重要且非常常见的操作点是当系统处于稳态或平衡时。 This means that if you initialized the system at this state, then the states would not change over time. Or, another way of putting it: x dot for all time equals zero. That might mean that the system states are at an equilibrium on their own with no external inputs, like a pendulum that has two equilibrium points, one hanging straight down and one perfectly balanced pointing straight up. But we also have inputs into the system and the combination of inputs and system states can also be an equilibrium. For example, if the input into the pendulum is a torque, then we can find a constant torque that moves the equilibrium point to pi/4 radians. If we initialized the pendulum in this condition, it would not move since the torque from gravity and the input torque perfectly balance out and we can linearize around this condition. The act of finding an equilibrium by adjusting the input signals is called trimming. This is a term that is borrowed from aerospace, like trimming an aircraft to fly straight and level.
想象一架飞机在给定空速下以零迎角飞行时保持恒定高度,而没有电梯的控制输入。这是系统的稳态条件。然而,如果飞机开始减速,或者以低于稳定状态的空速飞行,机翼产生的升力就会减少,高度就会开始下降。如果飞行员在系统中增加一个输入,拉回轭架,使电梯上升,提高迎角,产生更大的升力,那么在这个新的速度下,高度仍然可以保持不变。但是,飞行员不必不断地拉回轭架,而是可以调整电梯,使中性轭架的位置能够产生保持高度恒定所需的电梯位置。这就是修剪的意思:找到系统状态和输入的组合,在您选择的操作点产生一个稳定状态的情况。
您可以想象,如果您的系统有数十个状态,您试图保持不变,并且有几个可以用来控制它们的控制输入,那么裁减可能是一项复杂的任务。在下一个视频中,我们将讨论一些在Simulink中可用的工具,这些工具可以使修剪变得容易。金宝app但是现在,理解微调的概念以及它与产生稳态工作点的关系就足够了。
让我在一边真正快速地离开。在状态空间中的任何任意点,并不总是可以修剪稳定状态。例如,即使状态空间允许该运动,也没有将导向飞机飞向稳态的输入组合。所以你必须非常了解你的系统,你不挑选你无法找到均衡的状态的组合。
好的,回到它。我们选择了我们的操作点并修剪了系统,使其处于均衡状态。下一步是在该操作点线性化。
为了展示我们是如何做到这一点的,让我们快速浏览两个示例。我从维基百科上截取了第一个例子,但我想在这里复述一下并润发一下因为我认为它会给你们一个关于线性化的基本概念以及数学是如何简化的。
我们将查看等式F(x)等于x的平方根。现在,这不是一个微分方程,但它仍然有助于获得积分。
x的平方根是一个非线性函数它看起来像这样。我们可能会问,这个函数在x = 4处的值是多少?这很容易解,我们得到2。然而,一个更难的问题是,x=4.001时的值是多少?用手来解可能要花很多时间。但是,我们可以用一个线性方程来估计值来简化它。只要我们不偏离操作点太远,那么线性估计和真实值之间的误差就会很小。好了,我们开始吧。直线的方程是y = mx + b m是斜率,b是偏移量。
沿函数任意一点的斜率就是函数的导数而偏移量就是函数在操作点处的值。线性化后的方程y(x)等于工作点处的斜率x巴乘以到工作点的距离加上偏移量。这是一个关于x横的线性化,在这个例子中,x横是4。得到线性方程1/4 * x - 4 + 2。
现在我们可以检查x = 4.001处的值,并很容易地计算得到2.00025。在4.001处计算的真实函数是2.00024998。这还不到百万分之一。虽然线性化需要很多步骤,但我们现在可以用这个方程快速地估计出4。1或3。9或任何接近工作点的数字,误差很小。
但是,如果用x = 2处的线性方程,误差就超过0。5%如果这个误差超出了我们的处理能力,我们也可以选择在操作点2处线性化然后当x在2和4之间变化时,在两个线性模型之间切换。
即使这个例子很简单,它也与我们开始的坦克例子相同。记住是HDOT,即状态为H和INPUT V的函数,作为该非线性方程。让我们来线性化它。首先,我们选择一个操作点,我将坚持使用h bar = 4,使其类似于最后一个问题。现在我们可以通过将H设置为HOT = 0来修剪系统,使其达到操作点并解决输入。我们得到v bar是2a到b。利用这些值,在操作点评估的函数等于0。
这个系统只有一个状态,高度,和一个输入,电压。所以我们可以期望最终的线性方程是这种形式,两个矩阵都是1 × 1的。好了,现在我们有了一个在工作点的裁剪系统,现在我们可以线性化它了。我想提醒你们,我们之前做的是用直线y = mx + b代替根号X,我们这里要做一些不同的事情,但结果是非常相似的。我们将用泰勒级数展开微分方程但不是让所有项都趋于无穷,而是忽略所有高次项。这样我们就只保留0阶项和一阶项,或者说泰勒级数的一阶导数。
现在,其中涉及的数学知识比我在这个视频中要讲的更多,但我的目标是让你们了解如何用函数的导数来产生线性逼近。如果你用泰勒级数展开并移除项,你就会得到下面的函数。
看看这个。它与y = mx + b有惊人的相似之处。我们有偏移量,也就是函数的起点,它就是Hdot在运算点的值。然后加上函数的斜率它与状态变化有关乘以状态到工作点的距离。第一个加法处理了状态变化引起的变化,第二个加法处理了输入变化引起的变化。
但是,由于操作点处的函数的值为零,我们可以进一步简化这一点。现在我们可以解决部分衍生品。为了进一步简化结果,我们可以重新标记我们呼叫零。因此,例如,从罐的底部测量的高度,例如,我们可以从操作点测量它。这将h - hbar融为于h和v - vbar to to V.
我们留下的是我们的水箱系统在操作点4的线性方程。就像前面的例子一样,随着前一个例子,随着我们从这个操作点的偏移,这种线性模型将表现不像其非线性对应物。如果我们无法处理错误,那么我们将在新的操作点中第二次线性化。
当您有多个线性模型时,您可以为它们中的每个开发一个线性控制器,并将一个区域的控制增益传递给下一个区域。这就是增益调度背后的理念,如果你有兴趣了解更多,我在描述中已经链接了一个视频。这里还有一个水箱模型线性化例子和MathWorks页面的链接,可以学习更多关于Simulink模型线性化的知识,所以我希望你们也能看看。金宝app
我们在这里做的是雅可比线性化。我们通过观察系统的一阶导数建立了一个线性模型。这种类型的线性化要求函数在工作点是可微的。但也有其他的线性化方法,在下一集视频中我们将探讨这些方法,它们有哪些工具,以及如何理解它们背后的作用。
如果你不想错过下一个科技谈话视频,不要忘记订阅这个频道。此外,如果你想查看我的频道,控制系统讲座,我涵盖了更多的控制理论的主题。谢谢收看。下次见。
您还可以从以下列表中选择一个网站:
选择中国网站(以中文或英文)以获取最佳网站性能。其他MathWorks国家网站未优化您的位置。