来自系列:MATLAB中常微分方程的求解
克利夫·莫勒
将包含高阶导数的常微分方程改写为只包含一阶导数的向量系统。以经典范德波尔非线性振荡器为例。随着参数的增加,VdP方程变得僵硬。
许多数学模型涉及高阶衍生物。但MATLAB ode求解器仅使用一阶常微分方程的系统。所以我们必须重写模型,只是涉及一阶衍生品。让我们看看如何用一个非常简单的模型,谐波振荡器做到这一点。
x双重Prime Plus X等于0.这涉及二阶衍生物。所以要将其作为一阶系统写入,我们介绍了矢量y。这是一个带有两个组件,x和x的衍生的向量。
我们只是改变符号,让y有两个分量,x和x素数。那么y的导数就是x和x双素数的向量。所以微分方程现在变成y2素数加上y1等于零。你知道我们是怎么改写这个微分方程的吗。那么y2素数是在玩x双素数游戏?
一旦你做到了这一点,其他一切都很容易。向量系统现在是y1,y2素数是y2减去y1。第一个组件表示y1素数是y2。也就是说,第一分量的导数是第二分量。这是微分方程本身。Y2素数是负y1是实际的谐振子微分方程。
当我们将此写入Matlab的自主功能时,这是自主函数。f是T和Y的自主功能,不依赖于T.首先,现在是一个矢量图,列向量。F的第一个组件是Y2。第二个组件是-y1。
这里的第一个组件只是一个符号的问题。所有内容都在第二组件中,其表示微分方程。
现在对于一些初始条件——假设初始条件是0的x是0,0的x素数是1。对于向量y,也就是y1/0,y的第一个分量是0。第二个分量是1。
或者在向量项中,初始向量是0,1。这意味着它们的解是正弦t和余弦t。当我们在MATLAB中编写初始条件时,它是列向量0,1。
让我们提出matlab命令窗口。这是微分方程。y1 prime是y2。和y2 prime是-y1。这是谐波振荡器。
我们将从0集成到2PI,因为它们是Trig函数。而且我将以26岁的步骤要求输出,这对应于机场跑道等每10度。
我将需要一个初始条件。Y0不是0.我需要一个柱矢量,0,1,两个组件。我将使用ode45,如果我用没有输出参数称之为,则差分方程的ode45,t跨越时间间隔,y0初始条件。
如果我不带输出参数调用ODE45,它就会自动绘制解决方案。这里我们得到了cos t从1开始,sin t从0开始的图像。
现在,如果我返回到命令窗口,要求捕获t和y中的输出,然后得到输出向量。37步,向量t和两个分量y,这两列包含正弦和余弦。现在我可以在相平面上绘制它们。
阴谋对付y2。如果我调整轴,我会得到一个很好的图,每10度有一个小圆圈,就像我说的,就像机场的跑道一样。
1927年荷兰电气工程师引进了范德波尔振荡器,用于模拟真空管电路中的振荡。它有一个非线性阻尼项。自那以后,它就被用于各种领域的现象建模,包括地质学和神经学。
它表现出混沌行为。我们对数值分析感兴趣,因为随着参数μ的增加,问题变得越来越僵硬。为了将其作为一阶系统写入MATLAB ODE解算器,我们引入了向量y,其中包含x和x素数。
所以y素数是x素数,x双素数。然后写出微分方程,使得y素的第一个分量是y2。然后微分方程写在y的第二个分量上。
这是非线性阻尼项减去y1。当μ为0时,这将成为谐振子。这里是匿名函数。
让我们用van der Pol振荡器运行一些实验。首先,我必须定义mu的值。我会选择一个适度的mu。MU等于100.现在使用mu设置,我可以定义匿名函数。
它涉及mu的价值。这里是F的第二个组件中的范德波极方程。我将收集关于颂歌求解器的努力工作的统计数据。为此,我将使用颂歌,并告诉它我想打开统计数据。
我需要一个初始条件。现在我将在这个问题上运行ode45。而且我只是指定t的起始值,以及t的最终值。Ode45将选择自己的时间步骤。而且我知道T终止等于460,它将整合到解决方案的两个时期。
现在我们可以看一下。它正在采取很多步骤。它开始放慢减速,因为它需要越来越多的步骤。现在这开始变得痛苦,因为它陷入僵处。
我会把相机关掉一段时间,这样你就不用看所有这些步骤了。我们正努力达到460。当我们接近尾声时,我会把它打开。
好的,嗯,相机已经过了三分钟。你可以看到我们已经走了多远。我们无处可去。所以我将在这里按停止按钮。我们将返回命令窗口。
哦,所以我们没有到达这里。让我回到时间间隔内,并在此处尝试这个值。看看它是如何工作的。所以这仍然需要很多步骤。
但我们将能够 - 这将多约一段时间。我们实际上会在这里结束。
我会留下相机直到我们完成。好的,所以花了一分钟。它需要近15,000步。所以让我们用僵硬的求解器运行它。
那里。所以花了一半,只有500步。所以这里有一个适度的刚度的例子。因此,让我们使用僵硬的求解器来检查van der Pol等式。让我们捕获输出并绘制它。
因为这个情节不是很有趣。我想把它绘制几个不同的方式。并再次,我想回到 - 捕获几个时期。
让我们绘制一个当前组件作为时间的函数。就在这里。这是范德波尔方程。
你们可以看到它有一个初始瞬态,然后它进入这个周期性振荡,这里有这些非常陡峭的尖峰。即使是这个僵硬的解算器也在努力应对这些快速变化。我们这里有很多要点,因为它选择了步长。
现在,让我们回到命令行,做一个相平面图。这是带有阻尼的振荡器的相平面图。它不在圆附近,如果是0就会在圆附近。
这就是范德堡尔振荡器的特性。
您还可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家/地区网站未针对您所在地的访问进行优化。