Community Engee

Фигуры Лиссажу

Author
avatar-artpgchartpgch
Notebook

Моделирование фигур Лиссажу с помощью 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)

Запуск приложения

Запустим приложение прямо внутри данного интерактивного скрипта.

In [ ]:
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>""";)
image.png

Это приложение — цифровая модель двух генераторов сигналов и осциллографа. Перемещая слайдеры, вы управляете параметрами входных сигналов:

  • Частотой сигнала, подаваемого на вход X (горизонтальная развёртка).
  • Частотой сигнала, подаваемого на вход Y (вертикальная развёртка).
  • Фазовым сдвигом между этими сигналами.

Наблюдайте, как изменение соотношения частот и разности фаз мгновенно преображает картинку на экране — от простой линии и окружности до замысловатых замкнутых кривых.

Для удобства вы можете открыть приложение в новой вкладке.

In [ ]:
display("text/html", """<a href="$(string(genie_app.url))" target="_blank">Открыть в новой вкладке</a>""")

После завершения работы с приложением, закроем его.

In [ ]:
engee.genie.stop("$(@__DIR__)/lissajous.jl");

Заключение

Данное приложение представляет собой цифровой двойник лабораторной установки с двумя генераторами сигналов и осциллографом. Виртуальные лабораторные работы такого типа доступны из любой точки мира, не требуют физического оборудования и обеспечивают мгновенную визуализацию результатов. Моделируя частоты и фазовые сдвиги, пользователь экспериментально изучает зависимость формы фигур Лиссажу от параметров сигналов. Приложение может служить учебным пособием по радиофизике и электротехнике, оно также будет полезно для изучения методов сравнения частот, а совокупность Engee и Genie открывает возможности для создания интерактивных образовательных материалов, дополняющих традиционную лабораторную базу.