Čo sa stane v roku cca 2040 s našim slnečným cyklom? Ak obiehajú okolo seba 2 dynamá, vzniká toto s magnetickým cyklom:

Čo sa stane v roku cca 2040 s našim slnečným cyklom? Ak obiehajú okolo seba 2 dynamá, vzniká toto s magnetickým cyklom:

podľa ruských a španielskych vedcov nás okolo roku 2040 čaká ochladenie niektorých území planéty vďaka menšiemu slnečnému vyžarovaniu, vďaka AI si toto vieme nasimulovať doma na počítačoch:

umelecká predstava 2 dynamá generujú polia:

double dynamo planets sun

zdroj: https://spravy.pravda.sk/svet/clanok/775050-radikalna-zmena-v-rokoch-2030-az-2040-slnko-vstupi-do-cyklu-nizkej-magnetickej-aktivity-a-nastane-mini-doba-ladova/

zdá sa, že simulácie ukazujú, že v roku 2040 nás čaká minimum modelu oscilácie dvoch dynám a vyzerá to, ak sa simulácia zastaví asi takto: podobne ako bolo v roku Pána pred 400 rokmi:

double dynamo animation stopped

# double_dynamo_simulation.jl
# Jednoduchá simulácia "double dynamo" modelu v jazyku Julia.
# Model: dva Stuart–Landau oscilátory (komplexné amplitude z1, z2)
# ktoré reprezentujú dve paralelné magnetické dynama.
# Celkové magnetické pole sa berie ako reálna časť z1 + z2.
#
# Potrebné balíky: DifferentialEquations, Plots, FFTW (prípadne Pkg.add pre každé)
# Spustenie: v Julia REPL alebo skripte
import Pkg; Pkg.add.( ["DifferentialEquations", "Plots", "FFTW"] )
using DifferentialEquations
using Plots
using FFTW
using Statistics

# ---- parametrizácia ----
ω1 = 2π/11.0       # frekvencia 1 (príklad: ~11 rokov v relatívnych jednotkách)
ω2 = 2π/22.0       # frekvencia 2 (dlhší cyklus)
λ1 = 0.2           # lineárny rast pre z1 (pozitívna -> samostatný oscilátor)
λ2 = 0.15          # lineárny rast pre z2
c = 1.0            # nelineárne tlmenie (saturácia)
κ = 0.05           # vzájomné vyhladzovanie / coupling

# voliteľné: pridajte biely šum do rovníc pre náhodné fluktuácie
σ_noise = 0.0

# počiatočné stavy (komplexné) - malý náhodný rozptyl
z1_0 = 0.1 + 0.0im
z2_0 = 0.05 + 0.0im

# ODE: pre reprezentáciu do DifferentialEquations musíme rozložiť na reálnu a imaginárnu časť
function double_dynamo!(du,u,p,t)
    # u = [Re(z1), Im(z1), Re(z2), Im(z2)]
    x1, y1, x2, y2 = u
    z1 = complex(x1,y1)
    z2 = complex(x2,y2)

    # Stuart-Landau: dz/dt = (λ + iω - c*|z|^2) * z + κ*(z2 - z1)
    dz1 = (λ1 + im*ω1 - c*abs2(z1)) * z1 + κ*(z2 - z1)
    dz2 = (λ2 + im*ω2 - c*abs2(z2)) * z2 + κ*(z1 - z2)

    # ak chcete pridať náhodný šum (biely):
    if σ_noise > 0
        dz1 += σ_noise * (randn() + im*randn())
        dz2 += σ_noise * (randn() + im*randn())
    end

    du[1] = real(dz1)
    du[2] = imag(dz1)
    du[3] = real(dz2)
    du[4] = imag(dz2)
end

# časová os (jednotky môžu byť roky, mesiace, čokoľvek konzistentné)
tspan = (0.0, 500.0)

u0 = [real(z1_0), imag(z1_0), real(z2_0), imag(z2_0)]
prob = ODEProblem(double_dynamo!, u0, tspan)

# solver a kvantita krokov
sol = solve(prob, Tsit5(), saveat=0.1)

# rekonštrukcia časových priebehov
t = sol.t
x1 = sol[1,:]
y1 = sol[2,:]
x2 = sol[3,:]
y2 = sol[4,:]

z1_ts = x1 .+ im .* y1
z2_ts = x2 .+ im .* y2

# celkové magnetické pole (skutočné pozorovanie)
B_total = real(z1_ts .+ z2_ts)
B1 = real(z1_ts)
B2 = real(z2_ts)

# ---- animácia v reálnom čase ----
# jednoduchá animácia časového priebehu B_total
anim = @animate for i in 1:10:length(t)
    plot(t[1:i], B_total[1:i], xlabel="time", ylabel="B", title="Real-time double dynamo animation", legend=false)
end
gif(anim, "double_dynamo_animation2.gif", fps=15)

# ---- ploty ----
p1 = plot(t, B_total, label="B_total (z1+z2)", xlabel="time", ylabel="B (arb. units)", legend=:topright, title="Double dynamo - časový priebeh")
plot!(t, B1, label="B1")
plot!(t, B2, label="B2")

# spektrum (FFT) pre rýchly pohľad na dominantné frekvencie
N = length(B_total)
fs = 1.0 / (t[2]-t[1])
fftB = abs.(fft(B_total .- mean(B_total)))
freqs = (0:N-1) .* (fs/N)
# použíť len prvú polovicu (reálne signály)
h = plot(freqs[1:div(N,2)], fftB[1:div(N,2)], xlabel="frequency (1/time)", ylabel="amp", title="Spektrum B_total", legend=false)

# vykresliť okno dlhšieho časového rezu (pre lepšiu čitateľnosť súboru)
p2 = plot(t[1:2000], B_total[1:2000], xlabel="time", ylabel="B", title="Detail (prvé okno)")

# uloženie obrázkov
savefig(p1, "double_dynamo_timeseries.png")
savefig(h, "double_dynamo_spectrum.png")
savefig(p2, "double_dynamo_detail.png")

println("Hotovo: súbory uložené ako double_dynamo_timeseries.png, double_dynamo_spectrum.png, double_dynamo_detail.png")

# ---- poznámky k experimentovaniu ----
# - zmenou ω1, ω2 môžete nastaviť pomer periód (napr. 11 vs 22 rokov).
# - zmenou λ1, λ2 sa mení sila jednotlivých dynam.
# - κ ovplyvňuje mieru vzájomného prepojenia -> pri väčšom κ budú dynama synchronizovať.
# - pridaním šumu σ_noise > 0 dostanete náhodné preskoky a možnú prechodnú desynchronizáciu.
# - skúste sledovať fázu (angle(z)) a amplitúdu (abs(z)) pre hlbší vhľad.

zdroj kódu: chatgpt_com, bez úprav ^^^


Author: AarNoma

The first Slovak cyborg 1 system

Comments “Čo sa stane v roku cca 2040 s našim slnečným cyklom? Ak obiehajú okolo seba 2 dynamá, vzniká toto s magnetickým cyklom:”