A.0.7 Vektor
Die Temperatur eines Teilchens auf einer Linealkante kann man beschreiben mit der Aussage: Die Teilchen-Temperatur ist gleich \(300 \, \mathrm{K}\) (Kelvin). Man verwendet eine Zahl mit Einheit. Mehr braucht man nicht.
Die Geschwindigkeit eines Teilchens auf einer Linealkante zu beschreiben, ist aufwändiger. Eine Zahl mit Einheit reicht nicht aus. Aber an kann sagen: Die Teilchen-Geschwindigkeit nach rechts ist gleich \(2 \tfrac{\mathrm{cm}}{\mathrm s}\) (Zentimeter pro Sekunde). Dazu äquivalent ist die Aussage: Die Teilchen-Geschwindigkeit nach links ist gleich \(-2 \tfrac{\mathrm{cm}}{\mathrm s}\).
Weil die Teilchen-Geschwindigkeit vektorwertig ist, braucht man eine Richtungsangabe. Um die Geschwindigkeit eines Teilchens auf einem Tisch (2D statt 1D) zu beschreiben, muss man zwei Bezugsrichtungen festlegen. Als erste Bezugsrichtung kann man z.B. „nach rechts“ festlegen. Und als zweite Bezugsrichtung kann man „nach oben“ festlegen. Die beiden Bezugsrichtungen bilden zusammen ein Bezugssystem.
Wenn sich ein Teilchen von links unten nach rechts oben bewegt, dann gilt für die Komponenten der Teilchen-Geschwindigkeit: Die Komponente „nach rechts“ ist positiv. Und die Komponente „nach oben“ ist auch positiv. Dies gilt aber nur für dieses Bezugssystem. Jemand, der ein anderes Bezugssystem verwendet, misst für dieselbe Teilchen-Geschwindigkeit andere Komponenten.
Vektor-Komponenten sind abhängig vom Bezugssystem. Und wenn man die Komponenten in einem Bezugssystem kennt, kann man daraus die Komponenten desselben Vektors in einem anderen Bezugssystem berechnen.
Die Umrechnung zwischen Komponenten in verschiedenen Bezugssystemen nennt man die Passive Transformation von Vektor-Komponenten. Und darum geht es hier. Und eine Passive Transformation gibt es auch für Tensor-Komponenten, denn um einen Tensor zahlenmäßig zu beschreiben, braucht man auch ein Bezugssystem - genau wie bei einem Vektor.
Videos
Aktive Transformation
Merkzettel: Aktiv = 1 Bezugssystem, 2 Vektoren, Pfeildrehung α
Es gibt:
das \(\left(x, y\right)\)-System
den Vektor \(\boldsymbol v\) und den Vektor \(\boldsymbol v'\)
den Winkel \(\alpha\), um den \(\boldsymbol v'\) relativ zu \(\boldsymbol v\) gedreht ist
\(\begin{bmatrix} v_x \\ v_y \end{bmatrix}\): Die \(\left(x, y\right)\)-Komponenten des Vektors
\(\begin{bmatrix} v'_x \\ v'_y \end{bmatrix}\): Die \((x, y)\)-Komponenten des gedrehten Vektors
Beispiel 1
Beispiel 2
Beispiel 3
Passive Transformation
![../../../_images/comic.png](../../../_images/comic.png)
Oben: Transformation der Basisvekoren. Unten: Der rote Vektor kann dargestellt werden im grünen oder im blauen Bezugssystem. Die Formeln zur Umrechnung ist die Passive Transformation.
Merkzettel: Passiv = 2 Bezugssysteme, 1 Vektor, Pfeildrehung -φ
Es gibt:
das \(\left(x, y\right)\)-System,
das \(\left(\bar x, \bar y\right)\)-System
den Winkel \(\varphi\), um den das \(\left(\bar x, \bar y\right)\)-System relativ zum \((x, y)\)-System gedreht ist
\(\begin{bmatrix} v_x \\ v_y \end{bmatrix}\): Die \(\left(x, y\right)\)-Komponenten des Vektors
\(\begin{bmatrix} v_{\bar x} \\ v_{\bar y} \end{bmatrix}\): Die \((\bar x, \bar y)\)-Komponenten des Vektors
Beispiel 1
Beispiel 2
Beispiel 3
Passive vs. Aktive Transformation
Gleiche Komponenten, aber andere Bedeutung
Für \(\alpha=-\varphi\) bzw. gleichbedeutend \(\varphi = - \alpha\) gilt:
Eine passive Transformation mit \(\varphi=30^\circ\) führt auf dieselben transformierten Komponenten wie eine aktive Transformation (desselben Vektors) mit \(\alpha = -30^\circ\).
Das Bezugssystem um 30 Grad entgegen dem Uhrzeigersinn zu drehen führt auf dieselben transformierten Komponenten wie den Vektor um 30 Grad im Uhrzeigersinn zu drehen.
Die transformierten Komponenten sind hierbei zahlenmäßig gleich - haben aber verschiedene Bedeutungen.
Web-App
Für Passive Transformation: Oben die Komponenten \((v_x, v_y)\) eintragen als einheitenlose Größen. Falls z.B. ein Vektor untersucht werden soll mit den Komponenten \(\left(3\,\tfrac{\mathrm{m}}{\mathrm{s}}, 4 \,\tfrac{\mathrm{m}}{\mathrm{s}}\right)\): Dann würde man oben eintragen: \((v_x, v_y) = (3, 4).\) Unten am Schieberegler den Winkel \(\varphi\) einstellen. Im Diagramm die transformierten Komponenten \((v_{\bar x}, v_{\bar y})\) ablesen. 360-Grad-Periodizität: Die Passive Transformation ist definiert für jeden beliebigen Winkel \(\varphi\). Es gilt für jedes beliebige \(n\in\mathbb{N}:\)Anleitung
Nachfolgend ein Programm, dass Sie ausführen können: Auf dem PC z.B. mit Anaconda. Im Browser (online) in drei Schritten: Copy: Source Code in die Zwischenablage kopieren. Paste: Source Code als Python-Notebook einfügen z.B. auf: JupyterLab oder Play: Ausführen. Statt SymPy lieber anderes CAS (Computeralgebrasystem) verwenden? Eine Auswahl verschiedener CAS gibt es hier.SymPy
from sympy import pi, Matrix, cos, sin, pprint
deg = pi/180
# Rounding:
def iso_round(x, pv):
try:
x = float(x)
tmp = round(x, pv)
except TypeError:
from functools import partial
func = partial(round, ndigits = pv)
tmp = x.applyfunc(func)
return tmp
# ---
# Output precision:
prec = 2
pprint("\n(vx, vy):")
v = Matrix([3, 4])
pprint(v)
pprint("\nAngle / deg:")
angle = 40 * deg
tmp = angle / deg
tmp = iso_round(tmp,prec)
pprint(tmp)
c, s = cos(angle), sin(angle)
passive=False
passive=True
if passive:
pprint("\n(vx̄, vȳ):")
R = Matrix([[c, s],[-s, c]])
else:
pprint("\n(v'x, v'y):")
R = Matrix([[c, -s],[s, c]])
tmp = R*v
tmp = iso_round(tmp,prec)
pprint(tmp)
(vx, vy):
⎡3⎤
⎢ ⎥
⎣4⎦
Angle / deg:
40.0
(vx̄, vȳ):
⎡4.87⎤
⎢ ⎥
⎣1.14⎦
3D Elementar-Drehungen
Es geht um Drehungen in 3D für den Spezialfall, dass um eine der 3 Achsen des Bezugssystems gedreht wird.
Viele Drehungen in der Technik lassen sich durch solche Drehungen oder die Hintereinanderschaltung solcher Drehungen beschreiben.
Weitere Infos zur Beschreibung von Drehungen siehe hier.
Weitere Infos zu Drehmatrizen siehe Wikipedia.
Drehachse \(z = \bar z\)
![../../../_images/trafo_vector_3D_z.png](../../../_images/trafo_vector_3D_z.png)
Drehachse \(x = \bar x\)
![../../../_images/trafo_vector_3D_x.png](../../../_images/trafo_vector_3D_x.png)
Zyklisches Vertauschen \((x,y,z)\mapsto(y, z, x)\) in (z) liefert:Details
Drehachse \(y = \bar y\)
![../../../_images/trafo_vector_3D_y.png](../../../_images/trafo_vector_3D_y.png)
Zyklisches Vertauschen \((x,y,z)\mapsto(z, x, y)\) in (z) liefert:Details
Programm
Nachfolgend ein Programm, dass Sie ausführen können: Auf dem PC z.B. mit Anaconda. Im Browser (online) in drei Schritten: Copy: Source Code in die Zwischenablage kopieren. Paste: Source Code als Python-Notebook einfügen z.B. auf: JupyterLab oder Play: Ausführen. Statt SymPy lieber anderes CAS (Computeralgebrasystem) verwenden? Eine Auswahl verschiedener CAS gibt es hier.SymPy
from sympy.physics.units import kg, m, s
from sympy import pi, S, Matrix, cos, sin, pprint, var
# Units:
N = kg*m/s**2
k, M, G = 10**3, 10**6, 10**9
kN = k*N
Pa = N/m**2
MPa, GPa = M*Pa, G*Pa
deg = pi/180
half = S(1)/2
# Rounding:
def iso_round(x, pv):
try:
x = float(x)
tmp = round(x, pv)
except TypeError:
from functools import partial
func = partial(round, ndigits = pv)
tmp = x.applyfunc(func)
return tmp
# Header ends here.
# https://en.wikipedia.org/wiki/Rotation_formalisms_in_three_dimensions
# https://en.wikipedia.org/wiki/Rotation_matrix
# https://en.wikipedia.org/wiki/Rodrigues%27_rotation_formula
def get_R(axis, angle):
c, s = cos(angle), sin(angle)
if axis == "z":
R = Matrix([
[ c, s, 0],
[-s, c, 0],
[ 0, 0, 1],
])
elif axis == "x":
R = Matrix([
[ 1, 0, 0],
[ 0, c, s],
[ 0,-s, c],
])
elif axis == "y":
R = Matrix([
[ c, 0,-s],
[ 0, 1, 0],
[ s, 0, c],
])
else:
axis /= axis.norm()
e1, e2, e3 = axis[0], axis[1], axis[2]
K = Matrix([
[ 0, -e3, e2],
[ e3, 0, -e1],
[ -e2, e1, 0],
])
R = eye(3) - s*K + (1 - c)*K*K
return R
pprint("\nInput:")
pprint("\nRotation angle:")
angle = 30 *deg
pprint(angle)
pprint("\nRotation axis:")
axis = "y"
# axis = Matrix([0,4,0])
pprint(axis)
pprint("\n(x,y,z)-Comp. of Vector:")
v = Matrix([3,4,5])
pprint(v)
pprint("\n(x,y,z)-Comp. of Tensor:")
Txx, Txy, Txz = 666, 0, 0
Tyy, Tyz = 864, 0
Tzz = 216
T = Matrix([
[Txx, Txy, Txz],
[Txy, Tyy, Tyz],
[Txz, Tyz, Tzz]
])
pprint(T)
pprint("\nOutput:")
pprint("\nRotation-Matrix:")
R = get_R(axis, angle)
pprint(R)
pprint("\n(x̄,ȳ,z̄)-Comp. of Vector:")
v̄ = R*v
tmp = v̄
tmp = iso_round(tmp, 2)
pprint(tmp)
pprint("\n(x̄,ȳ,z̄)-Comp. of Tensor:")
Tbar = R*T*R.transpose()
tmp = Tbar
tmp = iso_round(tmp, 2)
pprint(tmp)
Input:
Rotation angle:
π
─
6
Rotation axis:
y
(x,y,z)-Comp. of Vector:
⎡3⎤
⎢ ⎥
⎢4⎥
⎢ ⎥
⎣5⎦
(x,y,z)-Comp. of Tensor:
⎡666 0 0 ⎤
⎢ ⎥
⎢ 0 864 0 ⎥
⎢ ⎥
⎣ 0 0 216⎦
Output:
Rotation-Matrix:
⎡√3 ⎤
⎢── 0 -1/2⎥
⎢2 ⎥
⎢ ⎥
⎢ 0 1 0 ⎥
⎢ ⎥
⎢ √3 ⎥
⎢1/2 0 ── ⎥
⎣ 2 ⎦
(x̄,ȳ,z̄)-Comp. of Vector:
⎡0.1 ⎤
⎢ ⎥
⎢ 4 ⎥
⎢ ⎥
⎣5.83⎦
(x̄,ȳ,z̄)-Comp. of Tensor:
⎡553.5 0 194.86⎤
⎢ ⎥
⎢ 0 864 0 ⎥
⎢ ⎥
⎣194.86 0 328.5 ⎦
Infinitesimale Drehung
Falls gilt:
entstehen keine großen Fehler, wenn die Kosinusfunktion bzw. die Sinusfunktion ersetzt durch deren Linearisierungen (bei \(\varphi=0\)):
Wenn man diese Näherungen in einer Drehmatrix verwendet, spricht man einer Infinitesimalen Drehung.
Inverse Matrix
In den o.g. Beispielen sind die grünen Komponenten gegeben. Und die blauen Komponenten werden berechnet. Beispiel:
Wenn die blauen Komponenten gegeben sind und die grünen daraus berechnet werden, muss diese Gleichung von links mit \(R_\varphi^{-1}\) (nämlich mit der Inversen von \(R_\varphi\)) multipliziert werden:
Bei Drehmatrizen ist die Inverse gleich der Transponierten, so dass:
Vertauschen der Seiten und Einsetzen der Transponierten liefert:
Vektor-Komponente
Eine Vektor-Komponente ist der Anteil eines Vektors in einer bestimmten Richtung.
Diese Richtung wird definiert mit einem Einheitsvektor (entlang dieser Richtung).
Um eine Vektor-Komponenten zu berechnen, braucht man:
ein Bezugssystem, z.B. das \((x,y,z)\)-System.
die Komponenten des Vektors (bezüglich Bezugssystem): \(v_x, v_y, v_z\).
die Komponenten des Einheitsvektors (bezüglich Bezugssystem).
\(x\)- und \(y\)-Komponente
Sei die Richtung die \(x\)-Achse des Bezugssystems mit den \((x,y,z)\)-Komponenten \((1, 0, 0)\). Dann gilt für die Vektor-Komponente \(v_x\) in dieser Richtung:
\[\begin{split}v_x &= \begin{bmatrix}1 & 0 & 0 \end{bmatrix} \begin{bmatrix} v_x \\ v_y \\ v_z \end{bmatrix} \\ &= 1 v_x + 0 v_y + 0 v_z\end{split}\]
2D
In 2D z.B. in der \((x,y)\)-Ebene:
Sei die Richtung die \(y\)-Achse des Bezugssystems mit den \((x,y,z)\)-Komponenten \((0, 1, 0)\). Dann gilt für die Vektor-Komponente \(v_y\) in dieser Richtung:
\(\bar x\)- und \(\bar y\)-Komponente
Sei die Richtung die \(\bar x\)-Richtung. Weil \(\bar x\) um den Winkel \(\varphi\) relativ zu \(x\) gedreht ist, hat ein Einheitsvektor in \(\bar x\)-Richtung die \((x,y,z)\)-Komponenten \((c_\varphi, s_\varphi, 0)\). Und für die Vektor-Komponente \(v_{\bar x}\) in dieser Richtung gilt:
2D
In 2D z.B. in der \((x,y)\)-Ebene:
Sei die Richtung die \(\bar y\)-Richtung. Weil \(\bar y\) um den Winkel \(\varphi\) relativ zu \(y\) gedreht ist, hat ein Einheitsvektor in \(\bar y\)-Richtung die \((x,y,z)\)-Komponenten \((-s_\varphi, c_\varphi, 0)\). Und für die Vektor-Komponente \(v_{\bar y}\) in dieser Richtung gilt:
2D
In 2D z.B. in der \((x,y)\)-Ebene:
Dieselben Formeln werden in der Passiven Transformation verwendet.