Tensor-Komponenten

Beispiel-Aufgaben

  • Passive Transformation: 2.2.C

  • Aktive Transformation: 2.2.E

Videos

../../../_images/tensor-trafo_all.png

Passive Transformation (links) und aktive Transformation (rechts).

Symbole

Winkel

zählt pos. um

zeigt Wink.-pos. v.

relativ zu

\(\varphi\)

\(z=\bar z\)

\((\bar x, \bar y)\)

\((x, y)\)

\(\alpha\)

\(z=\bar z\)

\(\boldsymbol{T}'\)

\(\boldsymbol T\)

Tensor

\((x,y)\)-Komp.

\((\bar x, \bar y)\)-Komp.

\(\boldsymbol T\)

\(\left( T_{xx} , T_{xy}, T_{yy} \right)\)

\(\left(T_{\bar x \bar x}, T_{\bar x\bar y}, T_{\bar y\bar y} \right)\)

\(\boldsymbol T'\)

\(\left( T'_{xx}, T'_{xy}, T'_{yy} \right)\)

nicht definiert

Passive Transformation

Passive Transformation = 2 Bezugssysteme & 1 Tensor

  • 2 Bezugssysteme:

    • \(\left(x, y\right)\)-System.

    • \(\left(\bar x, \bar y\right)\)-System ist gedreht relativ zum \((x, y)\)-System um den Winkel \(\varphi.\)

  • 1 Tensor:

    • Tensor \(\boldsymbol T.\)

  • Tensor-Komponenten und Transformation:

    • \(\left(T_{xx}, T_{xy}, T_{yy} \right)\): \(\left(x, y\right)\)-Komponenten des Tensors.

    • \(\left( T_{\bar x \bar x}, T_{\bar x\bar y}, T_{\bar y\bar y} \right)\): \((\bar x, \bar y)\)-Komponenten des Tensors.

    • Transformation = Umrechnungs-Formel:

      \begin{align} \label{trafo_tensor_eq_passive_matrix} \begin{bmatrix} T_{\bar x \bar x} & T_{\bar x\bar y} \\ \mathsf{sym} & T_{\bar y\bar y} \end{bmatrix} = R_\varphi \begin{bmatrix} T_{xx} & T_{xy} \\ \mathsf{sym} & T_{yy} \end{bmatrix} R_\varphi^{\mathsf T} \tag{1} \end{align}

      mit \(R_\varphi = \begin{bmatrix}c_\varphi & s_\varphi \\-s_\varphi & c_\varphi\end{bmatrix}\) und \(R_\varphi^{\mathsf T}\) als Transponierte von \(R_\varphi\).

Aktive Transformation

Aktive Transformation = 1 Bezugssystem & 2 Tensoren

  • 1 Bezugssystem:

    • \(\left(x, y\right)\)-System.

  • 2 Tensoren:

    • Tensor \(\boldsymbol T\).

    • Tensor \(\boldsymbol T'\) ist gedreht relativ zum Tensor \(\boldsymbol T\) um den Winkel \(\alpha.\)

  • Tensor-Komponenten und Transformation:

    • \(\left(T_{xx}, T_{xy}, T_{yy} \right)\): \(\left(x, y\right)\)-Komponenten des Tensors \(\boldsymbol T.\)

    • \(\left(T'_{xx}, T'_{xy}, T'_{yy} \right)\): \((x, y)\)-Komponenten des gedrehten Tensors \(\boldsymbol T'\).`

    • Transformation = Umrechnungs-Formel:

      \begin{align} \begin{bmatrix} T'_{xx} & T'_{xy} \\ \mathsf{sym} & T'_{yy} \end{bmatrix} = R_\alpha \begin{bmatrix} T_{xx} & T_{xy} \\ \mathsf{sym} & T_{yy} \end{bmatrix} R_\alpha^{\mathsf T} \tag{1'} \end{align}

      mit \(R_\alpha = \begin{bmatrix}c_\alpha & -s_\alpha \\s_\alpha & c_\alpha\end{bmatrix}\) und \(R_\alpha^{\mathsf T}\) als Transponierte von \(R_\alpha\).

Passive vs. Aktive Transformation

Gleiche Komponenten, aber andere Bedeutung

Für \(\alpha=-\varphi\) bzw. gleichbedeutend \(\varphi = - \alpha\) gilt:

\[\begin{split}\begin{bmatrix} T_{\bar x \bar x} & T_{\bar x\bar y} \\ \mathsf{sym} & T_{\bar y\bar y} \end{bmatrix} = \begin{bmatrix} T'_{xx} & T'_{xy} \\ \mathsf{sym} & T'_{yy} \end{bmatrix}\end{split}\]
  • 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 Tensor um 30 Grad im Uhrzeigersinn zu drehen.

  • Die transformierten Komponenten sind hierbei zahlenmäßig gleich - haben aber verschiedene Bedeutungen.

Visualisierung für 2D = Mohrscher Kreis

Passive Transformation

Ausgangspunkt: Gleichung (1). Ausführen der Matrix-Multiplikationen und Verwendung der Abkürzungen:

\[\begin{split}\bar{T} &= \tfrac12 \left(T_{xx} + T_{yy}\right)\\ \tilde T &= \tfrac 12 \left( T_{xx} - T_{yy}\right)\end{split}\]

führt auf:

\begin{align} \begin{bmatrix} T_{\bar x \bar x} & T_{\bar x\bar y} \\ \mathsf{sym} & T_{\bar y\bar y} \end{bmatrix} &= \begin{bmatrix} T_{xx} c_\varphi^2 + T_{xy} s_{2\varphi} + T_{yy} s_\varphi^2 & - \tilde T s_{2\varphi} + T_{xy} c_{2\varphi}\\ \mathsf{sym} & T_{xx} s_\varphi^2 - T_{xy} s_{2\varphi} + T_{yy} c_\varphi^2 \end{bmatrix} \\ &= \begin{bmatrix} \bar{T} + \tilde T c_{2\varphi} + T_{xy} s_{2\varphi} & - \tilde T s_{2\varphi} + T_{xy} c_{2\varphi}\\ \mathsf{sym} & \bar{T} - \tilde T c_{2\varphi} - T_{xy} s_{2\varphi} \end{bmatrix} \end{align}

\(T_{\bar x \bar x}\) und \(T_{\bar x \bar y}\) aus dieser Gleichung anders notiert - nämlich zusammengefasst in einer Spaltenmatrix:

\begin{align} \label{trafo_tensor_eq_passive_eqns} \begin{bmatrix} T_{\bar x \bar x} \\ T_{\bar x\bar y} \end{bmatrix} &= \begin{bmatrix} \bar{T} \\ 0 \end{bmatrix} + \underbrace{ \begin{bmatrix} c_{2\varphi} & s_{2\varphi} \\ - s_{2\varphi} & c_{2\varphi} \end{bmatrix} }_{R_{2\varphi}} \begin{bmatrix} \tilde T\\ T_{xy} \end{bmatrix} \\ &= \begin{bmatrix} \bar{T} \\ 0 \end{bmatrix} + R_{2\varphi} \begin{bmatrix} \tilde T\\ T_{xy} \end{bmatrix} \tag{2} \end{align}

\(T_{\bar y \bar y}\) und \(- T_{\bar x \bar y}\) zusammengefasst in einer Spaltenmatrix:

\begin{align} \label{trafo_tensor_eq_passive_eqns_3} \begin{bmatrix} T_{\bar y \bar y} \\ - T_{\bar x\bar y} \end{bmatrix} &= \begin{bmatrix} \bar{T} \\ 0 \end{bmatrix} + \begin{bmatrix} -c_{2\varphi} & -s_{2\varphi} \\ s_{2\varphi} & - c_{2\varphi} \end{bmatrix} \begin{bmatrix} \tilde T\\ T_{xy} \end{bmatrix} \\ &= \begin{bmatrix} \bar{T} \\ 0 \end{bmatrix} + \underbrace{ \begin{bmatrix} c_{2\varphi+180^\circ} & s_{2\varphi+180^\circ} \\ -s_{2\varphi+180^\circ} & c_{2\varphi+180^\circ} \end{bmatrix} }_{R_{2\varphi + 180^\circ}} \begin{bmatrix} \tilde T\\ T_{xy} \end{bmatrix} \\ &= \begin{bmatrix} \bar{T} \\ 0 \end{bmatrix} + R_{2\varphi + 180^\circ} \begin{bmatrix} \tilde T\\ T_{xy} \end{bmatrix} \tag{3} \end{align}
  • Mit Gleichung (1) lassen sich alle drei transformierten Komponenten z.B. mit einem Programm berechnen.

  • Mit Gleichung (2) lassen sich die zwei Komponenten \(T_{\bar x \bar x}\) und \(T_{\bar x \bar y}\) z.B. mit einem Taschenrechner berechnen - oder aus einem Bild (am Mohrschen Kreis) ablesen bzw. schätzen.

  • Mit Gleichung (3) lassen sich zwei Komponenten \(T_{\bar y \bar y}\) und \(- T_{\bar x \bar y}\) z.B. mit einem Taschenrechner berechnen - oder aus dem Mohrschen Kreis ablesen bzw. schätzen.

Beispiel zu den Gleichungen (2) und (3)

Gegeben: Die \((x,y)\)-Komponenten:

\[\begin{split}\begin{bmatrix} T_{xx} & T_{xy} \\ \mathsf{sym} & T_{yy} \end{bmatrix} &= \begin{bmatrix} 2 & 1 \\ \mathsf{sym} & 1{,}5 \end{bmatrix}\end{split}\]

Gesucht: Die \((\bar x, \bar y)\)-Komponenten bei Passiver Transformation mit \(\varphi=30^\circ.\)

Aus den gegebenen Komponenten berechnen:

\[\begin{split}\begin{bmatrix} \bar{T} \\ 0 \end{bmatrix} &= \begin{bmatrix} 1{,}75\\ 0 \end{bmatrix} \\ \begin{bmatrix} \tilde T\\ T_{xy} \end{bmatrix} &= \begin{bmatrix} 0{,}25\\ 1 \end{bmatrix} \\ R_{2\varphi} &= \begin{bmatrix} c_{2\cdot 30^\circ} & s_{2\cdot 30^\circ} \\ - s_{2\cdot 30^\circ} & c_{2\cdot 30^\circ} \end{bmatrix} \\ &= \begin{bmatrix} \tfrac 1 2 & \tfrac{\sqrt 3}{2} \\ - \tfrac{\sqrt 3}{2} & \tfrac 1 2 \end{bmatrix}\end{split}\]

Gleichung (2) liefert damit:

\begin{align*} \begin{bmatrix} T_{\bar x \bar x} \\ T_{\bar x\bar y} \end{bmatrix} &= \begin{bmatrix} 1{,}75\\ 0 \end{bmatrix} + R_{2\varphi} \begin{bmatrix} 0{,}25\\ 1 \end{bmatrix} \\ &\stackrel{0{,}01}{\approx} \begin{bmatrix} 2{,}74\\ 0{,}28 \end{bmatrix} \end{align*}
../../../_images/passive_all.png

Bild zum Beispiel mit \(\varphi=30^\circ\): Die Tensor-Komponenten \(\left( T_{\bar x \bar x}, T_{\bar x\bar y}\right)\) bei Passiver Transformation lassen sich grafisch ermitteln: 1. Den grauen Vektor \(\left(\bar{T}, 0\right)\) zeichnen. 2. Den roten Vektor \(\left(\tilde T, T_{xy}\right)\) zeichnen. 3. Diesen Vektor drehen mit \(2\varphi\) im Uhrzeigersinn. 4. An der Spitze des gedrehten Vektors die Komponenten \(\left( T_{\bar x \bar x}, T_{\bar x\bar y}\right)\) ablesen. 5. Genau gegenüber von diesem Punkt die Komponenten \(\left( T_{\bar y \bar y}, - T_{\bar x\bar y}\right)\) ablesen.

SymPy

Nachfolgend ein Programm, dass Sie ausführen können:

  • Auf dem PC z.B. mit Anaconda.

  • Im Browser (online) in drei Schritten:

    1. Copy: Source Code in die Zwischenablage kopieren.

    2. Paste: Source Code als Python-Notebook einfügen z.B. auf:

    3. Play: Ausführen.

# -*- coding: utf-8 -*-
from sympy.physics.units import *
from sympy import *

# Units:
deg  =  pi/180


# Rounding:
import decimal
from decimal import Decimal as DX
from copy import deepcopy
def iso_round(obj, pv,
    rounding=decimal.ROUND_HALF_EVEN):
    import sympy
    """
    Rounding acc. to DIN EN ISO 80000-1:2013-08
    place value = Rundestellenwert
    """
    assert pv in set([
        # place value   #  round to:
        "1",              #  round to integer
        "0.1",            #  1st digit after decimal
        "0.01",           #  2nd
        "0.001",          #  3rd
        "0.0001",         #  4th
        "0.00001",        #  5th        
        "0.000001",       #  6th
        "0.0000001",      #  7th
        "0.00000001",     #  8th
        "0.000000001",    #  9th
        "0.0000000001",   # 10th
        ])
    objc = deepcopy(obj)
    try:
        tmp = DX(str(float(objc)))
        objc = tmp.quantize(DX(pv), rounding=rounding)
    except:
        for i in range(len(objc)):
            tmp = DX(str(float(objc[i])))
            objc[i] = tmp.quantize(DX(pv), rounding=rounding)
    return objc

# ---

def c_collect(x):
    retval = collect(x, cos(2*phi))
    return retval
def s_collect(x):
    retval = collect(x, sin(2*phi))
    return retval

Txx, Txy, Tyy = 2, 1, 1.5
quantities = True
quantities = False

var("Txx, Txy, Tyy")
var("phi")
Tb = var(u"T\u0304")
Tt = var(u"T\u0303")
c2p, s2p = var("c₂ᵩ, s₂ᵩ")

sub_list = [
    ((Txx + Tyy)/2, Tb),
    ((Txx - Tyy)/2, Tt),
    (cos(2*phi), var("c₂ᵩ") ),
    (sin(2*phi), var("s₂ᵩ")),
    ]

sub_list_q = [
    (phi, 30*deg),
    (Txx, 2),
    (Txy, 1),
    (Tyy, S(3)/2 ),
    ]

pprint("\n(x,y)-Comp's of T:")
T = Matrix([
    [Txx, Txy],
    [Txy ,Tyy]
    ])
pprint(T)

c, s = cos(phi), sin(phi)
c2, s2 = cos(2*phi), sin(2*phi)
R = Matrix([
    [c, s],
    [-s, c]]
    )
pprint("\nR₂ᵩ for φ=30°:")
R2 = Matrix([
    [c2, s2],
    [-s2, c2]]
    )
tmp = R2
tmp = tmp.subs(sub_list_q)
pprint(tmp)
tmp = iso_round(tmp,"0.01")
pprint(tmp)


pprint("\n(x̄,ȳ)-Comp's of T:")
Tb = R*T*R.transpose()
tmp = Tb.applyfunc(trigsimp)
tmp = tmp.applyfunc(c_collect)
tmp = tmp.applyfunc(s_collect)
tmp = tmp.subs(sub_list)
pprint(tmp)


pprint("\n(Tx̄x̄, Tx̄ȳ) and (Tȳȳ, -Tx̄ȳ):")
for v in [Matrix([Tb[0,0], Tb[0,1]]), Matrix([Tb[1,1], - Tb[0,1]])]:
    tmp = v
    if quantities:
        tmp = tmp.subs(sub_list_q)
        tmp = iso_round(tmp,"0.01")
    else: # symbols:
        tmp = tmp.applyfunc(trigsimp)
        tmp = tmp.applyfunc(c_collect)
        tmp = tmp.applyfunc(s_collect)
        tmp = tmp.subs(sub_list)
    pprint(tmp)



                  
(x,y)-Comp's of T:
⎡Txx  Txy⎤
⎢        ⎥
⎣Txy  Tyy⎦
              
R₂ᵩ for φ=30°:
⎡      √3 ⎤
⎢1/2   ── ⎥
⎢      2  ⎥
⎢         ⎥
⎢-√3      ⎥
⎢────  1/2⎥
⎣ 2       ⎦
⎡ 0.5   0.87⎤
⎢           ⎥
⎣-0.87  0.5 ⎦
                  
(x̄,ȳ)-Comp's of T:
⎡Txy⋅s₂ᵩ + T̃⋅c₂ᵩ + T̄    Txy⋅c₂ᵩ - T̃⋅s₂ᵩ   ⎤
⎢                                         ⎥
⎣  Txy⋅c₂ᵩ - T̃⋅s₂ᵩ    -Txy⋅s₂ᵩ - T̃⋅c₂ᵩ + T̄⎦
                           
(Tx̄x̄, Tx̄ȳ) and (Tȳȳ, -Tx̄ȳ):
⎡Txy⋅s₂ᵩ + T̃⋅c₂ᵩ + T̄⎤
⎢                   ⎥
⎣  Txy⋅c₂ᵩ - T̃⋅s₂ᵩ  ⎦
⎡-Txy⋅s₂ᵩ - T̃⋅c₂ᵩ + T̄⎤
⎢                    ⎥
⎣  -Txy⋅c₂ᵩ + T̃⋅s₂ᵩ  ⎦

Statt SymPy lieber anderes CAS (Computeralgebrasystem) verwenden? Eine Auswahl verschiedener CAS gibt es hier.

Aktive Transformation

Ausgangspunkt: Gleichung (1‘). 2 dieser 4 Gleichungen lauten:

\begin{align} \begin{bmatrix} T'_{xx} \\ T'_{xy} \end{bmatrix} &= \begin{bmatrix} \bar{T} \\ 0 \end{bmatrix} + \begin{bmatrix} c_{2\alpha} & -s_{2\alpha} \\ s_{2\alpha} & c_{2\alpha} \end{bmatrix} \begin{bmatrix} \tilde T\\ T_{xy} \end{bmatrix} \tag{2'} \end{align}

Beispiel zu Gleichung (2')

Gegeben: Die \((x,y)\)-Komponenten des Tensors \(\boldsymbol T\):

\[\begin{split}\begin{bmatrix} T_{xx} & T_{xy} \\ \mathsf{sym} & T_{yy} \end{bmatrix} &= \begin{bmatrix} 2 & 1 \\ \mathsf{sym} & 1{,}5 \end{bmatrix}\end{split}\]

Gesucht: Die \((x, y)\)-Komponenten von \(\boldsymbol T'\) bei Aktiver Transformation mit \(\alpha=45^\circ.\)

../../../_images/active.png

Bild zum Beispiel mit \(\alpha=45^\circ\):: Die Tensor-Komponenten bei Aktiver Transformation lassen sich grafisch ermitteln: 1. Den grauen Vektor \((\bar{T}, 0)\) zeichnen. 2. Den roten Vektor \((\tilde T, T_{xy})\) zeichnen. 3. Diesen Vektor drehen mit \(2\alpha\) entgegen dem Uhrzeigersinn. 4. An der Spitze des gedrehten Vektors die transformierten Komponenten \(( T'_{xx}, T'_{xy} ) = (0{,}75, 0{,}25 )\) ablesen.

Web-App

Anleitung

  • Oben die Komponenten \((T_{xx}, T_{xy}, T_{yy})\) eintragen als einheitenlose Größen. Falls z.B. ein Tensor untersucht werden soll mit den Komponenten \(\left(2\,\mathrm{Pa}, 1\,\mathrm{Pa}, \tfrac 3 2 \,\mathrm{Pa}\right)\): Dann würde man oben eintragen: \((T_{xx}, T_{xy}, T_{yy}) = (2, 1, 1.5).\)

  • Unten am Schieberegler den Winkel \(\varphi\) oder \(-\alpha\) (jeweils in Grad) einstellen.

  • Im Diagramm die Komponenten \((T_{\bar x \bar x}, T_{\bar x\bar y})\) oder \((T'_{xx}, T'_{xy})\) ablesen.

  • Es gilt für jedes beliebige \(n\in\mathbb{N}:\)

    \[T_{\bar y \bar y}(\varphi) = T_{\bar x \bar x}(\varphi + n \cdot 90^\circ)\]

    Darum lässt sich \(T_{\bar y \bar y}\) ablesen als \(T_{\bar x \bar x}\) für einen um 90 Grad größeren (oder kleineren) Winkel - also gegenüber auf dem Mohrschen Kreis. Beispiel:

    \[T_{\bar y \bar y}(10^\circ) = T_{\bar x \bar x}(-80^\circ)\]
  • Aktive Transformation: Auf dem Schieberegler einstellen: \(-\alpha / \mathrm{deg},\) also minus Alpha in Grad. Beispiel: Für eine Aktive Transformation mit \(\alpha = 30^\circ\), muss der Schieberegler stehen bei \(-30\), denn:

    \[\alpha = 30^\circ \quad \Leftrightarrow \quad -\alpha \,/ \, ^\circ = -30\]
  • 180-Grad-Periodizität: Passive und Aktive Transformation sind definiert für jeden beliebigen Winkel \(\varphi\) bzw. \(\alpha\). Denn es gilt für jedes beliebige \(n\in\mathbb{N}:\)

    \[\begin{split}T_{\bar x \bar x}(\varphi\pm n \cdot 180^\circ) &= T_{\bar x \bar x}(\varphi) \\ T_{\bar x \bar y}(\varphi\pm n \cdot 180^\circ) &= T_{\bar x \bar y}(\varphi) \\ T_{\bar y \bar y}(\varphi\pm n \cdot 180^\circ) &= T_{\bar y \bar y}(\varphi) \\ \\ T'_{xx}(\alpha\pm n \cdot 180^\circ) &= T'_{xx}(\alpha) \\ T'_{xy}(\alpha\pm n \cdot 180^\circ) &= T'_{xy}(\alpha) \\ T'_{yy}(\alpha\pm n \cdot 180^\circ) &= T'_{yy}(\alpha) \\\end{split}\]

    Beispiele:

    \[\begin{split}T_{\bar x \bar y}(100^\circ) &= T_{\bar x \bar y}(-80^\circ) \\ T'_{yy}(0^\circ) &= T'_{yy}(180^\circ)\end{split}\]

SymPy

Nachfolgend ein Programm, dass Sie ausführen können:

  • Auf dem PC z.B. mit Anaconda.

  • Im Browser (online) in drei Schritten:

    1. Copy: Source Code in die Zwischenablage kopieren.

    2. Paste: Source Code als Python-Notebook einfügen z.B. auf:

    3. Play: Ausführen.

# -*- coding: utf-8 -*-
from sympy.physics.units import *
from sympy import *

# Units:
(mm, cm)  =  ( m/1000, m/100 )
Newton    =  kg*m/s**2
kN        =  10**3*Newton
Pa        =  Newton/m**2
MPa       =  10**6*Pa
GPa       =  10**9*Pa
deg       =  pi/180
half      =  S(1)/2

# Rounding:
import decimal
from decimal import Decimal as DX
from copy import deepcopy
def iso_round(obj, pv,
    rounding=decimal.ROUND_HALF_EVEN):
    import sympy
    """
    Rounding acc. to DIN EN ISO 80000-1:2013-08
    place value = Rundestellenwert
    """
    assert pv in set([
        # place value   #  round to:
        "1",              #  round to integer
        "0.1",            #  1st digit after decimal
        "0.01",           #  2nd
        "0.001",          #  3rd
        "0.0001",         #  4th
        "0.00001",        #  5th
        "0.000001",       #  6th
        "0.0000001",      #  7th
        "0.00000001",     #  8th
        "0.000000001",    #  9th
        "0.0000000001",   # 10th
        ])
    objc = deepcopy(obj)
    try:
        tmp = DX(str(float(objc)))
        objc = tmp.quantize(DX(pv), rounding=rounding)
    except:
        for i in range(len(objc)):
            tmp = DX(str(float(objc[i])))
            objc[i] = tmp.quantize(DX(pv), rounding=rounding)
    return objc

# ---



def print_angle(angle):
    tmp = angle
    tmp /= deg
    tmp = iso_round(tmp,prec)
    print(tmp,end="")
    print("°")
    
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()

# Output precision:
prec = "0.01"

Txx, Txy, Tyy = 2, 1, 1.5

pprint("\n(x,y)-Comp's of T:")
T = Matrix([
    [Txx, Txy],
    [Txy ,Tyy]
    ])
pprint(T)

phi = 10 * deg

# Calculator:
# C2, S2 = cos(phi)**2, sin(phi)**2
# c2, s2 = cos(2*phi), sin(2*phi)
# T11 = Txx*C2 + Txy*s2 + Tyy*S2
# T12 = (Tyy - Txx)/2*s2 + Txy*c2
# T22 = Txx*S2 - Txy*s2 + Tyy*C2

R = get_R(phi, passive=True)

pprint("\n(x̄,ȳ)-Comp's of T:")
tmp = R*T*R.transpose()
tmp = iso_round(tmp,prec)
pprint(tmp)

alpha = 45 * deg
R = get_R(alpha, passive=False)
pprint("\n(x,y)-Comp's of T':")
tmp = R*T*R.transpose()
tmp = iso_round(tmp,prec)
pprint(tmp)

pprint("\nTm:")
Tm = (Txx + Tyy)/2
tmp = Tm
tmp = iso_round(tmp,prec)
pprint(tmp)

pprint("\nr:")
r = ( (Txx - Tyy) / 2 )**2 + Txy**2
r = sqrt(r)
tmp = r
tmp = iso_round(tmp,prec)
pprint(tmp)

pprint("\nTx̄x̄₁:")
T1 = Tm + r
tmp = T1
tmp = iso_round(tmp,prec)
pprint(tmp)

pprint("\nφ₁ / deg:")
T2 = Tm - r
tmp = atan(Txy/(Txx - T2))
tmp /= deg
tmp = iso_round(tmp,prec)
pprint(tmp)

pprint("\nTx̄x̄₂:")
T2 = Tm - r
tmp = T2
tmp = iso_round(tmp,prec)
pprint(tmp)

                  
(x,y)-Comp's of T:
⎡2   1 ⎤
⎢      ⎥
⎣1  1.5⎦
                          
Passive Transformation: φ:
10.00°
                  
(x̄,ȳ)-Comp's of T:
⎡2.33  0.85⎤
⎢          ⎥
⎣0.85  1.17⎦
                         
Active Transformation: α:
45.00°
                   
(x,y)-Comp's of T':
⎡0.75  0.25⎤
⎢          ⎥
⎣0.25  2.75⎦
   
Tm:
1.75
  
r:
1.03
     
Tx̄x̄₁:
2.78
         
φ₁ / deg:
37.98
     
Tx̄x̄₂:
0.72

Statt SymPy lieber anderes CAS (Computeralgebrasystem) verwenden? Eine Auswahl verschiedener CAS gibt es hier.

Andere Ebenen und 3D

Entsprechende Formeln lassen sich auch für die anderen Ebenen aufstellen. Hierbei wird zyklisch vertauscht.

Ebene

\(\varphi\) zählt pos. um

\((x,y)\)

\(z\)

\((y,z)\)

\(x\)

\((z,x)\)

\(y\)

Beispiel \((y,z)\)-Ebene

Passive und aktive Transformation:

\[\begin{split}\begin{bmatrix} T_{\bar y \bar y} & T_{\bar y\bar z} \\ \mathsf{sym} & T_{\bar z\bar z} \end{bmatrix} \! &= R_\varphi \begin{bmatrix} T_{yy} & T_{yz} \\ \mathsf{sym} & T_{zz} \end{bmatrix} R_\varphi^{\mathsf T} \\ \begin{bmatrix} T'_{yy} & T'_{yz} \\ \mathsf{sym} & T'_{zz} \end{bmatrix} &= R_\alpha \begin{bmatrix} T_{yy} & T_{yz} \\ \mathsf{sym} & T_{zz} \end{bmatrix} R_\alpha^{\mathsf T}\end{split}\]

Tensor-Komponente

  • Eine Tensor-Komponente ist der Anteil eines symmetrischen Tensors in einer bestimmten „Richtung“.

  • Diese „Richtung“ wird definiert mit zwei Einheitsvektoren (entlang dieser „Richtung“).

Um eine Tensor-Komponenten zu berechnen, braucht man:

  1. ein Bezugssystem, z.B. das \((x,y,z)\)-System.

  2. die Komponenten des Tensors (bezüglich Bezugssystem): \(T_{xx}, T_{xy}, T_{xz}, T_{yy}, T_{yz}, T_{zz}\).

  3. die Komponenten der Einheitsvektoren (bezüglich Bezugssystem).

\(xx\)-Komponente

Sei die „Richtung“ die \(xx\)-„Richtung“. Dann gilt für die Tensor-Komponente \(T_{xx}\) in dieser „Richtung“:

\[\begin{split}T_{xx} &= \begin{bmatrix}1 & 0 & 0 \end{bmatrix} \begin{bmatrix} T_{xx} & T_{xy} & T_{xz}\\ & T_{yy} & T_{yz} \\ \mathsf{sym} & & T_{zz} \end{bmatrix} \begin{bmatrix}1 \\ 0 \\ 0 \end{bmatrix} \\ &= \begin{bmatrix}1 & 0 & 0 \end{bmatrix} \begin{bmatrix} T_{xx} \\ T_{xy} \\ T_{xz} \end{bmatrix} \\ &= T_{xx}\end{split}\]

\(xy\)-Komponente

Sei die „Richtung“ die \(xy\)-„Richtung“. Dann gilt für die Tensor-Komponente \(T_{xy}\) in dieser „Richtung“:

\[\begin{split}T_{xy} &= \begin{bmatrix}1 & 0 & 0 \end{bmatrix} \begin{bmatrix} T_{xx} & T_{xy} & T_{xz}\\ & T_{yy} & T_{yz} \\ \mathsf{sym} & & T_{zz} \end{bmatrix} \begin{bmatrix}0 \\ 1 \\ 0 \end{bmatrix} \\ &= \begin{bmatrix}1 & 0 & 0 \end{bmatrix} \begin{bmatrix} T_{xy} \\ T_{yy} \\ T_{yz} \end{bmatrix} \\ &= T_{xy}\end{split}\]

\(\bar x\bar x\)-Komponente

Sei die „Richtung“ die \(\bar x\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 Tensor-Komponente \(T_{\bar x \bar x}\) in dieser „Richtung“ gilt:

\[\begin{split}T_{\bar x\bar x} &= \begin{bmatrix}c_\varphi & s_\varphi & 0 \end{bmatrix} \begin{bmatrix} T_{xx} & T_{xy} & T_{xz}\\ & T_{yy} & T_{yz} \\ \mathsf{sym} & & T_{zz} \end{bmatrix} \begin{bmatrix}c_\varphi \\ s_\varphi \\ 0 \end{bmatrix} \\ &= T_{xx} c_\varphi^2 + T_{xy} s_{2\varphi} + T_{yy} s_\varphi^2\end{split}\]

\(\bar x\bar y\)-Komponente

Sei die „Richtung“ die \(\bar x\bar y\)-„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 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 Tensor-Komponente \(T_{\bar x \bar y}\) in dieser „Richtung“ gilt:

\[\begin{split}T_{\bar x\bar y} &= \begin{bmatrix}c_\varphi & s_\varphi & 0 \end{bmatrix} \begin{bmatrix} T_{xx} & T_{xy} & T_{xz}\\ & T_{yy} & T_{yz} \\ \mathsf{sym} & & T_{zz} \end{bmatrix} \begin{bmatrix}-s_\varphi \\ c_\varphi \\ 0 \end{bmatrix} \\ &= - \tfrac 12 \left( T_{xx} - T_{yy}\right) s_{2\varphi} + T_{xy} c_{2\varphi}\end{split}\]