Lorenz seltsamer Attraktor

Winfried@sunkiddance.de
02.06.2013

Herleitung

Der Lorenz-AttraktorLorenz-Herleitung_1.gif wird durch ein System gewöhnlicher, nichtlinearer Differentialgleichungen definiert. Es beschreibt ein sehr vereinfachtes atmospärisches Konvektionsmodell: Von “unten” wird permanent Wärme zugeführt, von “oben” wird permanent gekühlt. Die Differentialgleichungen beschreiben nun die Positionsänderung Δ(x,y,z) eines Luftpunktes (dimensionslos) (x,y,z) in der Atmosphäre als Funktion der Zeit t. Je nach Temparaturdifferenz zwischen “unten” und “oben” und den gewählten Parametern entstehen unterschiedliche Luftwirbel oder auch stationäre Zustände. Der evolvierende Zustand des Systems ist sehr sensitiv bzgl. der Wahl des Anfangszustands: selbst eine winzige Abweichung in der Ausgangsposition kann zu gänzlich unterschiedlichem Systemverhalten führen. Das ist der berühmt-berüchtigte “Schmetterlingseffekt”.

Lorenz-Herleitung_2.gif

Die Parameter, die zu “chaotischem” Verhalten führen sind die oben gewählten Werte von σ, ρ und β.
Die Startposition im dreimdimensionalen Raum, im sogenannten Phasenraum, wird durch xLorenz, yLorenz und zLorenz definiert.

Visualisierung

Wie sieht das Ergebnis mit den genannten Parametern und der Startposition aus?

Lorenz-Herleitung_3.gif

Lorenz-Herleitung_4.gif

Jeder Punkt auf diesen Bahnen ist eine Lösung des Differentialgleichungssystems.

Schmetterlingseffekt

Wir variieren den Startpunkt  um Δ = 1/1000.

Lorenz-Herleitung_5.gif

Lorenz-Herleitung_6.gif

Lorenz-Herleitung_7.gif

Die Trajektorien sind klar verändert, wenn auch die prinzipielle Struktur erhalten bleibt.

Daten mit R berechnet

Hier ist der Code, der den Lorenz-Attraktor mit R berechnet. Der Code benötigt das R-Paket “deSolve”. Der Code dieses Pakets ist der selbe, der in Los Alamos bei der Entwicklung der Atombombe beim Manhattan-Projekt verwendet wurde. Irgendwie gruselig...

Lorenz<-function(t, state, parameters)
    {
        with(as.list(c(state, parameters)),
            {
# rate of change
                dX <- lorenz.sigma*(lorenz.Y-lorenz.X)
                dY <- lorenz.X*(lorenz.rho-lorenz.Z)-lorenz.Y
                dZ <- lorenz.X*lorenz.Y-lorenz.beta*lorenz.Z

# return the rate of change
    list(c(dX, dY, dZ))

            }
            ) # end with(as.list...
    }

## main
require(deSolve)
lorenz.parameters <- c(lorenz.sigma = 10, lorenz.rho =28, lorenz.beta = 8/3)
lorenz.state <- c(lorenz.X = 3, lorenz.Y = 15, lorenz.Z =1)

lorenz.times <-seq(0,100,by=0.01)
lorenz.time.elapsed <- system.time(lorenz.out <- as.data.frame(ode(y=lorenz.state,times=lorenz.times,func=Lorenz,
                       parms=lorenz.parameters, method = "rk4")))
# write file for display with gnuplot                
lorenz.xyz <- data.frame(lorenz.out$lorenz.X, lorenz.out$lorenz.Y, lorenz.out$lorenz.Z)
names(lorenz.out) <- (c("t", "X", "Y", "Z"))
write.table(lorenz.out, file = "c:\\lorenz.out", row.names = F, col.names = F, sep =",")
cat("Time elapsed:", lorenz.time.elapsed, "\n")

Wir lesen die Daten ein und wir visualisieren das Ergebnis.

Lorenz-Herleitung_8.gif

Lorenz-Herleitung_9.gif

Lorenz-Herleitung_10.gif

Lorenz-Herleitung_11.gif

Lorenz-Herleitung_12.gif

Anmerkungen

    1    Die Angaben entstammen alle dem Wikipedia-Artikel zum Lorenz-Attraktor oder einer dort verlinkten Quelle.

Spikey Created with Wolfram Mathematica 9.0

Winfried@sunkiddance.de (PGP-Schlüssel)

Home

Impressum

Letzte Änderung: 05.06.2013