Lorenz 96 modeli - Lorenz 96 model

Lorenz 96 modeli bir dinamik sistem tarafından formüle edildi Edward Lorenz 1996'da.[1] Aşağıdaki gibi tanımlanır. İçin :

nerede varsayılır ve ve . Buraya sistemin durumu ve bir zorlama sabitidir. kaotik davranışa neden olduğu bilinen ortak bir değerdir.

Yaygın olarak model problemi olarak kullanılır. veri asimilasyonu.[2]

Python simülasyonu

Simülasyonun ilk üç değişkeninin grafiği
itibaren mpl_toolkits.mplot3d ithalat Eksenler3Ditibaren scipy.integrate ithalat odeintithalat matplotlib.pyplot gibi pltithalat dizi gibi np# Bunlar sabitlerimizN = 5  # Değişken sayısıF = 8  # Zorlamadef L96(x, t):    "" "Sabit zorlamalı Lorenz 96 modeli" ""    # Vektör kurma    d = np.sıfırlar(N)    # Endeksler üzerinden döngüler (uç durumları ele alan işlemler ve Python alttan akış indeksleme ile)    için ben içinde Aralık(N):        d[ben] = (x[(ben + 1) % N] - x[ben - 2]) * x[ben - 1] - x[ben] + F    dönüş dx0 = F * np.olanlar(N)  # Başlangıç ​​durumu (denge)x0[0] += 0.01  # İlk değişkene küçük tedirginlik ekleyint = np.arange(0.0, 30.0, 0.01)x = odeint(L96, x0, t)# İlk üç değişkeni çizinincir = plt.şekil()balta = incir.gca(projeksiyon="3 boyutlu")balta.arsa(x[:, 0], x[:, 1], x[:, 2])balta.set_xlabel("$ x_1 $")balta.set_ylabel("x_2 $")balta.set_zlabel("$ x_3 $")plt.göstermek()

Julia simülasyonu

kullanma DynamicalSystems, PyPlotPyPlot.kullanma3D()# parametre ve başlangıç ​​koşullarıN = 5F = 8.0u₀ = F * olanlar(N)u₀[1] += 0.01 # küçük tedirginlik# Lorenz-96 modeli DynamicalSystems.jl'de önceden tanımlanmıştır:ds = Sistemler.lorenz96(N; F = F)# Aynı şekilde, hızlı bir sürümü açık bir şekilde tanımlamak için şunları yapın:yapı Lorenz96{N} son # Boyut türü için yapıişlevi (obj::Lorenz96{N})(dx, x, p, t) nerede {N}    F = p[1]    Açıkça # 3 uç durum (performans)    @inbounds dx[1] = (x[2] - x[N - 1]) * x[N] - x[1] + F    @inbounds dx[2] = (x[3] - x[N]) * x[1] - x[2] + F    @inbounds dx[N] = (x[1] - x[N - 2]) * x[N - 1] - x[N] + F    # sonra genel durum    için n içinde 3:(N - 1)      @inbounds dx[n] = (x[n + 1] - x[n - 2]) * x[n - 1] - x[n] + F    son    dönüş hiçbir şey değilsonlor96 = Lorenz96{N}() # yapı oluşturds = ContinuousDynamicalSystem(lor96, u₀, [F])# Ve şimdi bir yörünge geliştirindt = 0.01 # örnekleme zamanıTf = 30.0 # son sefertr = Yörünge(ds, Tf; dt = dt)# Ve 3 boyutlu arsa:x, y, z = sütunlar(tr)plot3D(x, y, z)

Referanslar

  1. ^ Lorenz, Edward (1996). "Tahmin edilebilirlik - Kısmen çözülmüş bir sorun" (PDF). Tahmin Edilebilirlik Semineri, Cilt. I, ECMWF.
  2. ^ Ott, Edward; et al. "Atmosferik Veri Asimilasyonu için Yerel Bir Topluluk Kalman Filtresi". arXiv:fizik / 0203058.