范德波尔振荡器
在这个例子中,我们将展示如何在Engee中创建一个根据二阶范德波尔方程工作的动力学模型。
导言
范德波尔振荡器演示了[不是консервативной]的动力学(https://ru.wikipedia.org/wiki/Консервативные_силы )非线性衰减的系统。
这个系统可以用下面的等式来描述:
哪里 -坐标(例如,振荡器的位置), -阻尼系数。 该模型用于研究生物学和物理学中的各种过程,包括无线电工程和电子学。
我们将在Engee中使用画布上的块对该系统进行建模。 在文件中 van_der_pol_oscillator.engee 包含以下类型的模型:
它有两个独立的积分器负责计算信号。 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]:
让我们以原始形式运行模型并构建一个图表。:
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中的图形建模是一种方便的方法来实验系统的拓扑结构,使模型复杂化,或将其用作复杂演示的一部分。



