Tags: Video

3.3.R

Video

Gegeben

../../../_images/3.3.R.png

Symbole:

\[m, a, b, c\]
  • Homogener Quader.

  • Masse \(m\).

  • Kantenlängen \(a, b\) und \(c.\)

Lösung auf einer Seite

a) Volumen

Berechnen Sie das Volumen \(V\) des Quaders. Und zwar:

  • für die gegebenen Symbole und

  • für die gegebenen Größen:

    \[\begin{split}m &= 10\, \mathrm{kg} \\ (a, b, c) &= (2, 1, 1)\, \mathrm{m}\end{split}\]

Lösung

\[\begin{split}V &= a \cdot b \cdot c \\ &= 2 \,\mathrm{m}^3\end{split}\]

b) Vektor \(\boldsymbol d\)

Berechnen Sie für die gegebenen Größen die \((x,y,z)\)-Komponenten des Vektors \(\boldsymbol d\), nämlich:

\[\begin{split}\begin{bmatrix} d_x \\ d_y \\ d_z \\ \end{bmatrix} &= \ldots\end{split}\]

für die gegebenen Symbole und für die gegebenen Größen.

Lösung

\[\begin{split}\begin{bmatrix} d_x \\ d_y \\ d_z \\ \end{bmatrix} &= \tfrac 1 2 \begin{bmatrix} a \\ b \\ c \\ \end{bmatrix} \\ &= \begin{bmatrix} 1\\ \tfrac{1}{2}\\ \tfrac{1}{2} \end{bmatrix} \,\mathrm{m}\end{split}\]

c) Bezugspunkt S

Berechnen Sie die Matrix \(\Theta\) der \((x,y,z)\)-Komponenten des Trägheitstensors bezüglich Schwerpunkt S. Und zwar:

  • für die oben gegebenen Symbole und

  • für die oben gegebenen Größen. Zeigen Sie, dass die Matrix \(\Theta\) aller Komponenten ist:

    \[\begin{split}\Theta &= \begin{bmatrix} \Theta_{xx} & \Theta_{xy} & \Theta_{xz}\\ & \Theta_{yy} & \Theta_{yz}\\ \mathsf{sym} & & \Theta_{zz} \end{bmatrix} \\ &\stackrel{\scriptscriptstyle{0{,}1}}{\approx} \begin{bmatrix} 1{,}7 & 0 & 0\\ 0 & 4{,}2 & 0 \\ 0 & 0 & 4{,}2 \end{bmatrix} \, \mathrm{kg}\,\mathrm{m}^2\end{split}\]

Lösung

Definition aus Tensoren mit Bezugspunkt und Integration:

\[\begin{split}\Theta_{xx} &= \int_{z=-\tfrac c 2}^{\tfrac c 2}\int_{y=-\tfrac b 2}^{\tfrac b 2}\int_{x=-\tfrac a 2}^{\tfrac a 2} \rho (y^2 + z^2)\,{\mathsf d}x\,{\mathsf d}y\,{\mathsf d}z \\ &= \ldots \\ &= \tfrac{m}{12} \left(b^{2} + c^{2}\right) \\ &\stackrel{\scriptscriptstyle{0{,}1}}{\approx} 1{,}7 \, \mathrm{kg}\,\mathrm{m}^2\end{split}\]

Details zur Integration

\[\begin{split}\Theta_{xx} &= \int_{z=-\tfrac c 2}^{\tfrac c 2}\int_{y=-\tfrac b 2}^{\tfrac b 2}\int_{x=-\tfrac a 2}^{\tfrac a 2} \rho (y^2 + z^2)\,{\mathsf d}x\,{\mathsf d}y\,{\mathsf d}z \\ &=\tfrac m V \int_{z=-\tfrac c 2}^{\tfrac c 2}\int_{y=-\tfrac b 2}^{\tfrac b 2}\int_{x=-\tfrac a 2}^{\tfrac a 2} (y^2 + z^2)\,{\mathsf d}x\,{\mathsf d}y\,{\mathsf d}z \\ &=\tfrac m V \int_{z=-\tfrac c 2}^{\tfrac c 2}\int_{y=-\tfrac b 2}^{\tfrac b 2} (y^2 + z^2) a \,{\mathsf d}y\,{\mathsf d}z \\ &=a \tfrac m V \int_{z=-\tfrac c 2}^{\tfrac c 2} \left[ \tfrac 1 3 y^3 + z^2 y\right]_{-\tfrac b 2}^{\tfrac b 2} \,{\mathsf d}z \\ &=a \tfrac m V \int_{z=-\tfrac c 2}^{\tfrac c 2} \left( \tfrac{1}{12} b^3 + z^2 b\right) \,{\mathsf d}z \\ &=a b\tfrac m V \left[ \tfrac{1}{12} b^2 z + \tfrac 1 3 z^3 \right]_{-\tfrac c 2}^{\tfrac c 2} \\ &=a b\tfrac m V \left( \tfrac{1}{12} b^2 c + \tfrac{1}{12} c^3 \right) \\ &=a b c\tfrac m V \left( \tfrac{1}{12} b^2 + \tfrac{1}{12} c^2 \right) \\ &= m \left( \tfrac{1}{12} b^2 + \tfrac{1}{12} c^2 \right) \\ &= \tfrac{m}{12} \left(b^{2} + c^{2}\right) \\\end{split}\]

Die übrigen Komponenten sind:

\[\begin{split}\Theta_{yy} &= \tfrac{m}{12} \left(a^{2} + c^{2}\right) \\ &\stackrel{\scriptscriptstyle{0{,}1}}{\approx} 4{,}2 \, \mathrm{kg}\,\mathrm{m}^2 \\ \Theta_{xy} &= 0\end{split}\]

und so weiter.

Dies liefert die Matrix \(\Theta\) aller Komponenten:

\[\begin{split}\Theta &= \begin{bmatrix} \Theta_{xx} & \Theta_{xy} & \Theta_{xz}\\ & \Theta_{yy} & \Theta_{yz}\\ \mathsf{sym} & & \Theta_{zz} \end{bmatrix} \\ &= m \begin{bmatrix} \tfrac{b^{2}}{12} + \tfrac{c^{2}}{12} & 0 & 0\\ 0 & \tfrac{a^{2}}{12} + \tfrac{c^{2}}{12} & 0 \\ 0 & 0 & \tfrac{a^{2}}{12} + \tfrac{b^{2}}{12} \end{bmatrix} \\ &\stackrel{\scriptscriptstyle{0{,}1}}{\approx} \begin{bmatrix} 1{,}7 & 0 & 0\\ 0 & 4{,}2 & 0 \\ 0 & 0 & 4{,}2 \end{bmatrix} \, \mathrm{kg}\,\mathrm{m}^2\end{split}\]

SymPy

Source Code eines Programms dazu:

from sympy.physics.units import kg, m, s
from sympy import pi, S, pprint, symbols, cos, sin, Matrix, Eq, solve, sqrt, exp, simplify
from sympy import integrate

# 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
cm        =  m/100
mm        =  m/1000

# ---

mass, a, b, c = symbols("m, a, b, c", positive=True)
a2, b2, c2 = a*a, b*b, c*c

pprint("\nVolume:")
V = a*b*c
tmp = V
pprint(tmp)

x, y, z = symbols("x, y, z")

pprint("\nΘ-Components:")
ref_pt = "S"
ref_pt = "O"

if ref_pt=="S":
    xbound = (x, -a/2, a/2)
    ybound = (y, -b/2, b/2)
    zbound = (z, -c/2, c/2)
elif ref_pt=="O":
    xbound = (x, 0, a)
    ybound = (y, 0, b)
    zbound = (z, 0, c)

comp = "11"
comp = "22"
comp = "12"

if comp == "11":
    pprint("11-Component:")
    int = y*y + z*z
elif comp == "22":
    pprint("22-Component:")
    int = x*x + z*z
elif comp == "12":
    pprint("12-Component:")
    int = -x*y

# Integrate:
tmp = integrate(int, xbound) # first over x
tmp = integrate(tmp, ybound) # then over y
tmp = integrate(tmp, zbound) # then over z

# Multiply by ρ = m / V
tmp *= mass / V
tmp = tmp.simplify()
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.

d) Bezugspunkt O

Berechnen Sie die Matrix \(\Theta_O\) der \((x,y,z)\)-Komponenten des Trägheitstensors bezüglich O. Und zwar:

  • für die oben gegebenen Symbole und

  • für die oben gegebenen Größen, und zwar in \(\mathrm{kg}\,\mathrm{m}^2\) (Kilogramm mal Quadratmeter) und gerundet auf Rundestellenwert \(0{,}1\).

Lösung

Verwendung von Tensoren mit Bezugspunkt mit dem Vektor \(\boldsymbol d\) von oben liefert die Matrix \(\Theta_O:\)

\[\begin{split}\Theta_O &= \Theta + m \begin{bmatrix} d_y^2 + d_z^2 & - d_x d_y & - d_x d_z \\ & d_x^2 + d_z^2 & - d_y d_z \\ \mathsf{sym}& & d_x^2 + d_y^2 \end{bmatrix} \\ &= m \begin{bmatrix} \tfrac{b^{2}}{3} + \tfrac{c^{2}}{3} & - \tfrac{a b}{4} & - \tfrac{a c}{4}\\ & \tfrac{a^{2}}{3} + \tfrac{c^{2}}{3} & - \tfrac{b c}{4}\\ \mathsf{sym} & & \tfrac{a^{2}}{3} + \tfrac{b^{2}}{3} \end{bmatrix} \\ &\stackrel{\scriptscriptstyle{0{,}1}}{\approx} \begin{bmatrix} 6{,}7 & -5{,}0 & -5{,}0\\ & 16{,}7 & -2{,}5\\ \mathsf{sym} & & 16{,}7 \end{bmatrix} \mathrm{kg}\,\mathrm{m}^2\end{split}\]

Weitere Infos

../../../_images/a.X14.png

Bemerkung

Beachten Sie, dass die \((\xi, \eta, \vartheta)\)-Komponenten dasselbe sind wie die \((x, y, z)\)-Komponenten. Das blaue \((\xi, \eta, \vartheta)\)-System ist dargestellt, nur um zu verdeutlichen, dass es um den Bezugspunkt O geht.

SymPy

Source Code eines Programms dazu:

from sympy.physics.units import kg, m, s
from sympy import pi, S, pprint, symbols, cos, sin, Matrix, Eq, solve, sqrt, exp, simplify
from sympy import zeros

# 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
cm        =  m/100
mm        =  m/1000

# Rounding:
def iso_round(x, pv):
    try:
        x = float(x)
        tmp = round(x, pv)
    except TypeError:
        x = x.evalf()
        from functools import partial
        func = partial(round, ndigits = pv)
        tmp = x.applyfunc(func)
    return tmp

# Printing:
def printout(x, unit=1, prec="nil", sub_list=[]):
    x = x.subs(sub_list)
    x /= unit
    try: 
        x = x.applyfunc(simplify)
    except:
        tmp = x.simplify()
        if tmp != None:
            x = tmp
    if prec != "nil":
        x = iso_round(x, prec)
    pprint(x)
    return

mass, a, b, c = symbols("m, a, b, c", positive=True)
a2, b2, c2 = a*a, b*b, c*c

def parallel_axis(T, d, mass):
    """
    Parallel Axis Theorem for Inertia Tensor
    """
    (dx, dy, dz) = d
    tmp = zeros(3,3)
    tmp[0,0]+= T[0,0] + (dy**2 + dz**2) * mass
    tmp[1,1]+= T[1,1] + (dx**2 + dz**2) * mass
    tmp[2,2]+= T[2,2] + (dx**2 + dy**2) * mass
    tmp[0,1]+= T[0,1] - dx*dy * mass
    tmp[0,2]+= T[0,2] - dx*dz * mass
    tmp[1,2]+= T[1,2] - dy*dz * mass
    # sym:
    tmp[1,0]= tmp[0,1]
    tmp[2,0]= tmp[0,2]
    tmp[2,1]= tmp[1,2]
    tmp = tmp.applyfunc(simplify)
    return tmp

# --- Input Data ---
# Given Quantities:
sub_list = [
    (mass, 10 *kg),
    (a, 2 *m),
    (b, 1 *m),
    (c, 1 *m),
    ]
# Precision and Units for Output:
prec = 1
uΘ, sΘ = kg*m**2, "(kg m²):"
uL, sL = m, "m:"
uV, sV = m**3, "m³:"

# --- End of Input Data ---

# # --- Input Data ---
# # Given Quantities:
# sub_list = [
#     (mass, 10 *kg),
#     (a, 20 *m),
#     (b, 10 *m),
#     (c, 10 *m),
#     ]

# # Precision and Units for Output:
# prec = 1
# uΘ, sΘ = t*m**2, "(t m²):"
# uL, sL = m, "m:"
# uV, sV = m**3, "m³:"

# # --- End of Input Data ---

# # --- Input Data ---

# # Given Quantities:
# sub_list = [
#     (mass, 5 *kg),
#     (a, 4 *cm),
#     (b, 3 *cm),
#     (c, 2 *cm),
#     ]

# # Precision and Units for Output:
# prec = "0.1"
# uΘ, sΘ = kg*cm**2, "(kg cm²):"
# uL, sL = cm, "cm:"
# uV, sV = cm**3, "cm³:"

# # --- End of Input Data ---

pprint("\n\nV: Volume:")
V = a*b*c
tmp = V
pprint(tmp)

pprint("\nV / " + sV)
printout(V, unit=uV, prec=prec, sub_list=sub_list)

pprint("\nd:")
d = Matrix([a/2, b/2, c/2])
tmp = d
pprint(tmp)
pprint("\nd / " + sL)
printout(d, unit=uL, prec="nil", sub_list=sub_list)

pprint("\n\nΘ: (x,y,z)-Comp's of Inertia Tensor wrt S:")
Txx = mass * (b2 + c2)
Tyy = mass * (a2 + c2)
Tzz = mass * (a2 + b2)
Theta = Matrix([
    [Txx, 0, 0],
    [0, Tyy, 0],
    [0, 0, Tzz]
    ])/12

pprint(Theta)
pprint("\nΘ / " + sΘ)
printout(Theta, unit=uΘ, prec=prec, sub_list=sub_list)

pprint("\n\nΘO: (x,y,z)-Comp's of Inertia Tensor wrt O:")
ThetaO = parallel_axis(Theta, d, mass)
printout(ThetaO, unit=1, prec="nil", sub_list=[])

pprint("\nΘO / " + sΘ)
printout(ThetaO, unit=uΘ, prec=prec, sub_list=sub_list)

pprint("\n--- 3.3.S = Cube ---")
cφ, sφ = sqrt(2) / 2, sqrt(2) / 2
cψ, sψ = sqrt(3) / 3, sqrt(6) / 3
Rφ = Matrix([
    [cφ, 0, -sφ],
    [0,  1,   0],
    [sφ, 0,  cφ]
    ])
Rψ = Matrix([
    [1,  0,    0],
    [0,  cψ,  sψ],
    [0, -sψ,  cψ]
    ])

pprint("\nR:")
R = Rψ*Rφ
pprint(R)

pprint("\nRt:")
Rt = R.transpose()
pprint(Rt)

pprint("\nΘ: (x,y,z)-Comp's of Θ wrt S:")
Tcube = Theta.subs([(b,a), (c,a)])
pprint(Tcube)

pprint("\nΘO: (x,y,z)-Comp's of Θ wrt O:")
TOcube = ThetaO.subs([(b,a), (c,a)])
pprint(TOcube)

pprint("\nΘO / " + sΘ)
printout(TOcube, unit=uΘ, prec=prec, sub_list=sub_list)

pprint("\nΘO⁻: (x̄,ȳ,z̄)-Comp's of Θ wrt O:")
TOb = R*TOcube*Rt
tmp = TOb.applyfunc(simplify)
pprint(tmp)

pprint("\nΘO⁻ / " + sΘ)
printout(TOb, unit=uΘ, prec=prec, sub_list=sub_list)

pprint("\n---")

pprint("\nGreen (x,y,z)-Comp's of Given Vector v / " + sL)
v = Matrix([2, 2, 2])*m
printout(v, unit=uL, prec="nil", sub_list=[])

pprint("\nCalculating vz̃:")

pprint("\nGreen: Using (x,y,z)-Comp's:")
pprint("\nGreen (x,y,z)-Comp's of Unit vector along z̃:")
s22 = sqrt(2)/2
e = Matrix([s22, 0, s22])
pprint(e)

pprint("\nvz̃  / " + sL)
vzt = v.dot(e)
tmp = vzt
tmp /= uL
pprint(tmp)

pprint("\nBlue: Using Passive Transformation and (x̃,ỹ,z̃)-Comp's:")
pprint("\n(x̃,ỹ,z̃)-Comp's of v / " + sL)
vt = Rφ * v
tmp = vt
tmp /= uL
pprint(tmp)
pprint("\n(x̃,ỹ,z̃)-Comp's of Unit vector along z̃:")
et = Matrix([0, 0, 1])
pprint(et)

pprint("\nvz̃ / m:")
vzt = vt.dot(et)
tmp = vzt
tmp /= m
pprint(tmp)

pprint("\n---")

pprint("\nGreen (x,y,z)-Comp's of Given Tensor ΘO / " + sΘ)
printout(TOcube, unit=uΘ, prec="nil", sub_list=sub_list)

pprint("\nGreen (x,y,z)-Comp's of Unit vector along ȳ:")
s33 = sqrt(3)/3
e = Matrix([s33, s33, s33])
tmp = e
pprint(tmp)

pprint("\nΘOȳȳ/ " + sΘ)
tmp = e.dot(TOcube*e)
printout(tmp, unit=uΘ, prec="nil", sub_list=sub_list)
exit()

pprint("\nΘOz̃z̃/ " + sΘ)
eT = e.transpose()
tmp = TOcube.subs(sub_list)
tmp = eT*tmp*e
tmp /= uΘ
pprint(tmp)

pprint("\nRed: Using Passive Transformation and (x̄,ȳ,z̄)-Comp's:")
pprint("\nΘO⁻ / " + sΘ)
tmp = TOb
TOb = TOb.subs(sub_list)
tmp /= uΘ
pprint(tmp)

pprint("\nΘOz̃z̃ / "+ sΘ)
eb = Matrix([0, 1, 0])
ebT = eb.transpose()
tmp = ebT*TOb*eb
tmp /= uΘ
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.