Engee 文档
Notebook

范德波尔振荡器

在这个例子中,我们将展示如何在Engee中创建一个根据二阶范德波尔方程工作的动力学模型。

导言

范德波尔振荡器演示了[不是консервативной]的动力学(https://ru.wikipedia.org/wiki/Консервативные_силы )非线性衰减的系统。

这个系统可以用下面的等式来描述:

哪里 -坐标(例如,振荡器的位置), -阻尼系数。 该模型用于研究生物学和物理学中的各种过程,包括无线电工程和电子学。

我们将在Engee中使用画布上的块对该系统进行建模。 在文件中 van_der_pol_oscillator.engee 包含以下类型的模型:

image.png

它有两个独立的积分器负责计算信号。 x1 (坐标)和 x2 (速度)。

以μ=1开始模型

如果您使用参数运行此模型 然后我们将看到具有非线性衰减的自振荡操作模式。 加载模型:

In [ ]:
if "van_der_pol_oscillator" in [m.name for m in engee.get_all_models()]
    m = engee.open( "van_der_pol_oscillator" );
else
    m = engee.load( "/user/start/examples/edu/van_der_pol_oscillator/van_der_pol_oscillator.engee" );
end
Out[0]:
"Model(van_der_pol_oscillator)"

让我们以原始形式运行模型并构建一个图表。:

In [ ]:
data = engee.run( m );

plot( data["x1"].value, data["x2"].value )
Out[0]:

我们可以选择不同的起点,改变每个积分器的初始值,但系统总会来到一个极限循环。

可以分别为每个信号构造图形。

In [ ]:
plot( data["x1"].time, data["x1"].value, label="x1" )
plot!( data["x2"].time, data["x2"].value, label="x2" )
Out[0]:

以μ=0开始模型

在这种模式下,系统的方程被简化为常规谐振子的方程。:

让我们设置系数 设置为零并运行模型。

In [ ]:
engee.set_param!( "van_der_pol_oscillator/Mu", "Gain"=>0 )

data = engee.run( m );
data = engee.run( m );

using Plots
plot( data["x1"].value, data["x2"].value )
Out[0]:

让我们为这个系统构建另一个图表。:

In [ ]:
plot( data["x1"].time, data["x1"].value, label="x1" )
plot!( data["x2"].time, data["x2"].value, label="x2" )
Out[0]:

结论

我们已经看到Engee中的图形建模是一种方便的方法来实验系统的拓扑结构,使模型复杂化,或将其用作复杂演示的一部分。

示例中使用的块