brownsche molekularbewegung
-
hi
hat schon lange kein mathe mehr (6 jahre is das her, oje ich werd alt.. )
kann mir jemand helfen die folgende gleichung der brownschen molekularbewegung zu verstehn, so dass ich sie ev. in c++ code umsetzen kann?
quelle: wikipedia
versteh dabei knapp noch sinus, bei reihen konnt ich nicht folgenich will damit die physikalische eigenschaft der diffusion simulieren..
danke im voraus
-
die Lévy-Ciesielski-Konstruktion: hierbei wird die Brown’sche Bewegung mit Hilfe der durch das Haarsystem auf C([0,1]) induzierten Schauderbasis bereits als stochastischer Prozess mit stetigen Pfaden konstruiert.
da schauderts mir... :brr:
ich kapier die fachmathe ausdrücke nicht.
möchte nun also ein objekt (ein pixel) nach der obigen formel wandern lassen.
wie muss ich die nächste position berechnen?
muss ich die random funktion nehmen um einen winkel zu wählen, plus eine distanz?bitte um hilfe, ich schnall das echt nicht
-
Für eine einfache Simulation der Brownschen Bewegung würde ich mal nach "random walk" googlen, die Mathematik für Wien-Prozesse ist da vordergründig nicht so interessant. Im wesentlichen hast Du's ja eh verstanden. Du würfelst an jeder Position aus, wie es weitergeht ohne die vorherigen Positionen zu beachten. Du mußt dich nur noch entscheiden, wie viele Freiheitsgerade so ein Teilchen in deinem zweidimensionalen(?) Bildschirmraster haben soll und wie wahrscheinlich eine bestimmte Bewegung in eine bestimmte Richtung ist.
Ziemlich simpel und für's erste nicht so schlecht, wäre zB daß sich jedes Teilchen so bewegen kann, wie ein König auf einem Schachbrett. Der nächste Schritt wäre dann den Bewegungsspielraum des Königs so zu erweitern, daß er auch zwei Kästchen gehen kann usw. bis dein Modell die Realität genau genug approximiert (für die gegebene Anwendung).
-
danke
das wird mich mal ne weile beschäftigen..google->
Ein paradigmatischer Volltrunkener kommt aus einer Kneipe und torkelt durch die Gegend
plane eine simu der diffusion, später chemotaxis von zellen. daher wär realitätsnähe gut.
was meinst Du mit freiheitsgraden? ==> anzahl mögliche richtungen?
die wahrscheinlichkeit welcher richtung ist doch genau die unbekannte die ich hab, mach ich das mit random?würd die formel halt schon gern verstehn..
-
1310-Logik schrieb:
plane eine simu der diffusion, später chemotaxis von zellen. daher wär realitätsnähe gut.
Habe so etwas noch nie gemacht, aber mW. sind chemische Simulationen auf Basis von (nächstes Stichwort ;)) "zellulären Automaten" durchaus im praktischen Einsatz.
die wahrscheinlichkeit welcher richtung ist doch genau die unbekannte die ich hab, mach ich das mit random?
Ja, wobei nicht alle Richtungen gleich wahrscheinlich sein müssen (eine Membran oder eine Konzentrationsgefälle manipuliert die Wahrscheinlichkeiten natürlich).
würd die formel halt schon gern verstehn..
Guck dir mal den Artikel über den Wiener-Prozess an, da wird vom "random walk" ab kurz skizziert, was man so macht. Zur Simulation ist das aber nicht besonders relevant, welche statistischen Eigenschaften dein Prozess erfüllt. Er tut's einfach
-
Daniel E. schrieb:
eine Konzentrationsgefälle manipuliert die Wahrscheinlichkeiten natürlich.
Tatsächlich? Ich habe in der Schule gelernt, dass ein Konzentrationsgefälle die Teilchenbewegung nicht verändert, die also nicht "in eine Richtung gedrückt werden". Reine Zufallsbewegungen reichen bereits, um ein Konzentrationsgefälle auszugleichen und so im Zusammenspiel mit einer semipermeablen Membran zu osmotischem Druck zu führen (habe ich vor Jahren mal genau so simuliert, allerdings ziemlich primitiv).
-
Christoph schrieb:
Daniel E. schrieb:
eine Konzentrationsgefälle manipuliert die Wahrscheinlichkeiten natürlich.
Tatsächlich? Ich habe in der Schule gelernt, dass ein Konzentrationsgefälle die Teilchenbewegung nicht verändert, die also nicht "in eine Richtung gedrückt werden". Reine Zufallsbewegungen reichen bereits, um ein Konzentrationsgefälle auszugleichen und so im Zusammenspiel mit einer semipermeablen Membran zu osmotischem Druck zu führen (habe ich vor Jahren mal genau so simuliert, allerdings ziemlich primitiv).
Du hast recht. Als ich das geschrieben habe, habe ich mir das fälschlicherweise so ähnlich vorgestellt, als wären die zu simulierenden Teilchen geladen und würden sich in einem zeitlich konstanten E-Feld befinden. Und da sollte man mE eine grobe Driftbewegung in eine Richtung bekommen.
-
Christoph schrieb:
..
Reine Zufallsbewegungen reichen bereits, um ein Konzentrationsgefälle auszugleichen und so im Zusammenspiel mit einer semipermeablen Membran zu osmotischem Druck zu führen (habe ich vor Jahren mal genau so simuliert, allerdings ziemlich primitiv).genau so meint ich das.
hab aufm netz ne menge applets gefunden die das simulieren, aber die sind alle in java. mir gehts auch nicht drum der simu nur zuzuschaun.
wollt das machen als teil für komplexere simulationen und als übung natürlich.
wie hast Du das den umgesetzt, mit 8 richtungen und zufällig eine gewählt?
ein zellularautomat ala game of life hab ich schon. kann ich darauf aufbauen?sorry, ich versteh die berechnungen in den wikiartikel einfach nicht.
bin nur laborant und hat ewig kein mathe mehr.
dass die osmose das einfach tut weis ich, meine zellchen in derf flasche leben noch
-
1310-Logik schrieb:
Also eins ist schonmal klar, dass die Genauigkeit ganz an dir liegt, z.B. wie oft du aufsummierst, den der Grenzwert für k gegen unendlich für die Summe ist Null (Allerdings nur, wenn Z_k mit steigendem k nicht übermäßig stark anwächst, was ich hier nicht glaube). Wenn man jetzt noch wüste was Z und S ist (das weiß ich nicht, sind das Vektoren?), könnte man auch sagen, was da rauskommt und vor allem wie genau man das machen muss.
-
Ein Teilchen bewegt sich ja nicht einfach so. Es muss shcon angestossen werden. Die Brownsche Bewegung entsteht ja durch die Zusammenstösse von Atomen/ Molekülen die durch Wärme zittern. Wenn nun ein Molekül ein anderes anstösst bewegt sich das andere mit der höchsten Wsk in die richtung in der es gestossen wurde kann aber auch in eine andere wegfliegen das simulierst du über die Normalverteilung dh du legst eine Glockenkurve über den Richtungsvektor und bekommst so die Wsk für jede Richtung.
Wieso in deiner Formel sinus anstatt der exponentialfunktion steht verstehe ich allerdings nicht.
-
das simulierst du über die Normalverteilung dh du legst eine Glockenkurve über den Richtungsvektor und bekommst so die Wsk für jede Richtung.
ja eben, ich dachte rand() ist nicht normalverteilt?
muss ich da ne eigene funktion bauen? wenn ja wie?Wieso in deiner Formel sinus anstatt der exponentialfunktion steht verstehe ich allerdings nicht.
versteh eben die formel gar nicht, hab ich von wikipedia und der begleitende absatz hilft mir auch nicht weiter.
kann ich die summe mit ner for schlaufe machen? also etwa so:for( k = 1; k >= 10000; k++ ) //denke 10000 ist mehr als genug.. { //hier die berechnung der formel S += Z * ( sqrt(2)*sin(k*pi*t) )/( k*pi) }
glaub soweit schnall ichs, aber, was sind S und Z und was t??
die molekularen vorgänge sind mir soweit klar und logisch
-
-> c°h°
Könnte die Reihenendwiklung der e-Funktion eingeflossen sein.
-
1310-Logik schrieb:
das simulierst du über die Normalverteilung dh du legst eine Glockenkurve über den Richtungsvektor und bekommst so die Wsk für jede Richtung.
ja eben, ich dachte rand() ist nicht normalverteilt?
muss ich da ne eigene funktion bauen? wenn ja wie?http://www.library.cornell.edu/nr/cbookcpdf.html Kapitel 7.
versteh eben die formel gar nicht, hab ich von wikipedia und der begleitende absatz hilft mir auch nicht weiter.
kann ich die summe mit ner for schlaufe machen? also etwa so:for( k = 1; k >= 10000; k++ ) //denke 10000 ist mehr als genug.. { //hier die berechnung der formel S += Z * ( sqrt(2)*sin(k*pi*t) )/( k*pi) }
glaub soweit schnall ichs, aber, was sind S und Z und was t??
Bei der Interpretation als Teilchenbewegungen:
S: Abstand vom Anfangspunkt(?)
Z[0], Z[1] usw: normalverteilte Zufallszahlen
t: ZeitAber: Niemand simuliert Brownsche Bewegungen über Spektralzerlegungen, das ist der maximal umständliche Weg, schon allein, weil der Sinus umständlich zu berechnen ist. Jeder implementiert einen random walk.
-
umständlich, aber schön!
geht mir nur ums verständniss.
versuchs erstmal so,
und werd dann fürs grössere projekt wohl trotzdem nen random walk machendanke für eure hilfe
-
hab den wiener walzer der moleküle noch nich geschnallt,
die lektüre von http://www.library.cornell.edu/nr/cbookcpdf.html Kapitel 7. hab ich verschoben auf später, aber wird schon..so gehts, da zittern die pixel recht schön umher
(könig auf schachbrett)///irgendwo int rx = rand()%3 -1; int ry = rand()%3 -1; int rs = rand()%5; _pos.x += rx*rs; _pos.y += ry*rs; //..später dann: my_molecules ist ein stl-vector for( iter it=my_molecules.begin(); it != my_molecules.end(); it++ ) { pos _pos = (*it)->get_pos(); int x = _pos.x; int y = _pos.y; field[x][y] = true;
im moment knusper ich noch an den randeffekten..
primärziel erreicht
danke euch allen nochmal