MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.

_____________________________________________________________________________________

 

Inhalt....: Bewegung eines Kugelpendels im Gravitationsfeld

Kategorie.: Unterrichtsmaterial

Mathematik: Geometrie R^3, Physik

MuPAD.....: 3.1.1

Datum.....: 2006-02-23

Autoren...: Günter vom Stein <gvomstein@gmx.net>

Funktionen: linalg::crossProduct, linalg::ScalarProduct, norm

_____________________________________________________________________________________

 

Bewegung einer Kugel im Gravitationsfeld (z.B. der Erde). Die Kugel wird mit

einer (masselosen) Stange an einem ruhenden Punkt aufgehängt.

(Luft-)Reibung kann zugeschaltet werden.

 

Zur Idee:

Ein Massepunkt bewegt sich auf einer Kugelschale. Er wird zu Beginn auf die Kugeloberfläche

gesetzt und bekommt einen Geschwindigkeitsvektor verliehen, der in der Tangentialebene zum

Startpunkt liegt. 

In der folgenden Iteration wird bei jedem Schritt der Geschwindigkeitsvektor unter dem Einfluss

der Schwerkraft neu orientiert. Anschließend legt der Massepunkt mit dieser Geschwindigkeit

ein Weg-Intervall auf demjenigen Großkreis zurück, den die Ursprungsebene, gebildet aus

momentanem Geschwindigkeitsvektor und Ortsvektor (= Fahrstrahl), aus der Kugel schneidet.

 

In der Simulation "kennt" der Massepunkt nicht mehr als in der Realität auch, nämlich die jeweilige

Tangentialkomponente der Gravitationsbeschleunigung und die Zwangsbedingung, an der Stange

festgemacht zu sein. Letztere Bedingung kommt in der Simulation zum Ausdruck, wenn der Weg

entlang des Großkreises als Drehung des Ortsvektors in der entsprechenden Ursprungsebene erfolgt.

 

Als mathematische Werkzeuge werden nur das Skalarprodukt und das Kreuzprodukt eingesetzt.

Insbesondere kann die Drehung elegant mit dem Kreuzprodukt realisiert werden.

___________________________________________________________________________

 

Als Anschauungshilfen stehen drei Graphiken zur Verfügung, auf die im Text der Iterations-Prozedur

Bezug genommen wird.

 

Graphik 1 und 2 sind aktive Graphiken (Doppelklick oder rechte-Maus-Taste-Graphik-Objekt-Open).

 

 

Graphik 1 stellt mit der blauen Gerade die Richtung der Rückstellkraft bzw. Rückstellbeschleunigung

dar. Die Beschleunigung zeigt auf der unteren Halbkugel vom Ort des Massenpunkts zur z-Achse hin,

auf der oberen Halbkugel von der z-Achse weg.

 

image

 

Graphik 2 zeigt die Ursprungsebene, in der der Ortsvektor des Massepunkts (= Fahrstrahl) gedreht wird,

sowie den momentanen Geschwindigkeitsvektor.

 

 

image

 

 

Graphik 3 beschreibt die Drehung eines Ortsvektors um eine vorgegebene Normale.

               image

 

  Wegen  image  sind die drei Vektoren

 

imageund   imagealle gleich lang. Dann aber gilt

 

image

 

(aus Kroll u.a.,Analytische Geometrie/Lineare Algebra, Dümmler-Verlag, S.70)

 

-------------------------------------------------------------------------------------------------------

 

Beginn des Programms

Bei 3000 Iterationsschritten werden für den Prozeduraufruf und die beiden Graphiken auf einem

Notebook 1,4 GHz jeweils ca. 10 Sekunden benötigt.

 

 

reset():

DIGITS:=10:

export(linalg):

alias(KreuzP = crossProduct):

alias(scP = scalarProduct):

 

Festlegung der Startwerte

x0 und y0 können unter Einhaltung von image frei gewählt werden,  z0 wird vom Programm

berechnet.

 

Der Startvektor der Geschwindigkeit muss in derjenigen Tangentialebene an die Kugel liegen,

die vom Startpunkt definiert wird.

Wenn vx0 und vy0 entgegengesetzt gleiche Werte haben, muss vz0 von Hand auf Null gesetzt werden,

denn  solve(scP(s0,v0),vz0) führt dann nicht zu einem Ergebnis. Andernfalls wird vz0

ebenfalls vom Programm berechnet. solve(scP(s0,v0),vz0)  macht nur einen Vorschlag

unter vielen möglichen.

 

 

sx0:=5:sy0:=5:vx0:=-15: vy0:=25: // Anfangswerte

//sx0:=1:sy0:=1:vx0:=0: vy0:=5: // Anfangswerte

 

 

g:=9.81: // Gravitationskonstante

r:=10:

//sz0:=float(sqrt(r^2-sx0^2-sy0^2));

sz0:=-float(sqrt(r^2-sx0^2-sy0^2));

s0:=matrix([sx0,sy0,sz0]):

v0:=matrix([vx0,vy0,vz0]):

L:=solve(scP(s0,v0),vz0):

vz0:=op(op(L,1),2);

//vz0:=0:

scP(s0,v0); // Kontrolle: v in der Tagentialebene ?

math

math

Error: expecting an arithmetical expression [normal]

 

Die Prozedur zur Iteration:

Es ist weiter unten möglich vor Aufruf der Prozedur einen Reibungsfaktor festzulegen, der zwar

hier nur willkürlich gewählt werden kann, aber einen Reibungsterm  image definiert, wie er bei

Luftreibung auftritt.

 

Bahn:=proc(s0,v0,n)

local a0,n0,KP,v,alpha,nz;

begin

dt:=delta_t/1000; // dt Zeitintervall in Sekunden

s[0]:=s0;

v:=v0;

nz:=matrix([0,0,1]);

 

for i from 0 to n do

 

  // Rückstellbeschleunigung: Hierzu studiere man Graphik 1 (s.o)

  KP:=float(KreuzP(s[i],KreuzP(s[i],nz)));

  a0:=KP/float(norm(KP,2));

  //a0:=-KP/float(sqrt(scP(KP,KP)));

 

  // neue Geschwindigkeit:

  v:=v+g*float(sin(arccos(abs(s[i][3]/r))))*dt*a0;

  v:=v*(1-C*scP(v,v)*dt);  // zusätzlich (Luft)Reibung (s.u.)

 

  // Normalenvektor für Drehung bestimmen: s. Graphik 2

  KP:=float(KreuzP(s[i],v));

  //n0:=KP/float(sqrt(scP(KP,KP)));

  n0:=KP/float(norm(KP,2));

 

  //  Drehwinkel im Bogenmaß bestimmen:

  //alpha:=float(norm(v,2)*dt/r); // "norm" verlangsamt hier ungemein!?

  alpha:=float(sqrt(scP(v,v))*dt/r);

 

  // Drehung von s und v:  s. Graphik 3

  s[i+1]:=cos(alpha)*s[i]+sin(alpha)*KreuzP(n0,s[i]);

  v:=cos(alpha)*v+sin(alpha)*KreuzP(n0,v);

 

end_for

end_proc:

 

C:=0:C:=0.001:  // (Luft)Reibungsparameter

delta_t:=10: // Dauer eines Zeitintervalls in ms

n:=3000:   // Anzahl der Iterationsschritte 

Bahn(s0,v0,n):

 

 

k:=5:k_max:=(n div k): // Nur jeder k-te Punkt wird gezeichnet

                    

 

Punkte:= plot::Point3d([s[k*i][1],s[k*i][2],s[k*i][3]],

                           PointSize=2,

                           PointStyle=FilledCircles,

                           Color=RGB::Red,

                           VisibleFromTo = i..i+1

                           )

                           $ i=0..k_max:

 

z_Achse:=plot::Line3d([0,0,0],[0,0,-r],

                           LineColor = RGB::Black

                           ):

 

Seil:=plot::Line3d([s[k*i][1],s[k*i][2],s[k*i][3]],[0,0,0],

                           LineColor = RGB::Red,

                           VisibleFromTo = i..i+1

                           )

                           $ i=0..k_max:

 

Bahn:=plot::Line3d([s[k*i][1],s[k*i][2],s[k*i][3]],[s[k*(i+1)][1],s[k*(i+1)][2],s[k*(i+1)][3]],

                           LineColor = RGB::Red,

                           VisibleFromTo = i+1..i+1,

                           VisibleAfterEnd

                           )

                           $ i=1..k_max-1:

 

Suedpol:=plot::Point3d([0,0,-r] ,PointSize=1,

  PointStyle=FilledCircles,Color=RGB::Black):

 

Nordpol:=plot::Point3d([0,0,r] ,PointSize=1,

  PointStyle=FilledCircles,Color=RGB::Black):

 

b:=1.4:

Sc3:=plot::Scene3d(Punkte,Suedpol,Seil,Bahn,z_Achse,

                  ViewingBox = [-b*r..b*r, -b*r..b*r,-r..r]):

 

plot(Sc3,  GridVisible = TRUE):

 

 

Zur Veranschaulichung mit Kugeloberfläche:

 

Kugel:=plot::Sphere(r,[0,0,0],FillColor=RGB::LightYellow.[0.85]):

Sc3:=plot::Scene3d(Punkte,z_Achse,Seil,Bahn,Suedpol,Nordpol,Kugel,

                  ViewingBox = [-r..r, -r..r,-r..r]):

plot(Sc3,  GridVisible = TRUE):

 

 

Die Güte der Simulation kann weder an theoretischen Gleichungen und Ergebnissen noch am

Experiment gemessen werden, wohl aber an sich selbst.

 

Beispiel für den Vergleich zweier Durchgänge:

 

Anzahl der Iterationsschritte       Dauer eines Zeit-Intervalls          Endpunkt der Bahn

 

              3000                                            10 ms                              [  2.9726  |  1.1808  |  -9.4747  ]

 

              6000                                              5 ms                              [  2.9500  |  1.2285  |  -9.4757  ]

 

_______________________________________________________________________________

 

Anmerkungen:

1.  Weitere Anregungen zum Einsatz von MuPAD in der Lehre finden Sie auf unserem WebPortal

     MuPAD in Schule und Studium unter: http://schule.mupad.de bzw. http://studium.mupad.de.

_______________________________________________________________________________

 

 

MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.