brownsche molekularbewegung



  • 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 😉


  • Mod

    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:

    S(t)=Z_0t+_k=1Zk2sin(kπt)kπS(t) = Z\_0 t + \sum\_{k=1}^\infty Z_k \frac{\sqrt{2} sin(k \pi t)}{k \pi}

    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: Zeit

    Aber: 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 machen

    danke 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


Anmelden zum Antworten