Tags: Wissen

3.3.W

Gegeben

../../../_images/3.3.W.png
  • Die Starrkörper 1 und 2 sind drehbar gelagert.

  • Die Feder verbindet die Starrkörper.

  • Die Koordinaten \(\varphi\) und \(\psi\) beschreiben eine beliebige Lage der Starrkörper.

Tatsächliche Federverlängerung \(\Delta \ell\):

  • Für die Lage, die zu \(\varphi=0^\circ\) und \(\psi=0^\circ\) gehört, ist die tatsächliche Federverlängerung:

    \[\Delta \ell = 0\]
  • Für die Lage, die zu \(\varphi=30^\circ\) und \(\psi=40^\circ\) gehört (siehe Bild), ist:

    \[\Delta \ell \stackrel{\small{0{,}01}}{\approx} 0{,}62\, \mathrm{cm}\]
  • Für die Lage, die zu \(\varphi=6^\circ\) und \(\psi=6^\circ\) gehört, ist:

    \[\Delta \ell \stackrel{\small{0{,}01}}{\approx} -1{,}49\, \mathrm{cm}\]

Genäherte Federverlängerung \(\Delta l\):

Bisher ging es um die tatsächliche Federverlängerung \(\Delta \ell\), die für alle Winkel korrekt ist. Die genäherte Federverlängerung \(\Delta \ell\) ist die Linearisierung von \(\Delta \ell\) bei \(\varphi=\psi=0\), die eine gute Näherung ist nur falls beide Winkel betragsmäßig sehr klein sind.

Berechnen Sie diese genäherte Feder-Verlängerung \(\Delta l\) für \(\varphi=6^\circ\) und \(\psi=6^\circ\).

Markieren Sie die wahre Aussage.

  • \(\Delta l \stackrel{\small{0{,}01}}{\approx} -1{,}57 \, \mathrm{cm}\)

  • \(\Delta l \stackrel{\small{0{,}01}}{\approx} -1{,}56 \, \mathrm{cm}\)

  • \(\Delta l \stackrel{\small{0{,}01}}{\approx} -1{,}55 \, \mathrm{cm}\)

  • \(\Delta l \stackrel{\small{0{,}01}}{\approx} -1{,}54 \, \mathrm{cm}\)

  • \(\Delta l \stackrel{\small{0{,}01}}{\approx} -1{,}53 \, \mathrm{cm}\)

  • \(\Delta l \stackrel{\small{0{,}01}}{\approx} -1{,}52 \, \mathrm{cm}\)

  • \(\Delta l \stackrel{\small{0{,}01}}{\approx} -1{,}51 \, \mathrm{cm}\)

  • \(\Delta l \stackrel{\small{0{,}01}}{\approx} -1{,}50 \, \mathrm{cm}\)

Lösung

\[\begin{split}\Delta l & = - 10 \, \mathrm{cm} \cdot \varphi - 5 \, \mathrm{cm} \cdot \psi \\ & = - 10 \, \mathrm{cm} \cdot 6^\circ - 5 \, \mathrm{cm} \cdot 6^\circ \\ & = - \left(60 + 30 \right)^\circ \, \mathrm{cm} \\ & = - 90^\circ \, \mathrm{cm} \\ & = - 90^\circ \, \mathrm{cm} \cdot \tfrac{\pi}{180^\circ}\\ & = - \tfrac{90 \pi}{180} \, \mathrm{cm} \\ & = - \tfrac{\pi}{2} \, \mathrm{cm} \\ & \stackrel{\small{0{,}01}}{\approx} -1{,}57 \, \mathrm{cm} \\\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
from sympy import diff

# 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

a = symbols("a", positive=True)
phi, psi = symbols("phi, psi", real=True)

# User Input:
prec = 2

sub_list = [
    ( a,   10 *cm  ),
    ( phi,  6 *deg ),
    ( psi,  6 *deg ),
    ]

# End of User Input:

c1, s1 = cos(phi), sin(phi)
c2, s2 = cos(psi), sin(psi)

R1 = Matrix([
    [c1, -s1], 
    [s1,  c1]
    ])

R2 = Matrix([
    [c2, -s2], 
    [s2,  c2]
    ])

rA = a*Matrix([half, -1])
rB = a*Matrix([0, half])

pprint("\nuA / cm:")
uA = R1*rA - rA
printout(uA, unit=cm, prec=prec, sub_list=sub_list)

pprint("\nuB / cm:")
uB = R2*rB - rB
printout(uB, unit=cm, prec=prec, sub_list=sub_list)

# Vector from A to B:
dAB   = a*Matrix([half, 0])
dABp  = -uA + dAB + uB
dl = - half*a

pprint("\nl / cm:")
l = dAB.norm()
printout(l, unit=cm, prec=prec, sub_list=sub_list)

pprint("\nl' / cm:")
lp = dABp.norm()
printout(lp, unit=cm, prec=prec, sub_list=sub_list)

pprint("\nΔℓ / cm:")
dl = lp - l
printout(dl, unit=cm, prec=prec, sub_list=sub_list)

pprint("\nΔl:")
# Taylor
at_zero = [(phi, 0), (psi,0)]
dl1 = diff(dl, phi).subs(at_zero)
dl2 = diff(dl, psi).subs(at_zero)

dl_lin = 0 + dl1*phi + dl2*psi
pprint(dl_lin)
pprint("\nΔl / cm:")
printout(dl_lin, unit=cm, prec=prec, sub_list=sub_list)

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.