Seminar Simulation stochastischer Modelle

7. Zwei Dimensionen in R (Film)

Das Programm von Seite 6 erweitert um Bildausgabe. Die fertigen Bilder wurden weiter unten zu einem Film zusammengefügt.

Quellcode in R


# Funktion für Brownsche Bewegung in 2D
# Kurven werden gleichzeitig gezeichnet

browns <- function(anzahl,schritte,p,alte,punkte) {
w<-0:359

# Array für aktuelle Position erzeugen
posx<-rep(0,schritte+1)
posy<-rep(0,schritte+1)

# Speicherarray erzeugen für die Zwischenwerte aller Grafen
lposx<-matrix(0,anzahl+1,schritte+1)
lposy<-matrix(0,anzahl+1,schritte+1)


# Schleife für die Schritte
zz<-1
while (zz<=schritte) {
   nn<-1
   
   # Dateiname
   f<-sprintf("brown 2D %i.jpg",as.integer(zz))
   print(f)
   
   # Grafik öffnen
   jpeg(file=f)
   
   # Legende Zeichnen
   plot(-p:p, -p:p, cex=.1, type="n",main="Brownsche Bewegung 2D",xlab="x",ylab="y")

   # Schleife für die einzelnen Grafen
   while (nn<=anzahl) {
   
      # einen Winkel auswählen (gleichverteilt)
      n<-sample(w,1)

      # Entfernung nach Gauss Normalverteilt auswählen
      # dadurch wird Epsilon automatisch quadratisch skaliert
      # alternativ Entfernung in Epsilon und Zeit in Epsilon exponential
      e<-rnorm(1,0,1)

      # Winkel umrechnen in radial
      m<-n[1]/180.0*pi

      # Neue Position ermitteln
      nposx<-posx[nn]+sin(m)*e
      nposy<-posy[nn]+cos(m)*e

      # alte Linien malen
      if (alte>0)
         {
         lposx[nn,zz+1]<-nposx
         lposy[nn,zz+1]<-nposy
         xx<-1
         while (xx<zz)
            {
            # debugausgabe der Koordinaten
            # t<-sprintf("%f %f %f %f ",lposx[nn,xx],lposx[nn,xx+1],lposy[nn,xx],lposy[nn,xx+1])
            # print(t)
            lines(c(lposx[nn,xx],lposx[nn,xx+1]),c(lposy[nn,xx],lposy[nn,xx+1]),col="red")
            xx<-xx+1
            }
         }

      # Neue Linie zeichnen
      if (punkte>0)
         {
         points(c(nposx),c(nposy))
         }
      else
         {
         lines(c(posx[nn],nposx),c(posy[nn],nposy),col="blue")
         }
      # Position für nächsten durchlauf speichern
      posx[nn]<-nposx
      posy[nn]<-nposy
      
      # Ende innere Schleife
      nn<-nn+1
      }

   # Grafik schliessen
   dev.off()
   
   # Ende äußere Schleife
   zz<-zz+1
   }
   # ende
}


print ("browns(anzahl,schritte,skalierung,altelinien,punkte)")




Links
MBS REAL studio PDF Plugins - Nachhilfe in Andernach

In Erinnerung and den lächelnden Mac Plus, den man beim Start von Mac OS 1 bis X.1 sieht...