M.2.F

Gegeben

../../../_images/M.2.F_1.png

Gegeben: Die Winkel \(\varphi\) und \(\alpha\) und die \((x,y)\)-Komponenten des roten Vektors \(\boldsymbol v\).

Gegeben:

  • Das grüne \((x,y)\)-Bezugssystem sowie das blaue \((\bar x,\bar y)\)-Bezugssystem, welches gegenüber dem grünen Bezugssystem gedreht ist um den Winkel \(\varphi.\)

  • Der rote Vektor \(\boldsymbol v\) über seine \((x,y)\)-Komponenten \((v_x, v_y).\)

  • Der blaue Vektor \(\boldsymbol v'\) , welcher gegenüber dem roten Vektor gedreht ist um den Winkel \(\alpha.\)

Berechnen Sie für die Beispiele unten:

  • Die \((\bar x,\bar y)\)-Komponenten des roten Vektors , und zwar gerundet auf \(0{,}01\):

    \begin{align*} \begin{bmatrix} v_{\bar x}\\ v_{\bar y} \end{bmatrix} &\stackrel{\scriptscriptstyle{0{,}01}}{\approx} \begin{bmatrix} \ldots \\ \ldots \end{bmatrix} \end{align*}
  • Die \((x,y)\)-Komponenten des blauen Vektors , und zwar gerundet auf \(0{,}01\):

    \begin{align*} \begin{bmatrix} v'_{x}\\ v'_{y} \end{bmatrix} &\stackrel{\scriptscriptstyle{0{,}01}}{\approx} \begin{bmatrix} \ldots \\ \ldots \end{bmatrix} \end{align*}

a)

../../../_images/M.2.F_1.png

Sei:

\[\begin{split}\varphi &= 10^\circ \\ \alpha &= 20^\circ \\ \begin{bmatrix} v_x\\ v_y \end{bmatrix} &\stackrel{\scriptscriptstyle{0{,}01}}{\approx} \begin{bmatrix} 3\\ 4 \end{bmatrix}\end{split}\]

Lösung

Passive Transformation:

\begin{align*} \begin{bmatrix} v_{\bar x}\\ v_{\bar y} \end{bmatrix} &= \begin{bmatrix} c_\varphi & s_\varphi \\ -s_\varphi & c_\varphi \end{bmatrix} \begin{bmatrix} v_x\\ v_y \end{bmatrix} \\ &= \begin{bmatrix} c_{10^\circ} & s_{10^\circ} \\ -s_{10^\circ} & c_{10^\circ} \end{bmatrix} \begin{bmatrix} 3\\ 4 \end{bmatrix} \\ &\stackrel{\scriptscriptstyle{0{,}01}}{\approx} \begin{bmatrix} 3{,}65 \\ 3{,}42 \end{bmatrix} \end{align*}

Aktive Transformation:

\begin{align*} \begin{bmatrix} v'_{x}\\ v'_{y} \end{bmatrix} &= \begin{bmatrix} c_\alpha & -s_\alpha \\ s_\alpha & c_\alpha \end{bmatrix} \begin{bmatrix} v_x \\ v_y \end{bmatrix} \\ &= \begin{bmatrix} c_{20^\circ} & -s_{20^\circ} \\ s_{20^\circ} & c_{20^\circ} \end{bmatrix} \begin{bmatrix} 3\\ 4 \end{bmatrix} \\ &\stackrel{\scriptscriptstyle{0{,}01}}{\approx} \begin{bmatrix} 1{,}45 \\ 4{,}78 \end{bmatrix} \end{align*}

b)

../../../_images/M.2.F_2.png

Sei:

\[\begin{split}\varphi &= -90^\circ \\ \alpha &= 90^\circ \\ \begin{bmatrix} v_x\\ v_y \end{bmatrix} &\stackrel{\scriptscriptstyle{0{,}01}}{\approx} \begin{bmatrix} 3\\ 4 \end{bmatrix}\end{split}\]

Lösung

Passive Transformation:

\begin{align*} \begin{bmatrix} v_{\bar x}\\ v_{\bar y} \end{bmatrix} &= \begin{bmatrix} c_{-90^\circ} & s_{-90^\circ} \\ -s_{-90^\circ} & c_{-90^\circ} \end{bmatrix} \begin{bmatrix} 3\\ 4 \end{bmatrix} \\ &= \begin{bmatrix} -4 \\ 3 \end{bmatrix} \end{align*}

Aktive Transformation:

\begin{align*} \begin{bmatrix} v'_{x}\\ v'_{y} \end{bmatrix} &= \begin{bmatrix} c_{90^\circ} & -s_{90^\circ} \\ s_{90^\circ} & c_{90^\circ} \end{bmatrix} \begin{bmatrix} 3\\ 4 \end{bmatrix} \\ &= \begin{bmatrix} -4 \\ 3 \end{bmatrix} \end{align*}

Egal, ob man das Bezugssystem nach rechts dreht um 90 Grad oder den Vektor nach links dreht um 90 Grad: Die transformierten Komponenten sind gleich, obwohl die Komponenten verschiedene Bedeutungen haben: Bei der passiven Transformation geht es um die Komponenten des roten Vektors bzgl. dem blauen System. Bei der aktiven Transformation geht es um die Komponenten des blauen Vektors bzgl. dem grünen System.

SymPy

Source Code eines Programms dazu:

from sympy.physics.units import *
from sympy import *

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

# ---

prec = 2

def print_angle(angle):
    pprint("Angle / deg:")
    tmp = angle
    tmp /= deg
    tmp = iso_round(tmp,prec)
    pprint(tmp)
    

def get_R(angle, passive=True):
    c, s = cos(angle), sin(angle)
    R = Matrix([[c, s],[-s, c]])
    if passive == True:
        pprint("\nPassive Transformation")
        print_angle(angle)
        return R
    else:
        pprint("\nActive Transformation")
        print_angle(angle)
        return R.transpose()

pprint("\nv:")
v = Matrix([3, 4])
pprint(v)

phi = 100 * deg
R = get_R(phi, passive=True)
pprint("\n(vx\u0304, vy\u0304):")
tmp = R*v
tmp = iso_round(tmp,prec)
pprint(tmp)

alpha = 100 * deg
R = get_R(alpha, passive=False)
pprint("\n(v'x, v'y):")
tmp = R*v
tmp = iso_round(tmp,prec)
pprint(tmp)

Programm ausführen? Dazu:

  1. Copy: Source Code in die Zwischenablage kopieren.

  2. Paste: Source Code ins Eingabefeld hinter [ ]: einfügen.

  3. Play: Knopf ▶ drücken.