AnyMath 文档
Notebook

洛伦兹吸引子的参数分析和动态可视化

导言

在本例中,我们研究了控制参数对洛伦兹系统相位轨迹拓扑的影响。 与具有固定参数值的静态分析不同,这里使用动态可视化方法,这使得能够以连续的参数变化实时观察吸引子结构的演变。

洛伦兹系统由以下非线性微分方程组描述:

哪里 -Prandtl的号码, -归一化瑞利数, 是一个几何参数,表征对流单元的水平和垂直尺度的比率。

让我们从两个方向进行研究。:

  1. 运动学分析-通过顺序构建观察点同时旋转的相位轨迹来可视化吸引子形成过程,这使我们能够从不同角度查看吸引子的结构。

  2. 参数分析是研究当每个控制参数根据谐波定律变化时相位肖像的变换。 参数根据以下规律变化:

    begin\开始{对齐}
    \sigma(t)&=\sigma_0+A_\sigma\cdot\sin(\omega_\sigma\cdot t) \
    \beta(t)&=\beta_0+A_\beta\cdot\sin(\omega_\beta\cdot t) \
    \rho(t)&=\rho_0+A_\rho\cdot\sin(\omega_\rho\cdot t)
    \结束{对齐}$ $

    这种方法使得能够识别分叉过渡并评估系统对每个参数的变化的敏感性,以及当它们被联合调整时。

让我们定义集成步骤 ,这将在所有数值实验中使用。 该值是基于确保显式欧拉方法的稳定性和再现相位轨迹的足够精度的条件来选择的。

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

w=100
i=1:w:N
anim=@animate为我在和
    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

动态参数 (Prandtl的号码)。

参数 确定介质的运动粘度和热导率之间的关系。 由 液体速度方程中的耗散效应在热效应上占主导地位,导致混沌动力学的退化。 放大时 系统进入高度混乱模式。

设置参数变化规律:

其他参数是固定的:

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

动态参数 (瑞利号)。

参数p表征从下方加热的强度,是主要的分岔参数。 由 系统具有对应于没有对流的导热状态的单个稳定奇异点。 随着增长 出现一系列分叉:静止解的稳定性丧失,极限循环的诞生,最后,过渡到混乱状态。

设置参数变化规律:

其他参数是固定的:

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相对于正弦调制σ和p的相移。调制频率也不同,这产生了不可测量的波周期,并确保了参数空间研究区域的密集填充。

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. 参数的联合变异在多维参数空间中表现出复杂的效应干扰。

所获得结果的工程应用涵盖以下领域:

*热工程和动力工程-在了解对流不稳定性和向湍流过渡的基础上优化热交换器和冷却系统。

*激光技术-相当于洛伦兹系统的方程描述了单模激光器的动力学;参数分析在开发具有特定特性的辐射源时很有用。

*密码学和通信-参数的指数敏感性的属性用于加密和隐藏数据传输系统的混沌序列发生器的设计。

*化学工程-类似于洛伦兹系统中观察到的混沌混合模式用于强化反应器中的传质。

开发的动态可视化工具包可用于分析其他非线性系统,由此产生的非线性系统行为的图形表示可用于技术应用中的混沌管理任务。