范德波尔振荡器
这个例子展示了如何在Engee中对二阶范德波尔微分方程(VDP)进行建模。 在动力学中,振荡器是非保守的并且具有非线性衰减。 在高振幅时,发电机耗散能量。 在低振幅时,发电机产生能量。
振荡器由二阶微分方程给出:
哪里:
- x是相对于时间的位置。
- t-时间
- Mu-衰减。
VDP发生器用于生物和物理科学,包括电路.
接下来,让我们继续实现-我们将声明模型启动函数并连接必要的库。
In [ ]:
using Plots
function run_model(name_model)
Path = (@__DIR__) * "/" * name_model * ".engee"
if name_model in [m.name for m in engee.get_all_models()] # Проверка условия загрузки модели в ядро
model = engee.open( name_model ) # Открыть модель
model_output = engee.run( model, verbose=true ); # Запустить модель
else
model = engee.load( Path, force=true ) # Загрузить модель
model_output = engee.run( model, verbose=true ); # Запустить модель
engee.close( name_model, force=true ); # Закрыть модель
end
return model_output
end
Out[0]:
让我们运行一个模型,其中包含Mu值的多个选项。 接下来,在图中,您可以看到我们根据上面描述的公式制作的模型。
衰减系数等于一
让我们设置Mu并运行模型,然后分析聚合数据。
In [ ]:
Mu = 1;
run_model("vdp")
sleep(5)
collect(simout)
Out[0]:
In [ ]:
# Скорость
v = simout["vdp/Integrator.1"];
v = collect(v);
plot(v.time, v.value)
# Положение
p = simout["vdp/Integrator-1.1"];
p = collect(p);
plot!(p.time, p.value)
Out[0]:
从结果图中可以看出,在Mu=1时,VDP发生器具有非线性衰减。
衰减系数为零
让我们设置Mu并运行模型,然后分析聚合数据。
In [ ]:
Mu = 0;
run_model("vdp")
sleep(5)
collect(simout)
Out[0]:
In [ ]:
# Скорость
v = simout["vdp/Integrator.1"];
v = collect(v);
plot(v.time, v.value)
# Положение
p = simout["vdp/Integrator-1.1"];
p = collect(p);
plot!(p.time, p.value)
Out[0]:
分析该图,我们可以得出结论,在Mu=0时,VDP发生器没有衰减,能量守恒,微分方程本身采用以下形式:
结论
在这个例子中,我们对Engee中的二阶范德波尔微分方程进行了建模,并研究了它如何与衰减系数的不同值一起工作。

