Документация Engee
Notebook

Параметрический анализ и динамическая визуализация аттрактора Лоренца

Введение

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

Система Лоренца описывается следующей системой нелинейных дифференциальных уравнений:

где — число Прандтля, — нормированное число Рэлея, — геометрический параметр, характеризующий отношение горизонтального и вертикального масштабов конвективной ячейки.

Проведём исследование в двух направлениях:

  1. Кинематический анализ — визуализация процесса формирования аттрактора путём последовательного построения фазовой траектории с одновременным вращением точки наблюдения, что позволяет рассмотреть структуру аттрактора под различными ракурсами.

  2. Параметрический анализ — изучение трансформации фазового портрета при вариации каждого из управляющих параметров по гармоническому закону. Параметры изменяются по следующим законам:

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

Определим шаг интегрирования , который будет использоваться во всех численных экспериментах. Значение выбрано из условия обеспечения устойчивости явного метода Эйлера и достаточной точности воспроизведения фазовой траектории.

In [ ]:
Δt = 0.01

Кинематический анализ: построение аттрактора в эволюционном представлении

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

Параметры системы зафиксированы в классической хаотической конфигурации:

Начальные условия выбраны вблизи начала координат:

Интегрирование выполняется явным методом Эйлера первого порядка с шагом на интервале условных единиц времени ($N = 10\text{⁴} $итераций). Для анимации используется прореживание с шагом 100 точек, что соответствует отображению каждого сотого состояния системы. Камера медленно вращается вокруг вертикальной оси по закону:

где — номер отображаемой точки.

In [ ]:
σ = 10.0
β = 8.0/3.0
ρ = 28.0
dt = 0.01
N = 10000

x = zeros(N)
y = zeros(N)
z = zeros(N)
x[1] = 1.0
y[1] = 1.0
z[1] = 1.0

for i in 1:N-1
    dx = σ * (y[i] - x[i])
    dy = x[i] * (ρ - z[i]) - y[i]
    dz = x[i] * y[i] - β * z[i]
    x[i+1] = x[i] + dt*dx
    y[i+1] = y[i] + dt*dy
    z[i+1] = z[i] + dt*dz
end

ш = 100
и = 1:ш:N
anim = @animate for i in и
    plot3d(
        x[1:i], y[1:i], z[1:i],
        linecolor = :magenta,
        linewidth = 0.5,
        label = "",
        xlabel = "X", ylabel = "Y", zlabel = "Z",
        xlims = (-25, 25), ylims = (-35, 35), zlims = (0, 55),
        aspect_ratio = :equal,
        background_color = :white,
        camera = (45 + 0.01*i, 25), 
        #dpi = 100,
        size = (640, 480),
        title = "Аттрактор Лоренца",
        titlecolor = :black
    )
    
    scatter3d!(
        [x[i]], [y[i]], [z[i]],
        color = RGB(1.0, 0.3, 0.2),
        markersize = 1,
        label = ""
    )
end

gif(anim, "Lorenz_Attractor_1.gif", fps = 15)
Lorenz_Attractor_1.gif

Параметрический анализ: влияние управляющих параметров на структуру аттрактора

Исследуем реакцию системы на гармоническое изменение каждого из трёх управляющих параметров. Для каждой анимации выполняется отдельное численное интегрирование системы при фиксированных значениях двух параметров и изменяющемся третьем. Количество итераций для каждого кадра составляет

In [ ]:
N = 4000

Динамический параметр (число Прандтля).

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

Зададим закон изменения параметра:

Остальные параметры фиксированы:

In [ ]:
frames = 1:150
σ_values = zeros(length(frames))
β_values = zeros(length(frames))
ρ_values = zeros(length(frames))

for (idx, f) in enumerate(frames)
    σ_values[idx] =  10*sin(f*0.05)
    β_values[idx] = 8/3
    ρ_values[idx] = 27
end

anim = @animate for (idx, f) in enumerate(frames)
    σ = σ_values[idx]
    β = β_values[idx]
    ρ = ρ_values[idx]
    x = zeros(N)
    y = zeros(N)
    z = zeros(N)
    x[1] = 1.0
    y[1] = 1.0
    z[1] = 1.0
    
    for n in 1:N-1
        dx = σ * (y[n] - x[n])
        dy = x[n] * (ρ - z[n]) - y[n]
        dz = x[n] * y[n] - β * z[n]
        x[n+1] = x[n] + Δt * dx
        y[n+1] = y[n] + Δt * dy
        z[n+1] = z[n] + Δt * dz
    end
    
    plot3d(
        x, y, z,
        linecolor = RGB(0, 0, 1),
        linewidth = 1.2,
        label = "",
        xlabel = "X", ylabel = "Y", zlabel = "Z",
        xlims = (-30, 30),
        ylims = (-30, 30),
        zlims = (0, 60),
        aspect_ratio = :equal,
        title = "Динамический аттрактор Лоренца\nσ=$(round(σ, digits=2))  ρ=$(round(ρ, digits=2))  β=$(round(β, digits=2))",
        titlecolor = :black,
        background_color = :white,
        grid = false,
        legend = false, 
        size = (640, 480)
    )
end

gif(anim, "Lorenz_Attractor_2.gif", fps = 15)
Lorenz_Attractor_2.gif

Динамический параметр (геометрический параметр).

Параметр характеризует отношение характерных горизонтального и вертикального масштабов конвективной ячейки. Изменение приводит к деформации фазового портрета: при малых значениях аттрактор сжимается вдоль оси , при больших — вытягивается, а хаотический режим может разрушаться.

Зададим закон изменения параметра:

Остальные параметры фиксированы:

In [ ]:
frames = 1:150

σ_values = zeros(length(frames))
β_values = zeros(length(frames))
ρ_values = zeros(length(frames))

for (idx, f) in enumerate(frames)
    σ_values[idx] =  10
    β_values[idx] = 8/3*sin(f*0.015)
    ρ_values[idx] = 27
end

anim = @animate for (idx, f) in enumerate(frames)
    σ = σ_values[idx]
    β = β_values[idx]
    ρ = ρ_values[idx]
    
    x = zeros(N)
    y = zeros(N)
    z = zeros(N)
    x[1] = 1.0
    y[1] = 1.0
    z[1] = 1.0
    
    for n in 1:N-1
        dx = σ * (y[n] - x[n])
        dy = x[n] * (ρ - z[n]) - y[n]
        dz = x[n] * y[n] - β * z[n]
        x[n+1] = x[n] + Δt * dx
        y[n+1] = y[n] + Δt * dy
        z[n+1] = z[n] + Δt * dz
    end
    
    plot3d(
        x, y, z,
        linecolor = RGB(1, 0, 1),
        linewidth = 1.2,
        label = "",
        xlabel = "X", ylabel = "Y", zlabel = "Z",
        xlims = (-30, 30),
        ylims = (-30, 30),
        zlims = (0, 60),
        aspect_ratio = :equal,
        title = "Динамический аттрактор Лоренца\nσ=$(round(σ, digits=2))  ρ=$(round(ρ, digits=2))  β=$(round(β, digits=2))",
        titlecolor = :black,
        background_color = :white,
        grid = false,
        legend = false, 
        size = (640, 480)
    )
end

gif(anim, "Lorenz_Attractor_3.gif", fps = 15)
Lorenz_Attractor_3.gif

Динамический параметр (число Рэлея).

Параметр ρ характеризует интенсивность подогрева снизу и является основным бифуркационным параметром. При система имеет единственную устойчивую особую точку, соответствующую состоянию теплопроводности без конвекции. С ростом происходит последовательность бифуркаций: потеря устойчивости стационарного решения, рождение предельного цикла и, наконец, переход к хаотическому режиму.

Зададим закон изменения параметра:

Остальные параметры фиксированы:

In [ ]:
frames = 1:150

σ_values = zeros(length(frames))
β_values = zeros(length(frames))
ρ_values = zeros(length(frames))

for (idx, f) in enumerate(frames)
    σ_values[idx] =  10
    β_values[idx] = 8/3
    ρ_values[idx] = 25*sin(f*0.01)
end

anim = @animate for (idx, f) in enumerate(frames)
    σ = σ_values[idx]
    β = β_values[idx]
    ρ = ρ_values[idx]
    
    x = zeros(N)
    y = zeros(N)
    z = zeros(N)
    x[1] = 1.0
    y[1] = 1.0
    z[1] = 1.0
    
    for n in 1:N-1
        dx = σ * (y[n] - x[n])
        dy = x[n] * (ρ - z[n]) - y[n]
        dz = x[n] * y[n] - β * z[n]
        x[n+1] = x[n] + Δt * dx
        y[n+1] = y[n] + Δt * dy
        z[n+1] = z[n] + Δt * dz
    end
    
    plot3d(
        x, y, z,
        linecolor = RGB(0, 1, 0),
        linewidth = 1.2,
        label = "",
        xlabel = "X", ylabel = "Y", zlabel = "Z",
        xlims = (-30, 30),
        ylims = (-30, 30),
        zlims = (0, 60),
        aspect_ratio = :equal,
        title = "Динамический аттрактор Лоренца\nσ=$(round(σ, digits=2))  ρ=$(round(ρ, digits=2))  β=$(round(β, digits=2))",
        titlecolor = :black,
        background_color = :white,
        grid = false,
        legend = false,
        size = (640, 480)
    )
end

gif(anim, "Lorenz_Attractor_4.gif", fps = 15)
Lorenz_Attractor_4.gif

Совместная вариация всех управляющих параметров

Рассмотрим одновременное гармоническое изменение всех трёх управляющих параметров с различными частотами, амплитудами и фазами. Такой подход позволяет наблюдать сложную интерференцию параметрических воздействий и выявить области параметрического пространства, в которых система демонстрирует наиболее обширную динамику.

Зададим законы изменения параметров:

Обратите внимание, что параметр β модулируется по косинусоидальному закону, что вносит фазовый сдвиг π/2 относительно синусоидальных модуляций σ и ρ. Частоты модуляции также различаются, что создаёт несоизмеримые волновые периоды и обеспечивает плотное заполнение исследуемой области параметрического пространства.

In [ ]:
frames = 1:300

σ_values = zeros(length(frames))
β_values = zeros(length(frames))
ρ_values = zeros(length(frames))

colors = zeros(length(frames), 3)

for (idx, f) in enumerate(frames)
    σ_values[idx] = 10 + 5*sin(f*0.02)
    β_values[idx] = 8/3 + 0.5*cos(f*0.015)
    ρ_values[idx] = 20 + 15*sin(f*0.01)
    
    colors[idx, 1] = 0.2 + 0.8*abs(sin(f*0.02))
    colors[idx, 2] = 0.2 + 0.8*abs(sin(f*0.02 + 2π/3))
    colors[idx, 3] = 0.2 + 0.8*abs(sin(f*0.02 + 4π/3))
end

anim = @animate for (idx, f) in enumerate(frames)
    σ = σ_values[idx]
    β = β_values[idx]
    ρ = ρ_values[idx]
    
    x = zeros(N)
    y = zeros(N)
    z = zeros(N)
    x[1] = 1.0
    y[1] = 1.0
    z[1] = 1.0
    
    for n in 1:N-1
        dx = σ * (y[n] - x[n])
        dy = x[n] * (ρ - z[n]) - y[n]
        dz = x[n] * y[n] - β * z[n]
        x[n+1] = x[n] + Δt * dx
        y[n+1] = y[n] + Δt * dy
        z[n+1] = z[n] + Δt * dz
    end
    
    rgb_color = RGB(colors[idx, 1], colors[idx, 2], colors[idx, 3])
    
    plot3d(
        x, y, z,
        linecolor = rgb_color,
        linewidth = 1.2,
        label = "",
        xlabel = "X", ylabel = "Y", zlabel = "Z",
        xlims = (-30, 30),
        ylims = (-30, 30),
        zlims = (0, 60),
        aspect_ratio = :equal,
        title = "Динамический аттрактор Лоренца\nσ=$(round(σ, digits=2))  ρ=$(round(ρ, digits=2))  β=$(round(β, digits=2))",
        titlecolor = :black,
        background_color = :white,
        grid = false,
        legend = false,
        camera = (45 + f*0.5, 25), 
        size = (640, 480)
    )
end

gif(anim, "Lorenz_Attractor_5.gif", fps = 15)
Lorenz_Attractor_5.gif

Заключение

В данном примере мы выполнили параметрическое исследование системы Лоренца с применением динамической визуализации. Основные результаты:

  1. Кинематический анализ наглядно продемонстрировал процесс формирования странного аттрактора и его фрактальную структуру.

  2. Параметрический анализ выявил бифуркационные переходы при гармоническом изменении каждого из управляющих параметров и определил диапазоны существования хаотических режимов.

  3. Совместная вариация параметров показала сложную интерференцию воздействий в многомерном параметрическом пространстве.

Инженерные приложения полученных результатов охватывают следующие области:

  • Теплотехника и энергетика — оптимизация теплообменников и систем охлаждения на основе понимания конвективных неустойчивостей и перехода к турбулентности.

  • Лазерная техника — уравнения, эквивалентные системе Лоренца, описывают динамику одномодовых лазеров; параметрический анализ полезен при разработке источников излучения с заданными характеристиками.

  • Криптография и связь — свойство экспоненциальной чувствительности к параметрам используется при проектировании генераторов хаотических последовательностей для систем шифрования и скрытой передачи данных.

  • Химическое машиностроение — хаотические режимы перемешивания, аналогичные наблюдаемым в системе Лоренца, применяются для интенсификации массообмена в реакторах.

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