1.5.D

Gegeben

../../../_images/1.5.D.png
  • Zwei glatte (Kreis-)Zylinder drücken gegen einen Balken.

  • Die Balkendicke \(t\) ist gegenüber \(a\) vernachlässigbar klein.

Symbole:

\[a, g, m, M\]

Berechnen Sie die Lagerreaktionen. Gehen Sie wie folgt vor.

a) Lagerreaktionen und Kontaktkräfte

Berechnen Sie die Lagerreaktionen, die Seilkraft und die Kontaktkräfte.

Lösung

../../../_images/1.5.D.png
../../../_images/1.5.D_1.png

Lösung:

\[\begin{split}S &= \sqrt{2} mg \\ N_{1} &= mg \\ \\ N_{2} &= mg \\ N_{3} &= mg \\ \\ A_{h} &= mg \\ A_{v} &= \tfrac{M}{2 a} \\ B &= - \tfrac{M}{2 a} + mg\end{split}\]

b) Ergebnisse für gegebene Größen

Berechnen Sie Lagerreaktionen, die Seilkraft und die Kontaktkräfte für folgende Größen - und gerundet auf Rundestellenwert \(1\).

\[\begin{split}a &= 0{,}5 \,\mathrm{m} \\ g &= 10 \,\tfrac{\mathrm m}{\mathrm{s}^2} \\ m &= 10 \,\mathrm{kg} \\ M &= 10 \,\mathrm{Nm}\end{split}\]

Lösung

\[\begin{split}S &\stackrel{\scriptscriptstyle{1{,}0}}{\approx} 141 \,\mathrm{N} \\ N_1 &= 100 \,\mathrm{N} \\ N_2 &= 100 \,\mathrm{N} \\ N_3 &= 100 \,\mathrm{N} \\ A_h &= 100 \,\mathrm{N} \\ A_v &= 10 \,\mathrm{N} \\ B &= 90 \,\mathrm{N}\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

# 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

# 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, g, mass, M = symbols("a, g, mass, M")

sub_list=[
    ( a,      half  *m      ),
    ( g,       10   *m/s**2 ),
    ( mass,    10   *kg     ),
    ( M,       10   *N*m    ),
    ]

Ah, Av, B, N1, N2, N3, S = symbols("Ah, Av, B, N1, N2, N3, S")

alpha = 45 *deg

ca = cos(alpha)
sa = sin(alpha)

# ---

eq1 = Eq(0, N1 - S*sa)
eq2 = Eq(0, S*ca- mass*g)

sol = solve([eq1, eq2],[S, N1])
pprint(sol)
S, N1 = sol[S], sol[N1]

pprint("\nS / N:")
printout(S, unit=N, prec=0, sub_list=sub_list)

pprint("\nN1 / N:")
printout(N1, unit=N, prec=0, sub_list=sub_list)

# ---

eq3 = Eq(0, N2 - N1)
eq4 = Eq(0, N3 - mass*g)

sol = solve([eq3, eq4],[N2, N3])
pprint(sol)
N2, N3 = sol[N2], sol[N3]

pprint("\nN2 / N:")
printout(N2, unit=N, prec=0, sub_list=sub_list)

pprint("\nN3 / N:")
printout(N3, unit=N, prec=0, sub_list=sub_list)

# ---

eq5 = Eq(0, Ah - N2)
eq6 = Eq(0, Av + B - N3)
eq7 = Eq(0, M + 2*a*B + a*N2/2 - 5*a/2*N3)

sol = solve([eq5, eq6, eq7], [Ah, Av, B])
pprint(sol)
Ah, Av = sol[Ah], sol[Av]

pprint("\nAh / N:")
printout(Ah, unit=N, prec=0, sub_list=sub_list)

pprint("\nAv / N:")
printout(Av, unit=N, prec=0, 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.