Seminar Simulation stochastischer Modelle
6. Zwei Dimensionen in R (Parallelverarbeitung)
Dieses Programm ist das gleiche wie auf Seite 4, aber alle Pfade werden parallel gezeichnet, so dass man beim Wachsen zusehen kann.
Quellcode in R
# Funktion für Brownsche Bewegung in 2D
# Kurven werden gleichzeitig gezeichnet
browns <- function(anzahl,schritte,p,zeit) {
w<-0:359
# Legende Zeichnen
plot(-p:p, -p:p, cex=.1, type="n",main="Brownsche Bewegung 2D",xlab="x",ylab="y")
# Array für aktuelle Position erzeugen
posx<-rep(0,schritte+1)
posy<-rep(0,schritte+1)
# Schleife für die Schritte
zz<-0
while (zz<schritte) {
nn<-1
# 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
# Neue Linie zeichnen
lines(c(posx[nn],nposx),c(posy[nn],nposy))
# Position für nächsten durchlauf speichern
posx[nn]<-nposx
posy[nn]<-nposy
# Ende innere Schleife
nn<-nn+1
}
# Warten, damit man Parallelität sieht
Sys.sleep(zeit)
# Ende äußere Schleife
zz<-zz+1
}
# ende
}
print ("browns(anzahl,schritte,skalierung,sekunden)")
browns(10,1,10,1)
Links
MBS REAL studio Chart Plugins - Pfarrgemeinde St. Arnulf Nickenich