Фигуры Лиссажу
Моделирование фигур Лиссажу с помощью Genie-приложения
Введение
Фигуры Лиссажу представляют собой замкнутые траектории, которые возникают при сложении двух взаимно перпендикулярных гармонических волн. Впервые они были описаны французским физиком Жюлем Антуаном Лиссажу в 1855 году в ходе экспериментов по исследованию волновых процессов.
Математически данные кривые описываются параметрическими уравнениями:
где и — частоты, — фазовый сдвиг, и — амплитуды. В нашем примере .
Конфигурация фигуры определяется соотношением частот и разностью фаз . При рациональном отношении частот траектория оказывается замкнутой, принимая характерную форму — от отрезка прямой и эллипса до сложных многолепестковых структур. Данное свойство используется в измерительной технике для сравнения частот и фазовых сдвигов электрических сигналов.
Представленное приложение реализует вычислительную модель двухканального осциллографа, подключённого к двум генераторам гармонических сигналов. Изменяя параметры a, b и φ посредством интерактивных слайдеров, вы можете наблюдать трансформацию результирующей кривой в режиме реального времени, что позволяет проследить аналитическую зависимость формы траектории от входных параметров сигналов.
Скрипт приложения
Рассмотрим скрипт приложения lissajous.jl.
using GenieFramework, Stipple, PlotlyBase
@genietools
@app begin
@in a = 1.0
@in b = 1.0
@in φ = 0.0
@out график = PlotlyBase.Plot(PlotlyBase.scatter(x=[0], y=[0], line=PlotlyBase.attr(color="blue")))
@out layout = PlotlyBase.Layout(
title = "Фигуры Лиссажу",
xaxis = PlotlyBase.attr(title="x", showgrid=true),
yaxis = PlotlyBase.attr(title="y", showgrid=true),
width = 800,
height = 550)
@onchange a, b, φ begin
t = collect(-100.0:0.01:100.0)
new_plot = PlotlyBase.Plot(PlotlyBase.scatter(
x = sin.(a[] * t .+ φ[]),
y = sin.(b[] * t),
line = PlotlyBase.attr(color="blue", width=2),
mode = "lines",
name = "Фигуры Лиссажу"))
график = new_plot
end
end
function ui()
row([
column([
h6("x = sin({{a}}t + {{φ}})", style="margin-bottom: -10px"),
slider(0.0:0.1:9, :a, color="purple", style="margin-bottom: 20px; width: 100%;"),
h6("y = sin({{b}}t)", style="margin-bottom: -10px"),
slider(0.0:0.1:9, :b, color="orange", style="margin-bottom: 20px; width: 100%;"),
h6("φ = {{φ}}", style="margin-bottom: -10px"),
slider(-2π:0.01:2π, :φ, color="green", style="margin-bottom: 20px; width: 100%;"),
], style="width: 30%; padding: 20px;"),
column([
plotly(:график, layout=:layout)
], style="width: 70%; padding: 20px; background-color: #f9f9f9; border-radius: 10px;")
])
end
@page("/", ui)
Запуск приложения
Запустим приложение прямо внутри данного интерактивного скрипта.
genie_app = engee.genie.start("$(@__DIR__)/lissajous.jl")
display(MIME("text/html"), """<iframe src="$(string(genie_app.url))" width="1280" height="800" style="border: none;"></iframe>""";)
Это приложение — цифровая модель двух генераторов сигналов и осциллографа. Перемещая слайдеры, вы управляете параметрами входных сигналов:
- Частотой сигнала, подаваемого на вход X (горизонтальная развёртка).
- Частотой сигнала, подаваемого на вход Y (вертикальная развёртка).
- Фазовым сдвигом между этими сигналами.
Наблюдайте, как изменение соотношения частот и разности фаз мгновенно преображает картинку на экране — от простой линии и окружности до замысловатых замкнутых кривых.
Для удобства вы можете открыть приложение в новой вкладке.
display("text/html", """<a href="$(string(genie_app.url))" target="_blank">Открыть в новой вкладке</a>""")
После завершения работы с приложением, закроем его.
engee.genie.stop("$(@__DIR__)/lissajous.jl");
Заключение
Данное приложение представляет собой цифровой двойник лабораторной установки с двумя генераторами сигналов и осциллографом. Виртуальные лабораторные работы такого типа доступны из любой точки мира, не требуют физического оборудования и обеспечивают мгновенную визуализацию результатов. Моделируя частоты и фазовые сдвиги, пользователь экспериментально изучает зависимость формы фигур Лиссажу от параметров сигналов. Приложение может служить учебным пособием по радиофизике и электротехнике, оно также будет полезно для изучения методов сравнения частот, а совокупность Engee и Genie открывает возможности для создания интерактивных образовательных материалов, дополняющих традиционную лабораторную базу.