3.3.R
Video
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
b) Vektor \(\boldsymbol d\)
Berechnen Sie für die gegebenen Größen die \((x,y,z)\)-Komponenten des Vektors \(\boldsymbol d\), nämlich:
für die gegebenen Symbole und für die gegebenen Größen.
Lösung
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}\]
Definition aus Tensoren mit Bezugspunkt und Integration: Die übrigen Komponenten sind: und so weiter. Dies liefert die Matrix \(\Theta\) aller Komponenten:Lösung
Details zur Integration
Source Code eines Programms dazu: Programm ausführen? Dazu: Copy: Source Code in die Zwischenablage kopieren. Paste: Source Code ins Eingabefeld hinter Play: Knopf SymPy
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)
[ ]: einfügen.▶ 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\).
Verwendung von Tensoren mit Bezugspunkt mit dem Vektor \(\boldsymbol d\) von oben liefert die Matrix \(\Theta_O:\)Lösung
Source Code eines Programms dazu: Programm ausführen? Dazu: Copy: Source Code in die Zwischenablage kopieren. Paste: Source Code ins Eingabefeld hinter Play: Knopf SymPy
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)
[ ]: einfügen.▶ drücken.