Vektoren, Kinematik & Python

Uniforme Bewegung bedeutet, dass man sich mit konstanter Geschwindigkeit fortbewegt.

Bewegt man sich während der Zeit $t$ mit der konstanten Geschwindigkeit $v$, so legt man folgende Distanz zurück: $$s = v t$$

Uniforme Bewegung in 2 Dimensionen

Betrachtet man die Bewegung in 2 Dimensionen, so ist es am einfachsten, wenn man die Position und die Geschwindigkeiten als Vektor betrachtet:

$$\vec{s} = \begin{pmatrix}s_x \\ s_y \end{pmatrix}$$ $$\vec{v} = \begin{pmatrix}v_x \\ v_y \end{pmatrix}$$

Dabei nennt man …:

  • $v_x$ die $x-$Komponente des Geschwindigkeitsvektors $\vec{v}$.
  • $v_y$ die $y-$Komponente des Geschwindigkeitsvektors $\vec{v}$.

Ein Vektor hat immer sowohl eine Richtung als auch eine Länge. Die Länge berechnet man mit dem Satz von Pythagoras: $$v = |\vec{v}| = \sqrt{v_x^2 + v_y^2}$$

Wie beschreibt man nun die Bewegung eines Objekts in 2 Dimensionen? Dieses Objekt befinde sich zum Zeitpunkt $t=0$ am Ort $\vec{s_0} = \begin{pmatrix}s_x^0 \\ s_y^0 \end{pmatrix}$ und es bewege sich mit der Geschwindigkeit $\vec{v_0} = \begin{pmatrix}v_x^0 \\ v_y^0 \end{pmatrix}$. Die Position des Objekts ist dann gegeben durch:

$$\vec{s}(t) = \vec{s_0} + \vec{v_0}t$$

Beachte, dass die Position eine Funktion der Zeit ist: Je länger sich das bewegt, desto weiter ist es von seiner ursprünglichen Position $\vec{s}_0$ entfernt.

Beispiel

Machen wir ein Beispiel.

  • Ein Ball befinde sich anfangs (zum Zeitpunkt $t=0$) am Ort $\vec{s}_0 = \begin{pmatrix}5 \\ 2 \end{pmatrix}$. Dies bedeutet, dass sich der Ball an der Position $(5|2)$ im Koordinatensystem befindet.
  • Der Ball bewege er sich mit dem Geschwindigkeitsvektor $\vec{v} = \begin{pmatrix}-2 \\ 4 \end{pmatrix}$. Das bedeutet, dass sich der Ball um 2 Teile in die negative $x-$Richtung (nach links) und $4$ in die positive $y-$Richtung (nach oben in der Mathe, nach unten in Pygame) bewegt. Die Länge des Vektors ist $v = \sqrt{(-2)^2+4^2} = 5$, hat also die Geschwindigkeit $5$.

An welcher Position befindet man sich nach der $1$ Zeiteinheit , $2$ Zeiteinheiten oder $60$ Zeiteinheiten? Die Position ist gegeben durch: $$\vec{s}(t) = \vec{s_0} + \vec{v_0}t = \begin{pmatrix}5 \\ 2 \end{pmatrix} + \begin{pmatrix}-2 \\ 4 \end{pmatrix}t = \begin{pmatrix}5 - 2 t \\2 - 4 t \end{pmatrix}$$

Nach der Zeiteinheit $1$ befindet man sich also an der Position $\vec{s}(1) = \begin{pmatrix}3 \\-2 \end{pmatrix}$

Numpy ist eine Python-Library, die dafür konzipiert wurde, Mathematik zu betreiben. Die darin vorhandenen Numpy-Arrays sind dafür geeignet, Vektoren in Python darzustellen.

Das Erstellen eines solchen Numpy-Arrays geht ganz einfach: Nimm eine normale Liste L und wandle diese in ein solches Array um: np.array(L). Wichtig: Importiere dazu zuerst numpy wie folgt: import numpy as np.

Das oben aufgeführte Beispiel kann man in Numpy wie folgt aufsetzen:

s0 = np.array([5,2])
v0 = np.array([-2,4])
t = 6
s = s0 + v0*t

Seien v1 und v2 die Geschwindigkeitsvektoren kollidierender Bälle bevor sie kollidieren. Welche Geschwindigkeitsvektoren haben sie nach der Kollision? Diese sind gegeben durch eine Formel, welche du im folgenden Dossier findest: Dossier Kollision. Eine solche Kollision heisst elastische Kollision oder elastischer Stoss.

Tipp: Am einfachsten arbeitet man mit Numpy-Arrays (z.B. v1 = np.array([3,-7])). Dies macht die Berechnung der neuen Geschwindigkeitsvektoren relativ einfach.

Quelle: https://en.wikipedia.org/wiki/Elastic_collision#Two-dimensional (letzte beiden Formeln des Anschnitts)

Eine Beschleunigung ist eine Änderung der Geschwindigkeit pro Zeit

$$a = \frac{\Delta v}{t}$$

wobei:

  • $\Delta v:$ Änderung der Geschwindigkeit, SI-Einheit $\frac{\text{m}}{\text{s}}$
  • $t:$ Zeit, in der Geschwindigkeit verändert wird, SI-Einheit $\text{t}$
  • $a$: Beschleunigung (acceleration), SI-Einheit: $\frac{\text{m}}{\text{s}^2}$

Eine Uniforme Beschleunigung ist einfach eine konstante Beschleunigung. Die Beschleunigung ist also immer gleich stark und verändert sich nicht mit der Zeit.

Uniforme Beschleunigung in 1D

Bewegung entlang der $x-$Achse:

  • $s_0:$ Position bei Beginn der Beschleunigung (zum Zeitpunkt $t=0$)
  • $v_0:$ Geschwindigkeit bei Beginn der Beschleunigung (zum Zeitpunkt $t=0$)
  • $a:$ Beschleunigung, mit der beschleunigt wird
  • $t:$ Zeit, in der Beschleunigt wird

Nachdem für die Zeit $t$ mit $a$ beschleunigt wurde, befindet man sich an der Position $s$ und hat Geschwindigkeit $v$, gegeben durch:

$$v(t) = v_0 + a t$$ $$s(t) = s_0 + v_0 t + \frac12 a t^2$$

Uniforme Beschleunigung in 2D

Ein Objekt befindet sich zum Zeitpunkt $t=0$ am Ort $\vec{s_0} = \begin{pmatrix}s_x^0 \\ s_y^0 \end{pmatrix}$ und bewegt sich mit der Geschwindigkeit $\vec{v_0} = \begin{pmatrix}v_x^0 \\ v_y^0 \end{pmatrix}$. Das Objekte werde jetzt durch den Beschleunigungsvektor $\vec{a} = \begin{pmatrix}a_x \\ a_y \end{pmatrix}$ beschleunigt. Dann verändern sich Geschwindigkeit und Position wie folgt mit der Zeit:

$$\vec{v}(t) = \vec{v_0} + \vec{a}t$$ $$\vec{s}(t) = \vec{s_0} + \vec{v_0}t + \frac12 \vec{a} t^2$$

Lässt man etwas fallen, so wird es mit der Beschleunigung $g = 9.81\text{m}/\text{s}^2$ nach unten beschleunigt. Da diese Beschleunigung sehr wichtig ist, hat sie einen eigenen Namen erhalten und man schreibt typischerweise $g$ anstelle von $a$. Auf der Erdoberfläche ist die Gravitationsbeschleunigung in etwa konstant, weshalb man guten Gewissens bei der Gravitation von ein uniformen Beschleunigung sprechen kann.

In 2 Dimensionen beschreibt man die Gravitation mit dem folgenden Vektor: $$\vec{g} = \begin{pmatrix}0 \\ - 9.81\text{m}/\text{s}^2 \end{pmatrix}$$

Beachte: Hier wird die übliche Konvention in Physik und Mathematik verwendet, dass nach oben durch die positive $y-$Richtung dargestellt wird. In Pygame ist dies anders. Dort sollte der Gravitationsvektor z.B. wie folgt aussehen: g = np.array([0,1]). Beachte, dass der genaue Zahlenwert nicht relevant ist und durch ausprobieren eingestellt werden sollte.

Ganz wichtig: Eine Änderung der Geschwindigkeit in eine Richtung tritt nur dann auf, wenn in diese Richtung eine Beschleunigung wirkt. Beispiele:

  • Die Gravitation wirke in die y-Richtung: $\vec{g} = \begin{pmatrix}0 \\ - 9.81\text{m}/\text{s}^2 \end{pmatrix}$. Damit hat sie nur einen Einfluss auf die $y-$Komponente eines Geschwindigkeitsvektors. Ein Ball habe zum Zeitpunkt $t = 0$ den Geschwindigkeitsvektor $\vec{v} = \begin{pmatrix}2 \\ 3 \end{pmatrix}$. Der Ball bewegt sich also nach rechts oben, allerdings mehr nach oben als nach rechts. Die Gravitation beeinflusst also nur die $y-$Komponente: Zu Beginn ist sie $3$ und nimmt dann stetig ab bis sie Null ist (höchster Punkt der Flugbahn). Danach nimmt sie weiter ab und wird also negativ: Der Ball bewegt sich jetzt nach unten. Je länger man wartet, desto schneller bewegt es sich nach unten. Das Ganze hat aber keinen Einfluss auf die $x-$Komponente des Geschwindigkeitsvektors; diese ist und bleibt $2$.
  • talit/python_kinematik_vektoren.1612990386.txt.gz
  • Zuletzt geändert: 2021-02-10 20:53
  • von sca