Physikalische Grundlagen

Die Physik beim Schrägen Wurf ist eigentlich ganz einfach. Wenn die Luftreibung vernachlässigt wird, wirkt nach dem Abwurf nur eine einzige Kraft auf das Projektil: die senkrecht nach unten gerichtete Schwerkraft. Wir können die Vektoren der Beschleunigung und der Geschwindigkeit jeweils in eine vertikale (\(y\)-Achse) und eine horizontale (\(x\)-Achse) Komponente unterteilen. Dann ist die Beschleunigung in \(y\)-Richtung \(a_y = -g = -9.81 \, ms^{-2}\), die Beschleunigung in \(x\)-Richting ist Null: \(a_x = 0\). Das bedeutet, dass eine gleichmäßig beschleunigte Bewegung in (negativer) \(y\)-Richtung vorliegt, und dass eine geradlinig gleichmäßige Bewegung in \(x\)-Richtung stattfindet. Die Geschwindigkeit in negativer \(y\)-Richtung nimmt also ständig zu, währenddessen die Geschwindigkeit in \(x\)-Richtung stets konstant bleibt, bis das Projektil den Erdboden (\(y=0\)) erreicht.

Bezeichnungen

Der schräge Wurf findet in der \(x\)-\(y\)-Ebene statt. Die Anfangshöhe (größer Null z.B. beim Wurf von einem Dach oder von einer Anhöhe) wird mit \(y_0\) bezeichnet. (Meist wird \(y_0=0\) angenommen.) Der Wurf erfolgt mit einer Anfangsgeschwindigkeit \(v_0\) unter einem Winkel \(\alpha\) zur \(x\)-Achse. Die Wurfparabel erreicht ihre größte Höhe beim \(x=x_{max}\), die Wurfweite wird mit \(x_w\) bezeichnet.

Anfangsgeschwindigkeit

Der Vektor der Anfangsgeschwindigkeit kann in die Komponenten \(v_x\) und \(v_y\) zerlegt werden:

Grundlegende Beziehungen

Folgende Formeln werden aus oben stehender Grafik ersichtlich:

\[ \begin{align*} \sin{\alpha} &= \frac{v_{0y}}{v_{0}} & v_{0y} &= v_{0} \cdot \sin{\alpha} \\ \cos{\alpha} &= \frac{v_{0x}}{v_{0}} & v_{0x} &= v_{0} \cdot \cos{\alpha} \hspace{1cm} \text{(1)} \end{align*} \]

\[ \tan{\alpha} = \frac{v_{0y}}{v_{0x}} \]

Der Betrag der Geschwindigkeit ist

\[ v = \sqrt{ v_{0y}^2 + v_{0x}^2 } \] (Satz des Pythagoras)

Zeitliche Ableitungen werden mit einem Punkt über dem Formelzeichen dargestellt:

\[ \begin{align*} \dot{x} &= \frac{dx}{dt} = v_x & \dot{y} &= \frac{dy}{dt} = v_y \qquad \text{Geschwindigkeit} \\[8pt] \ddot{x} &= \frac{d^2x}{d^2t} = a_x & \ddot{y} &= \frac{d^2y}{d^2t} = a_y \qquad \text{Beschleunigung} \end{align*} \]


Ausgangsgleichungen

Nur zwei Formeln reichen aus, um die im Abschnitt Physikalische Grundlagen erwähnten Zusammenhänge zu modellieren:

\[ \begin{align*} a_y = \ddot{y} &= -g \qquad \text{Erdbeschleunigung in y-Richtung} \\ a_x = \ddot{x} &= 0 \qquad \quad \text{keine horizontale Beschleunigung} \hspace{1cm} \text{(2)} \end{align*} \]

Beide Gleichungen werden nach der Zeit integriert:

\[ \begin{align*} \dot{y} &= -g \cdot t + v_{0y} \qquad \text{vertikale Geschwindigkeit} \\ \dot{x} &= v_{0x} \qquad \qquad \qquad \text{horizontale Geschwindigkeit} \hspace{1cm} \text{(3)} \end{align*} \]

Es sind hier \(v_{0y}\) und \(v_{0x}\) die Integrationskonstanten. Wir sehen, dass für \(t=0\) in der oberen Gleichung wieder \(v_y = v_{0y}\) folgt, also die korrekte Anfangsbedingung.

Nochmalige Integration ergibt die Beziehungen für \(x\) und \(y\):

\[ \begin{align*} y &= -\frac{g}{2} t^2 + v_{0y} \cdot t + y_0 \\ x &= v_{0x}\cdot t +x_0 \hspace{3cm} \text{(4)} \end{align*} \]

Die Integrationskonstante \(x_0\) ist der horizontal zurückgelegte Weg zur Zeit \(t=0\). Wir werden im Weiteren \(x_0=0\) setzen, da wir das Koordinatensystem beliebig positionieren können. .


Bahngleichung

Aus den letzten beiden Gleichungen (4) kann die Bahnkurve - also die Beziehung \(y(x)\) - berechnet werden, indem die Zeit eliminiert wird:

Aus der zweiten Gleichung folgt \(t = \frac{x}{v_{0x}}\). Dies in die erste Gleichung eingesetzt ergibt

\[ y = -\frac{g}{2} \frac{x^2}{v_{0x}^2} + v_{0y} \cdot \frac{x}{v_{0x}} + y_0 \hspace{1cm} \text{(5)} \] Dies ist im Prinzip schon die Bahnkurve. Es ist jedoch eleganter, die Bahnkurve mit Hilfe der Anfangsgeschwindigkeit \(v_0\) und des Abwurfwinkels \(\alpha\) auszudrücken. Wir verwenden dazu die im Abschnitt Grundlegende Beziehungen aufgelisteten Formeln \(v_{0x} = v_{0} \cdot \cos{\alpha}\) und \(\tan{\alpha} = \frac{v_{0y}}{v_{0x}}\) und bekommen:

\[ y = -\frac{g}{2} \frac{x^2}{v_{0}^2 \cos^2{\alpha}} + \tan{\alpha} \cdot x + y_0 \hspace{1cm} \text{(6)} \] Wir können nun in R eine Funktion schreiben, die die vertikale Koordinate \(y\) berechnet, wenn \(x\), \(v_0\) , \(\alpha\) und \(y_0\) gegeben sind:

hoehe <- function(x, v0, alpha, y0) {
  g = 9.81
  y = -g/2*x^2/v0^2/cos(alpha)^2 + tan(alpha)*x + y0
  return(y)
}
pi  # in R vordefiniert
## [1] 3.141593
y = hoehe(1, 5, pi/4, 0)
y
## [1] 0.6076

Wir setzen voraus, dass alle Größen in SI-Einheiten gegeben sind, also

Die Umrechnung von Grad in Radiant erfolgt mit \(rad = grad \cdot (\pi/180 )\).
Die Winkelfunktionen cos und tan in R erwarten, dass Winkel als Bogenmaß angegeben werden.

Die Funktion im obigen Beispiel berechnet die Höhe des Projektils an der Stelle \(x=1\) \(m\) für eine Anfangsgeschwindigkeit von \(v_0 = 5\) \(m/s\), einen Abwurfwinkel von \(\alpha = \pi/4\) und eine Anfangshöhe von \(y_0=0\) \(m\). (Die Input-Parameter müssen in der korrekten Reihenfolge eingegeben werden.)
Dies ist aber nur ein einziger Punkt. Wenn wir die Bahnkurve haben wollen, müssen wir die Höhe für viele \(x\)-Werte berechnen:

x = seq(0, 1, 0.01)
x
##   [1] 0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 0.11 0.12 0.13 0.14
##  [16] 0.15 0.16 0.17 0.18 0.19 0.20 0.21 0.22 0.23 0.24 0.25 0.26 0.27 0.28 0.29
##  [31] 0.30 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.40 0.41 0.42 0.43 0.44
##  [46] 0.45 0.46 0.47 0.48 0.49 0.50 0.51 0.52 0.53 0.54 0.55 0.56 0.57 0.58 0.59
##  [61] 0.60 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69 0.70 0.71 0.72 0.73 0.74
##  [76] 0.75 0.76 0.77 0.78 0.79 0.80 0.81 0.82 0.83 0.84 0.85 0.86 0.87 0.88 0.89
##  [91] 0.90 0.91 0.92 0.93 0.94 0.95 0.96 0.97 0.98 0.99 1.00
y = hoehe(x, 5, pi/4, 0)
y
##   [1] 0.00000000 0.00996076 0.01984304 0.02964684 0.03937216 0.04901900
##   [7] 0.05858736 0.06807724 0.07748864 0.08682156 0.09607600 0.10525196
##  [13] 0.11434944 0.12336844 0.13230896 0.14117100 0.14995456 0.15865964
##  [19] 0.16728624 0.17583436 0.18430400 0.19269516 0.20100784 0.20924204
##  [25] 0.21739776 0.22547500 0.23347376 0.24139404 0.24923584 0.25699916
##  [31] 0.26468400 0.27229036 0.27981824 0.28726764 0.29463856 0.30193100
##  [37] 0.30914496 0.31628044 0.32333744 0.33031596 0.33721600 0.34403756
##  [43] 0.35078064 0.35744524 0.36403136 0.37053900 0.37696816 0.38331884
##  [49] 0.38959104 0.39578476 0.40190000 0.40793676 0.41389504 0.41977484
##  [55] 0.42557616 0.43129900 0.43694336 0.44250924 0.44799664 0.45340556
##  [61] 0.45873600 0.46398796 0.46916144 0.47425644 0.47927296 0.48421100
##  [67] 0.48907056 0.49385164 0.49855424 0.50317836 0.50772400 0.51219116
##  [73] 0.51657984 0.52089004 0.52512176 0.52927500 0.53334976 0.53734604
##  [79] 0.54126384 0.54510316 0.54886400 0.55254636 0.55615024 0.55967564
##  [85] 0.56312256 0.56649100 0.56978096 0.57299244 0.57612544 0.57917996
##  [91] 0.58215600 0.58505356 0.58787264 0.59061324 0.59327536 0.59585900
##  [97] 0.59836416 0.60079084 0.60313904 0.60540876 0.60760000

Wir sehen hier, dass die Funktion hoehe vektorisiert werden kann, d.h. bei Eingabe eines Vektors \(x\) wird der Output für alle Elemente dieses Vektors berechnet. Siehe dazu auch den entsprechenden Abschnitt auf der R-Webseite.
Der Inputvektor wird mit Hilfe des seq-Kommandos definiert.

Wir können nun einen Teil der Bahnkurve plotten:

plot(x,y)

Wir werden in Kürze die gesamte Bahnkurve bis zum Erreichen der gesamten Wurfweite plotten. Dazu werden wir die Wurfweite zunächst berechnen.

Wurfdauer, Wurfweite

Der Wurf endet wenn \(y=0\). Wir setzen also in der ersten Gleichung von (4) \(y=0\) und lösen nach \(t\) auf, um die Dauer des Wurfes zu berechnen:

\[ -\frac{g}{2} t^2 + v_{0y} \cdot t + y_0 = 0 \hspace{1cm} \text{(7)} \] Die positive Lösung dieser quadratischen Gleichung lautet:

\[ t_w = \frac{v_{0y}}{g} + \sqrt{\frac{v_{0y}^2}{g^2}+ \frac{2 y_0}{g}} \hspace{1cm} \text{(8)} \] (Der 2. Summand ist größer als der 1.; daher nur diese Lösung!)

Wir können außerdem \(v_{0y}=v_{0} \cdot \sin{\alpha}\) aus Gleichung (1) benutzen und erhalten:

\[ t_w = \frac{v_{0} \cdot \sin{\alpha}}{g} + \sqrt{\frac{v_{0}^2 \cdot \sin^2{\alpha}}{g^2}+ \frac{2 y_0}{g}} \hspace{1cm} \text{(9)} \] Die Wurweite \(x_w\) ergibt sich nun aus dem 2. Teil der Gleichung (4) (mit \(t=t_w\) und \(x_0=0\)):

\[ x_w = v_{0x} \cdot t_w = v_{0} \cdot \cos{\alpha} \cdot t_w \hspace{3cm} (10) \] Dies stimmt mit der physikalischen Tatsache überein, dass sich das Projektil mit gleichförmig geradlinig in \(x\)-Richtung bewegt.

Alternativ kann man die Wurfweite auch direkt aus der Bahnkurve ausrechnen indem man in Gleichung (6) \(y=0\) setzt :

\[ -\frac{g}{2} \frac{x^2}{v_{0}^2 \cos^2{\alpha}} + \tan{\alpha} \cdot x + y_0 = 0 \]

Dies ist ebenfalls eine quadratische Gleichung mit der positiven Lösung

\[ x_w = \frac{v_0^2 \cdot \cos{\alpha} \cdot \sin{\alpha}}{g} + v_0 \cdot \cos{\alpha} \cdot \sqrt{ \frac{v_0^2 \cdot \sin^2{\alpha}}{g^2} +\frac{2 y_0}{g}} \hspace{1cm} (11) \] Gleichung (11) ist identisch mit Gleichung (10).

Für den Spezialfall \(y_0=0\) vereinfacht sich (11) wesentlich, es ist dann

\[ x_w = \frac{2 \cdot v_0^2 }{g} \cdot \cos{\alpha} \cdot \sin{\alpha} = \frac{v_0^2 }{g} \cdot \sin{2\alpha} \hspace{1cm} (12) \] wobei wir wieder \(2\cos{\alpha} \cdot \sin{\alpha} = \sin{2 \alpha}\) benutzt haben (siehe die trigonometrischen Formeln auf dieser Wikipedia-Seite.)


Bahnkurve plotten

Wir können nun die Bahnkurve über die gesamte Länge der Parabel plotten. Außerdem hübschen wir den Plot etwas auf:

g = 9.81
alpha = pi/4
v0 = 5
y0 = 0
x_w = v0^2 * cos(alpha) * sin(alpha) / g + v0 * cos(alpha) * sqrt( v0^2 * sin(alpha)^2/g^2 + 2*y0/g  )
x_w
## [1] 2.54842
x = seq(0, x_w, 0.01)
y = hoehe(x, 5, pi/4, 0)
plot(x,y, col = "blue", type = "l", main = "Bahnkurve", lwd = 2)

Eine Beschreibung der Parameter der plot-Funktion gibt es zum Beispiel hier.


Optimaler Abwurfwinkel

Unter welchem Winkel muss man werfen, um die größtmögliche Weite zu erreichen? Um diese Frage zu beantworten, können wir Gleichung (11) als Funktion von \(\alpha\) auffassen, also \(x_w = f (\alpha)\). Um das \(\alpha\) zu finden, bei dem die Bahnkurve ein Maximum annimmt, müssen wir nun \(\frac{dx_w}{d\alpha}=0\) setzen. Die Ableitung ist etwas langwierig, hier nur das Ergebnis:

\[ \frac{dx_w}{d\alpha}=\frac{v_0^2}{g} \cdot \cos{2\alpha} + \frac{v_0^3}{2g^2} \cdot \cos{\alpha} \cdot \sin{2\alpha} \cdot \frac{1}{W} - v_0 \cdot \sin{\alpha} \cdot W \hspace{1cm} (13) \] mit der Abkürzung \(W=\sqrt{ \frac{v_0^2 \cdot \sin^2{\alpha}}{g^2} +\frac{2 y_0}{g}}\).

Alle Terme in dieser Formel haben die Einheit Meter (\(m\)).

Wer Formel (13) nachrechnen möchte, sollte die trigonometrischen Formeln im Abschnitt Doppelwinkelfunktionen auf dieser Website berücksichtigen.

Ein einfacheres Ergebnis erhalten wir, wenn \(y_0=0\) ist. Dann haben wir \(W=\frac{v_0 \cdot \sin{\alpha}}{g}\) und Gleichung (13) vereinfacht sich (nach länglichen Manipulationen) zu

\[ \frac{dx_w}{d\alpha}=\frac{2 \cdot v_0^2}{g} \cdot \left( \cos^2{\alpha} - \sin^2{\alpha} \right) \hspace{1cm} (14) \] Diese Ableitung wird Null, wenn \(\cos{\alpha} = \sin{\alpha}\), also für \(\alpha = \pi/4\). Dies ist also der optimale Abwurfwinkel für \(y_0=0\).


Maximale Höhe

Die maximale Höhe kann z.B. aus der Bahngleichung (6) ermittelt werden. Wir suchen das Maximum der Kurve, müssen also \(\frac{dy}{dx}=0\) setzen. Aus (6) folgt:

\[ \frac{dy}{dx} = -\frac{g}{v_0^2 \cdot \cos^2{\alpha}} \cdot x + \tan{\alpha} = 0 \hspace{1cm} \text{(15)} \] Daraus ergibt sich

\[ x_{max} = \frac{v_0^2}{2g} \cdot \sin{2\alpha} \hspace{1cm} \text{(16)} \] Dies ist die horizontale Position, bei der die größte Höhe erreicht wird. Die maximale Höhe der Bahnkurve ist der dazugehörige \(y\)-Wert, der durch Einsetzen von \(x_{max}\) in die Bahnkurve (6) berechnet wird:

\[ y_{max} = \frac{v_0^2}{2g} \cdot \sin^2{\alpha} + y_0 \hspace{1cm} \text{(17)} \]

Die größte Wurfhöhe wird für \(\alpha = 90^o\) erreicht, also für einen Wurf senkrecht nach oben. Die Wurweite \(x_{max}\) ist dann natürlich Null, in Übereinstimmung mit Gleichung (16).


Steigzeit

Die Steigzeit \(t_{max}\) ist die Dauer bis zum Erreichen der maximalen Höhe. Zur Berechnung kann der Zusammenhang \(x=v_{0x} \cdot t\) aus Gleichung (4) benutzt werden. Wir kennen aus Gleichung (16) bereits die \(x\)-Koordinate, bei der die maximale Höhe erreicht wird. Daher beträgt die Steigzeit

\[ t_{max} = \frac{v_0}{g} \cdot \sin{\alpha} \hspace{1cm} \text{(18)} \]


Zusammenfassung der wichtigsten Formeln


Position des Projektils über der Zeit

\[ \begin{align*} y &= -\frac{g}{2} t^2 + v_0 \cdot \sin{\alpha} \cdot t + y_0 \\ x &= v_0 \cdot \cos{\alpha} \cdot t \end{align*} \]

Geschwindigkeit des Projektils über der Zeit

\[ \begin{align*} v_y &= -g \cdot t + v_0 \cdot \sin{\alpha} \hspace{5.5cm} \text{vertikale Geschwindigkeit} \\ v_x &= v_0 \cdot \cos{\alpha} \hspace{7.2cm} \text{horizontale Geschwindigkeit} \\ v \; \; &= \sqrt{ \left( -g \cdot t + v_0 \cdot \sin{\alpha} \right)^2 + \left( v_0 \cdot \cos{\alpha} \right)^2 } \hspace{1.7cm} \text{totale Geschwindigkeit} \end{align*} \]


Bahnkurve

\[ y = -\frac{g}{2} \frac{x^2}{v_{0}^2 \cos^2{\alpha}} + \tan{\alpha} \cdot x + y_0 \]


Wurfdauer

\[ t_w = \frac{v_{0} \cdot \sin{\alpha}}{g} + \sqrt{\frac{v_{0}^2 \cdot \sin^2{\alpha}}{g^2}+ \frac{2 y_0}{g}} \]

\(\hspace{1cm}\) Für den Spezialfall \(y_0=0\) ergibt sich

\[ t_w = \frac{2 \cdot v_{0} \cdot \sin{\alpha}}{g} \]


Wurfweite

\[ x_w = \frac{v_0^2 \cdot \cos{\alpha} \cdot \sin{\alpha}}{g} + v_0 \cdot \cos{\alpha} \cdot \sqrt{ \frac{v_0^2 \cdot \sin^2{\alpha}}{g^2} +\frac{2 y_0}{g}} \] \(\hspace{1cm}\) Für den Spezialfall \(y_0=0\) ergibt sich

\[ x_w = \frac{2 \cdot v_0^2 \cdot \cos{\alpha} \cdot \sin{\alpha}}{g} = \frac{v_0^2}{g} \cdot \sin{2 \alpha} \]


Maximale Höhe

\(\hspace{1cm}\) Die maximale Höhe wird bei

\[ x_{max} = \frac{v_0^2}{2g} \cdot \sin{2\alpha} \]

\(\hspace{1cm}\) erreicht. Die Höhe beträgt an dieser Stelle

\[ y_{max} = \frac{v_0^2}{2g} \cdot \sin^2{\alpha} + y_0 \]


R-Script zur Berechnung von Bahnkurven

Wir können die Berechnung der wichtigsten Größen mit Hilfe eines R-Scripts durchführen:

## Projectile motion
## Uwe Menzel 2023 


## Input 
g = 9.81       # gravitational acceleration, 9.81 if we are on Earth (change for other planets)
alpha = pi/4   # initial launch angle 
v0 = 5         # total initial velocity
y0 = 0         # initial height 


## Function calculating vertical displacement
y_coord <- function(x, v0, alpha, y0, g) {
  y = -g/2*x^2/v0^2/cos(alpha)^2 + tan(alpha)*x + y0
  return(y)
}


## Function calculating velocity components over time
velocities <- function(t, v0, alpha, g) {
  
  nr.points = 300   # change here 
  
  vx = v0 * cos(alpha) 
  vy = v0 * sin(alpha) - g*t
  v = sqrt(vx^2 + vy^2)
 
  # store in data frame
  velo = data.frame(t = numeric(nr.points), vx = numeric(nr.points), vy = numeric(nr.points), v = numeric(nr.points))
  velo$t = t
  velo$vx = rep(vx, nr.points) 
  velo$vy = vy
  velo$v = v 

  # plot
  matplot(velo[,1], velo[,-1], xlab = "time", ylab = "velocities", type = "l", lwd = 2, col = c("green","blue","red"), lty = c(2,2,1))
  legend("bottomleft", c("vx", "vy", "v"), col = c("green","blue","red"), lty = c(2,2,1), lwd = 2, cex = 0.8)
  abline(h = 0, col = "darkgrey", lty = 2)
  title("Velocities vs. time", font.main = 1)
  txt = paste("TOF =", signif(t_w, 4), "sec.")
  mtext(txt, side = 3, col = "blue", cex = 0.8)    

  return(velo)
}


## Time of flight
t_w = v0 * sin(alpha)/g + sqrt( v0^2 * sin(alpha)^2/g^2 + 2*y0/g)


## Maximum horizontal distance
x_w = v0^2 * cos(alpha) * sin(alpha) / g + v0 * cos(alpha) * sqrt( v0^2 * sin(alpha)^2/g^2 + 2*y0/g  )


# distance of max height
x_max = v0^2/2/g*sin(2*alpha)

# max height
y_max = v0^2/2/g * sin(alpha)^2 + y0


## Trajectory
x = seq(0, x_w, length.out = 300)
y = y_coord(x, v0, alpha, y0, g)
plot(x,y, col = "blue", type = "l", main = "Trajectory", lwd = 2)

## Velocities
t = seq(0, t_w, length.out = 300)
vel <- velocities(t, v0, alpha, g)

head(vel)
##             t       vx       vy        v
## 1 0.000000000 3.535534 3.535534 5.000000
## 2 0.002410709 3.535534 3.511885 4.983306
## 3 0.004821418 3.535534 3.488236 4.966668
## 4 0.007232127 3.535534 3.464587 4.950087
## 5 0.009642836 3.535534 3.440938 4.933564
## 6 0.012053545 3.535534 3.417289 4.917099
## Create table containing trajectory parameters

param = c("g", "alpha", "v0", "y0", "t_w", "x_w", "x_max", "y_max")
val = c(g, alpha*180/pi, v0, y0, t_w, x_w, x_max, y_max)   # show angle in degrees
result.frame = data.frame(parameter = param, value = val, stringsAsFactors = F)
result.frame
##   parameter     value
## 1         g  9.810000
## 2     alpha 45.000000
## 3        v0  5.000000
## 4        y0  0.000000
## 5       t_w  0.720802
## 6       x_w  2.548420
## 7     x_max  1.274210
## 8     y_max  0.637105


uwe.menzel@matstat.org