DMUG-Archiv 2003

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

RE: Rotationsdiffusion

hallo, 

also das sollte deine "isotropie" leisten
du addierst einen 3d zufallsvektor von gewünschter länge und normierst den ergbenisvektor wieder auf länge eins (geht 
auch mit Normalize[]).
welcher winkelschrittweite das entpricht muss man noch überlegen.

no = 3000;
step = .05;
un = {1.0, 0.0, 0.0};
vec = Table[{0, 0, 0}, {i, 1, no}];
Do[
  {vec[[i]] = un,
    un = un + { step*Random[] - 
      step/2, step*Random[] - step/2, step*Random[] - step/2},
    un = un/Sqrt[Plus @@ (un^2)]
    },
  {i, 1, no}]
SpinShow[Show[
      Table[Graphics3D[{AbsoluteThickness[4], RGBColor[1, 0, 0],
            Point[vec[[i]]]}, PlotRange -> {{-1, 1}, {-1, 1}, {-1, 1}},
          ImageSize -> 400, ViewPoint -> {4, 2, 2}], {i, 1, no}]],
    ImageSize -> 400, ViewPoint -> {4, 2, 2}];

grüsse robert

-----Original Message-----
From: Jens Bredenbeck [mailto:j.bredenbeck@XXXXXXX.ch] 
Sent: Monday, April 14, 2003 10:28 AM
To: dmug@XXXXXXX.ch
Subject: Rotationsdiffusion


Liebe Liste,

ich möchte eine diffusionsartige Bewegung eines Punktes auf einer 
Kugeloberfläche simulieren. Dazu bin ich von einem Ausgangsvektor 
un={1,0,0} gestartet und habe mit 
Rotate3D[un,step*Random[]-step/2,step*Random[]-step/2,step*Random[]-step/2] 
iterativ Rotationen um zufällige Eulerwinkel ausgeführt. Hier ist das 
Program:

no = 1000;
step = .1;
un = {1.0, 0.0, 0.0};
vec = Table[{0, 0, 0}, {i, 1, no}];
Do[
  {vec[[i]] = un,
    un = Rotate3D[un, step*Random[] - step/2, step*Random[] - step/2,
        step*Random[] - step/2]
    },
  {i, 1, no}]
SpinShow[Show[
      Table[Graphics3D[{AbsoluteThickness[4], RGBColor[1, 0, 0],
            Point[vec[[i]]]}, PlotRange -> {{-1, 1}, {-1, 1}, {-1, 1}},
          ImageSize -> 400, ViewPoint -> {4, 2, 2}], {i, 1, no}]],
    ImageSize -> 400, ViewPoint -> {4, 2, 2}];

Insbesondere für kleinere Schrittweiten step findet eine schnelle 
äquatoriale "Diffusion" statt, aber eine langsame in longitudinaler 
Richtung. Ist das ein numerisches Problem oder habe ich bei den Winkeln 
etwas verkehrt gemacht? Für grosse Schrittweiten gibt es schnell eine 
isotrope Verteilung.

Gruss,
Jens



Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html