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.
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\).
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.
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”.
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”.
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 :-).