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