Der Versuch

Wie wollen versuchen, eine Simulation zur Bewegung auf der schiefen Ebene zu machen. Mit Hilfe des Energiesatzes können wir eine Beziehung zwischen der momentanen Höhe \(y\) des rollenden Körpers und seiner momentanen Geschwindigkeit \(v\) herstellen. Wir nehmen an, dass der Körper auf der Anfangshöhe \(h\) die Geschwindigkeit \(v=0\) hat und losgelassen wird. Die Gesamtlänge der schiefen Ebene sei \(L\), der Neigungswinkel sei \(\alpha\). Wir müssen beachten, dass \(v=ds/dt\) ist, wobei \(s\) die auf der Schräge zurückgelegte Stecke ist.

Energiesatz

Die Summe aus potentieller und kinetischer Energie bleibt zu jedem Zeitpunkt konstant. Wir können also schreiben:

\[ E_{kin} + E_{pot} = const. \] Die Konstante kann beliebig gewählt werden, da die potentielle Energie von einem beliebigen Punkt aus gemessen werden kann. Es ist praktisch, die Konstante auf \(m \cdot g \cdot h\) zu setzen. Dies ist die potentielle Energie zum Anfangszeitpunkt, wenn \(v=0\) ist. Wir schreiben also (für beliebige Körper):

\[ E_{kin} + m \cdot g \cdot y = m \cdot g \cdot h \] Bei \(t=0\) ist \(E_{kin}=0\) und \(y=h\). Wenn der Körper bei \(y=0\) ankommt, ist \(E_{kin}=m \cdot g \cdot h\). Letzteres haben wir bereits in diesem Beitrag benutzt, um die Endgeschwindigkeit auszurechnen.

Wie bereits erwähnt ist \(v=ds/dt\), während in der obigen Gleichung auch noch die momentane Höhe \(y\) auftaucht. Es ist jedoch besser, nur eine den zurückgelegten Weg charakterisierende Variable in der Energiegleichung zu behalten. Wir können folgende Beziehung benutzen (siehe Abbildung oben):

\[ y = (L-s) \cdot \sin{\alpha} = (L-s) \cdot \frac{h}{L} \] (\(s\) ist der momentan zurückgelegte Weg, \(L-s\) ist der bis zum Fußpunkt verbleibende Weg.). Wir haben \(\sin{\alpha} = \frac{y}{L-s}\) und \(\sin{\alpha} = \frac{h}{L}\) benutzt (Alternative: Strahlensatz).

Damit wird der Energiesatz

\[ E_{kin} + m \cdot g \cdot h \cdot \frac{ (L-s)}{L} = m \cdot g \cdot h \] \(s\) ist jetzt also die einzig verbleibende Längenvariable, mit \(v=ds/dt\).


Energiesatz für den rollenden Vollzylinder

Wir hatten bereits in einem anderen Beitrag gesehen, dass die kinetische Energie aus Translations- und Rotationsenergie zusammengesetzt ist:

\[ E_{kin} = \frac{m}{2} \cdot v^2 + \frac{J}{2} \cdot \omega^2 = = \frac{m}{2} \cdot v^2 + \frac{1}{2} \cdot \frac{1}{2} \cdot m \cdot r^2 \cdot \frac{v^2}{r^2} = \frac{m}{2} \cdot v^2 + \frac{m}{4} \cdot v^2 = \frac{3}{4} \cdot m \cdot v^2 \]

wobei \(\omega = v/r\) benutzt wurde, sowie \(J = \frac{1}{2} \cdot m \cdot r^2\), siehe Tabelle.

Damit haben wir für den Energiesatz:

\[ \frac{3}{4} \cdot m \cdot v^2 + m \cdot g \cdot h \cdot \frac{ (L-s)}{L} = m \cdot g \cdot h \] Dies kann noch vereinfacht werden, indem wir die Masse \(m\) herauskürzen:

\[ \frac{3}{4} \cdot v^2 + g \cdot h \cdot \frac{ (L-s)}{L} = g \cdot h \] Durch Umstellen erhalten wir die Beziehung zwischen der momentanen Geschwindigkeit \(v\) und der bisher auf der Schräge zurückgelegten Strecke \(s\):

\[ v = \sqrt{\frac{4\cdot g \cdot h}{3}} \cdot \sqrt{1 - \frac{ (L-s)}{L}} \] Am Fuße der schiefen Ebene ist \(s=L\) und wir erhalten für die Endgeschwindigkeit \(v_{end} = \sqrt{\frac{4\cdot g \cdot h}{3}}\). Dies hatten wir bereits in diesem Beitrag berechnet.

Eine einfache Simulation mit R könnte erfolgen, indem wir \(s\) in kleinen Schritten von \(0\) bis \(L\) variieren und zu jedem Wert jeweils die Geschwindigkeit ausrechnen:

L = 10     # length of inclined plane  [m]   
h = 2     # height of inclined plane  [m] 
g = 9.81   # gravitational acceleration [m/s^2]

K = sqrt(4*g*h/3)  # constant, for cylinder   

df.cyl = data.frame(s = numeric(), v = numeric())  # data frame to store results

for (s in seq(0, L, len = 201)) {
  v = K*sqrt(1-(L-s)/L)  
  new.row = data.frame(s = s, v = v) 
  df.cyl = rbind(df.cyl, new.row)
}

dim(df.cyl)
## [1] 201   2
head(df.cyl)
##      s         v
## 1 0.00 0.0000000
## 2 0.05 0.3616628
## 3 0.10 0.5114685
## 4 0.15 0.6264184
## 5 0.20 0.7233257
## 6 0.25 0.8087027

Zur Generierung der \(s\)-Werte haben wir das seq-Kommando benutzt. Die Resultate befinden sich im data.frame “df.cyl”. Wir werden das später zusammen mit den Ergebnissen für die anderen Körper plotten.


Energiesatz für die rollende Vollkugel

Wir haben hier einen anderen Ausdruck für die kinetische Energie, da die Kugel ein anderes Trägheitsmoment besitzt, siehe diesen Beitrag:

\[ E_{kin} = \frac{m}{2} \cdot v^2 + \frac{1}{2} \cdot \frac{2}{5} \cdot m \cdot r^2 \cdot \frac{v^2}{r^2} = \frac{m}{2} \cdot v^2 + \frac{m}{5} \cdot v^2 = \frac{7}{10} \cdot m \cdot v^2 \] wobei \(\omega = v/r\) benutzt wurde, sowie \(J = \frac{2}{5} \cdot m \cdot r^2\), siehe Tabelle.

Damit haben wir für den Energiesatz:

\[ \frac{7}{10} \cdot m \cdot v^2 + m \cdot g \cdot h \cdot \frac{ (L-s)}{L} = m \cdot g \cdot h \] Dies kann noch vereinfacht werden, indem wir die Masse \(m\) herauskürzen:

\[ \frac{7}{10} \cdot v^2 + g \cdot h \cdot \frac{ (L-s)}{L} = g \cdot h \]

Durch Umstellen erhalten wir die Beziehung zwischen der momentanen Geschwindigkeit \(v\) und der bisher auf der Schräge zurückgelegten Strecke \(s\):

\[ v = \sqrt{\frac{10\cdot g \cdot h}{7}} \cdot \sqrt{1 - \frac{ (L-s)}{L}} \] Am Fuße der schiefen Ebene ist \(s=L\) und wir erhalten für die Endgeschwindigkeit \(v_{end} = \sqrt{\frac{10\cdot g \cdot h}{7}}\). Dies hatten wir bereits in diesem Beitrag berechnet.

Jetzt wieder die Simulation:

K = sqrt(10*g*h/7)  # constant, for sphere   

df.sphere = data.frame(s = numeric(), v = numeric())  # data frame to store results

for (s in seq(0, L, len = 201)) {
  v = K*sqrt(1-(L-s)/L)  
  new.row = data.frame(s = s, v = v) 
  df.sphere = rbind(df.sphere, new.row)
}

dim(df.sphere)
## [1] 201   2
head(df.sphere)
##      s         v
## 1 0.00 0.0000000
## 2 0.05 0.3743566
## 3 0.10 0.5294202
## 4 0.15 0.6484046
## 5 0.20 0.7487132
## 6 0.25 0.8370868

Die Resultate befinden sich im data.frame “df.sphere”.


Energiesatz für den (reibungsfrei) gleitenden Quader

Der Quader rollt nicht, daher ist die kinetische Energie einfach:

\[ E_{kin} = \frac{m}{2} \cdot v^2 \] Damit haben wir für den Energiesatz:

\[ \frac{1}{2} \cdot m \cdot v^2 + m \cdot g \cdot h \cdot \frac{ (L-s)}{L} = m \cdot g \cdot h \] Dies kann noch vereinfacht werden, indem wir die Masse \(m\) herauskürzen:

\[ \frac{1}{2} \cdot v^2 + g \cdot h \cdot \frac{ (L-s)}{L} = g \cdot h \] Durch Umstellen erhalten wir die Beziehung zwischen der momentanen Geschwindigkeit \(v\) und der bisher auf der Schräge zurückgelegten Strecke \(s\):

\[ v = \sqrt{2 \cdot g \cdot h} \cdot \sqrt{1 - \frac{ (L-s)}{L}} \] Am Fuße der schiefen Ebene ist \(s=L\) und wir erhalten für die Endgeschwindigkeit \(v_{end} = \sqrt{2 \cdot g \cdot h}\). Dies hatten wir bereits in diesem Beitrag berechnet.

Jetzt wieder die Simulation:

K = sqrt(2*g*h)  # constant, for cube   

df.cube = data.frame(s = numeric(), v = numeric())  # data frame to store results

for (s in seq(0, L, len = 201)) {
  v = K*sqrt(1-(L-s)/L)  
  new.row = data.frame(s = s, v = v) 
  df.cube = rbind(df.cube, new.row)
}

dim(df.cube)
## [1] 201   2
head(df.cube)
##      s         v
## 1 0.00 0.0000000
## 2 0.05 0.4429447
## 3 0.10 0.6264184
## 4 0.15 0.7672027
## 5 0.20 0.8858894
## 6 0.25 0.9904544

Die Resultate befinden sich im data.frame “df.cube”.


Plotten

Wir plotten für alle 3 Körper \(v\) über \(s\). Die \(s\)-Werte sind für alle Körper gleich, wir fassen also zunächst die data.frames zusammen:

df = merge(df.cyl, df.sphere, by = "s")
head(df)
##      s       v.x       v.y
## 1 0.00 0.0000000 0.0000000
## 2 0.05 0.3616628 0.3743566
## 3 0.10 0.5114685 0.5294202
## 4 0.15 0.6264184 0.6484046
## 5 0.20 0.7233257 0.7487132
## 6 0.25 0.8087027 0.8370868
df = merge(df, df.cube, by = "s")
colnames(df) = c("s", "v.cyl", "v.sph", "v.cube")
head(df)
##      s     v.cyl     v.sph    v.cube
## 1 0.00 0.0000000 0.0000000 0.0000000
## 2 0.05 0.3616628 0.3743566 0.4429447
## 3 0.10 0.5114685 0.5294202 0.6264184
## 4 0.15 0.6264184 0.6484046 0.7672027
## 5 0.20 0.7233257 0.7487132 0.8858894
## 6 0.25 0.8087027 0.8370868 0.9904544

Das merge-Kommando ist für solche Zwecke sehr hilfreich. Zum plotten eignet sich matplot:

mtext = "Velocity vs. track"
matplot(df[,1],df[,2:4], type = "l", col=c("red", "blue", "green"), xlab = "s", ylab="v", lty = 1, lwd = 1.5, main = mtext, font.main = 1)
legend("topleft", c("cylinder", "sphere", "cube"), col=c("red", "blue", "green"), lwd =2 )

Vergleichen wir kurz mit den hier (Tabelle ganz unten) erhaltenen Werte für die Endgeschwindigkeit:

Körper dort berechnete Endgeschwindigkeit numerischer Wert
Quader \(v = \sqrt{2} \cdot \sqrt{g \cdot h} \approx 1.414 \cdot \sqrt{g \cdot h}\) \(6.263\)
Vollkugel \(v = \sqrt{\frac{10}{7}} \cdot \sqrt{g \cdot h} \approx 1.195 \cdot \sqrt{g \cdot h}\) \(5.293\)
Vollzylinder \(v = \sqrt{\frac{4}{3}} \cdot \sqrt{g \cdot h} \approx 1.155 \cdot \sqrt{g \cdot h}\) \(5.116\)

Wir haben also hier nur die Werte \(g=9.81\) und \(h=2\) in die 2. Spalte eingesetzt. Schauen wir uns noch einmal die letzten Werte des oben berechneten data.frames an:

tail(df)
##         s    v.cyl    v.sph   v.cube
## 196  9.75 5.050347 5.227605 6.185386
## 197  9.80 5.063280 5.240992 6.201226
## 198  9.85 5.076180 5.254345 6.217025
## 199  9.90 5.089047 5.267664 6.232784
## 200  9.95 5.101882 5.280950 6.248504
## 201 10.00 5.114685 5.294202 6.264184

Die Werte stimmen sehr gut überein :-).


uwe.menzel@matstat.org