在 Simulink 中对微分方程建模
Modeling Differential Equations in Simulink
一段时间以来,我一直在尝试构建 Simulink 模型,但我不确定它是否正确,所以我需要一些确认。我得到的方程式是:
x1' = x1 - x1*x2
x2' = -x2 + 2*x1*x2
有人告诉我积分器的初始条件是(我假设每个值都是针对每个单独的积分器的):
(.5, .5)
(1, .5)
(2, 2)
(.5, 1)
(1, 1)
总共 5 个图表并使用 XY 绘图器输出。我不知道它应该是什么样子,但添加到此模型的任何提示或提示都会非常有帮助。通常我用某种输入处理微分方程,但是从方程中我不知道该怎么做。
积分器使用 (1,1) 的初始条件绘图
这里真的没什么好回答的。根据您的方程式,Simulink 框图是正确的。
如果您想确认您的 Simulink 模型是否正确,请尝试通过一些计算来验证它 "by hand"。
x1' = x1 - x1 * x2
x2' = -x2 + 2 * x1 * x2
对于 (1,1)
x1' = 1 - 1 * 1 = 0
x2' = -1 + 2 * 1 * 1 = 1
所以,从(1,1)开始,x1的变化方向是0,x2的变化方向是1。现在,采取相对较小的步长 (0.1 * x'):
x1(0.1) = 1
x2(0.1) = 1.1
x1' = 1 - 1 * 1.1 = -0.1
x2' = -1.1 + 2 * 1.1 * 1 = 1.1
因此,x1 值在缓慢减小,而 x2 值在快速增加,所以在一开始,您应该有一个向上和向左的曲线。
x1(0.2) = 1-0.1*0.1 = 0.99
x2(0.2) = 1.1 + 0.1*1.1 = 1.21
再走几步,看看您正朝着哪个方向前进。它看起来像 Simulink 图吗? (当然,我建议你用MATLAB,而不是纸笔,因为纸笔很麻烦。
此外,将手算与您绘图中的其他点进行比较,例如:
勾选(0.5,2)
。你能看出你的情节中这条线的走向吗?水平向左(即 y 方向的导数为零,x 方向的导数为负。手工得到:x1' = -0.5
和 x2' = 0
。它是正确的!=)当然,结果你在手工计算时得到的结果有点偏差,因为步长很大。
无论如何:你的模型是正确的!
一段时间以来,我一直在尝试构建 Simulink 模型,但我不确定它是否正确,所以我需要一些确认。我得到的方程式是:
x1' = x1 - x1*x2
x2' = -x2 + 2*x1*x2
有人告诉我积分器的初始条件是(我假设每个值都是针对每个单独的积分器的):
(.5, .5)
(1, .5)
(2, 2)
(.5, 1)
(1, 1)
总共 5 个图表并使用 XY 绘图器输出。我不知道它应该是什么样子,但添加到此模型的任何提示或提示都会非常有帮助。通常我用某种输入处理微分方程,但是从方程中我不知道该怎么做。
积分器使用 (1,1) 的初始条件绘图
这里真的没什么好回答的。根据您的方程式,Simulink 框图是正确的。
如果您想确认您的 Simulink 模型是否正确,请尝试通过一些计算来验证它 "by hand"。
x1' = x1 - x1 * x2
x2' = -x2 + 2 * x1 * x2
对于 (1,1)
x1' = 1 - 1 * 1 = 0
x2' = -1 + 2 * 1 * 1 = 1
所以,从(1,1)开始,x1的变化方向是0,x2的变化方向是1。现在,采取相对较小的步长 (0.1 * x'):
x1(0.1) = 1
x2(0.1) = 1.1
x1' = 1 - 1 * 1.1 = -0.1
x2' = -1.1 + 2 * 1.1 * 1 = 1.1
因此,x1 值在缓慢减小,而 x2 值在快速增加,所以在一开始,您应该有一个向上和向左的曲线。
x1(0.2) = 1-0.1*0.1 = 0.99
x2(0.2) = 1.1 + 0.1*1.1 = 1.21
再走几步,看看您正朝着哪个方向前进。它看起来像 Simulink 图吗? (当然,我建议你用MATLAB,而不是纸笔,因为纸笔很麻烦。
此外,将手算与您绘图中的其他点进行比较,例如:
勾选(0.5,2)
。你能看出你的情节中这条线的走向吗?水平向左(即 y 方向的导数为零,x 方向的导数为负。手工得到:x1' = -0.5
和 x2' = 0
。它是正确的!=)当然,结果你在手工计算时得到的结果有点偏差,因为步长很大。
无论如何:你的模型是正确的!