Динамический аттрактор Лоренца
Параметрический анализ и динамическая визуализация аттрактора Лоренца
Введение
В данном примере мы исследуем влияние управляющих параметров на топологию фазовых траекторий системы Лоренца. В отличие от статического анализа при фиксированных значениях параметров, здесь применяется метод динамической визуализации, позволяющий наблюдать эволюцию структуры аттрактора в реальном времени при непрерывном изменении параметров.
Система Лоренца описывается следующей системой нелинейных дифференциальных уравнений:
где — число Прандтля, — нормированное число Рэлея, — геометрический параметр, характеризующий отношение горизонтального и вертикального масштабов конвективной ячейки.
Проведём исследование в двух направлениях:
-
Кинематический анализ — визуализация процесса формирования аттрактора путём последовательного построения фазовой траектории с одновременным вращением точки наблюдения, что позволяет рассмотреть структуру аттрактора под различными ракурсами.
-
Параметрический анализ — изучение трансформации фазового портрета при вариации каждого из управляющих параметров по гармоническому закону. Параметры изменяются по следующим законам:
Такой подход позволяет идентифицировать бифуркационные переходы и оценить чувствительность системы к изменению каждого из параметров в отдельности, а также при их совместном согласованном изменении.
Определим шаг интегрирования , который будет использоваться во всех численных экспериментах. Значение выбрано из условия обеспечения устойчивости явного метода Эйлера и достаточной точности воспроизведения фазовой траектории.
Δt = 0.01
Кинематический анализ: построение аттрактора в эволюционном представлении
Создадим анимацию, демонстрирующую эволюцию фазовой траектории системы Лоренца во времени. В отличие от статического представления полного аттрактора, здесь траектория отображается последовательно — точка за точкой, что позволяет наблюдать динамику формирования странного аттрактора.
Параметры системы зафиксированы в классической хаотической конфигурации:
Начальные условия выбраны вблизи начала координат:
Интегрирование выполняется явным методом Эйлера первого порядка с шагом на интервале условных единиц времени ($N = 10\text{⁴} $итераций). Для анимации используется прореживание с шагом 100 точек, что соответствует отображению каждого сотого состояния системы. Камера медленно вращается вокруг вертикальной оси по закону:
где — номер отображаемой точки.
σ = 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)

Параметрический анализ: влияние управляющих параметров на структуру аттрактора
Исследуем реакцию системы на гармоническое изменение каждого из трёх управляющих параметров. Для каждой анимации выполняется отдельное численное интегрирование системы при фиксированных значениях двух параметров и изменяющемся третьем. Количество итераций для каждого кадра составляет
N = 4000
Динамический параметр (число Прандтля).
Параметр определяет соотношение между кинематической вязкостью и теплопроводностью среды. При диссипативные эффекты в уравнении для скорости движения жидкости доминируют над тепловыми, что приводит к вырождению хаотической динамики. При увеличении система переходит в режим развитой хаотичности.
Зададим закон изменения параметра:
Остальные параметры фиксированы:
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)

Динамический параметр (геометрический параметр).
Параметр характеризует отношение характерных горизонтального и вертикального масштабов конвективной ячейки. Изменение приводит к деформации фазового портрета: при малых значениях аттрактор сжимается вдоль оси , при больших — вытягивается, а хаотический режим может разрушаться.
Зададим закон изменения параметра:
Остальные параметры фиксированы:
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)

Динамический параметр (число Рэлея).
Параметр ρ характеризует интенсивность подогрева снизу и является основным бифуркационным параметром. При система имеет единственную устойчивую особую точку, соответствующую состоянию теплопроводности без конвекции. С ростом происходит последовательность бифуркаций: потеря устойчивости стационарного решения, рождение предельного цикла и, наконец, переход к хаотическому режиму.
Зададим закон изменения параметра:
Остальные параметры фиксированы:
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)

Совместная вариация всех управляющих параметров
Рассмотрим одновременное гармоническое изменение всех трёх управляющих параметров с различными частотами, амплитудами и фазами. Такой подход позволяет наблюдать сложную интерференцию параметрических воздействий и выявить области параметрического пространства, в которых система демонстрирует наиболее обширную динамику.
Зададим законы изменения параметров:
Обратите внимание, что параметр β модулируется по косинусоидальному закону, что вносит фазовый сдвиг π/2 относительно синусоидальных модуляций σ и ρ. Частоты модуляции также различаются, что создаёт несоизмеримые волновые периоды и обеспечивает плотное заполнение исследуемой области параметрического пространства.
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)

Заключение
В данном примере мы выполнили параметрическое исследование системы Лоренца с применением динамической визуализации. Основные результаты:
-
Кинематический анализ наглядно продемонстрировал процесс формирования странного аттрактора и его фрактальную структуру.
-
Параметрический анализ выявил бифуркационные переходы при гармоническом изменении каждого из управляющих параметров и определил диапазоны существования хаотических режимов.
-
Совместная вариация параметров показала сложную интерференцию воздействий в многомерном параметрическом пространстве.
Инженерные приложения полученных результатов охватывают следующие области:
-
Теплотехника и энергетика — оптимизация теплообменников и систем охлаждения на основе понимания конвективных неустойчивостей и перехода к турбулентности.
-
Лазерная техника — уравнения, эквивалентные системе Лоренца, описывают динамику одномодовых лазеров; параметрический анализ полезен при разработке источников излучения с заданными характеристиками.
-
Криптография и связь — свойство экспоненциальной чувствительности к параметрам используется при проектировании генераторов хаотических последовательностей для систем шифрования и скрытой передачи данных.
-
Химическое машиностроение — хаотические режимы перемешивания, аналогичные наблюдаемым в системе Лоренца, применяются для интенсификации массообмена в реакторах.
Разработанный инструментарий динамической визуализации может быть использован для анализа других нелинейных систем, а полученное графическое представление поведения нелинейной системы — для задач управления хаосом в технических приложениях.