1.6.A

Gegeben

../../../_images/1.6.A.png

Symbole: \(F_1, F_2\)

Fachwerk aus gleichseitigen Dreiecken.

Berechnen Sie die Lagerreaktionen und die Stabkräfte. Gehen Sie wie folgt vor.

a) Geometrie

Ermitteln Sie \(\alpha\), und geben Sie damit die exakten Werte an für:

\[\begin{split}\sin \alpha &= \ldots \\ \cos \alpha &= \ldots \\ \tan \alpha &= \ldots\end{split}\]

Lösung

Mit \(\alpha=60^\circ\) und den Abkürzungen \(s_{\alpha}=\sin \alpha, c_{\alpha}=\cos \alpha, t_{\alpha}=\tan \alpha\):

\[\begin{split}s_\alpha &= \tfrac{\sqrt 3}{2} \\ c_\alpha &= \tfrac 1 2 \\ t_\alpha &= \sqrt 3\end{split}\]

b) Stabkräfte

Berechnen Sie die Stab-Zugkräfte aller Stäbe - abhängig von gegebenen Symbolen.

Lösung

c) Ergebnisse für gegebene Größen

Seien ab hier folgende Größen gegeben:

\[\begin{split}F_1 &= 10 \,\mathrm{N} \\ F_2 &= 20 \,\mathrm{N}\end{split}\]

Berechnen Sie alle Stabkräfte, und zwar in \(\mathrm{N}\) (Newton) und gerundet auf Rundestellenwert \(0{,}1\) für diese gegebenen Größen.

Lösung

Stab

\(S \,/ \, \mathrm{N}\)

\(S \,/ \, \mathrm{N}\)

1

\(\tfrac{20 \sqrt{3}}{3}\)

\(\stackrel{\scriptscriptstyle{0{,}1}}{\approx} 11{,}5\)

2

\(- \tfrac{10 \sqrt{3}}{3}\)

\(\stackrel{\scriptscriptstyle{0{,}1}}{\approx} -5{,}8\)

3

\(- \tfrac{20 \sqrt{3}}{3}\)

\(\stackrel{\scriptscriptstyle{0{,}1}}{\approx} -11{,}5\)

4

\(\tfrac{20 \sqrt{3}}{3}\)

\(\stackrel{\scriptscriptstyle{0{,}1}}{\approx} 11{,}5\)

5

\(20 \sqrt{3}\)

\(\stackrel{\scriptscriptstyle{0{,}1}}{\approx} 34{,}6\)

6

\(- \tfrac{50 \sqrt{3}}{3}\)

\(\stackrel{\scriptscriptstyle{0{,}1}}{\approx} -28{,}9\)

7

\(- 20 \sqrt{3}\)

\(\stackrel{\scriptscriptstyle{0{,}1}}{\approx} -34{,}6\)

8

\(\tfrac{80 \sqrt{3}}{3}\)

\(\stackrel{\scriptscriptstyle{0{,}1}}{\approx} 46{,}2\)

d) Lagerreaktionen

Berechnen Sie die Lagerreaktionen für dieselben Größen - und wieder gerundet auf Rundestellenwert \(0{,}1\):

Lösung

../../../_images/1.6.A_1.png

4 Gleichungen zur Berechnung der 4 Unbekannten \(A_h, A_v, B_h, B_v\).

\[\begin{split}A_h &= - S_6 - S_7 c_\alpha \\ A_v &= - S_7 s_\alpha \\ B_h &= - S_8 \\ B_v &= 0\end{split}\]

Einsetzen liefert:

\[\begin{split}A_h &= \tfrac{4 F_{1} + 2 F_{2}}{\tan \alpha } \\ &= \tfrac{80 \sqrt{3}}{3} \,\mathrm{N} \\ &\stackrel{\scriptscriptstyle{0{,}1}}{\approx} 46{,}2 \,\mathrm{N} \\ A_v &= F_1 + F_2 \\ &= 30 \,\mathrm{N} \\ B_h &= -\tfrac{80 \sqrt{3}}{3}\,\mathrm{N} \\ &\stackrel{\scriptscriptstyle{0{,}1}}{\approx} -46{,}2\,\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, tan, 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

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

# Printing:
def print_dict(sol, unit=1, unit_str=None, prec="nil", sub_list=[]):
    # Sort:
    tmp = {str(k): v for k, v in sol.items()}
    tmp = sorted(tmp.items())
    for k, v in tmp:
        if unit_str:
            print("\n"+str(k) + " / " + unit_str + ":")
        else:
            print("\n"+str(k) + ":")
        v = v.subs(sub_list)
        v /= unit
        try: 
            v = v.applyfunc(simplify)
        except:
            v = v.simplify()
        if prec != "nil":
            v = iso_round(v, prec)
        pprint(v)

# ---

prec = 1

F1, F2 = symbols("F1, F2")

sub_list=[
    (F1, 10 *N),
    (F2, 20 *N),
    ]

alpha = 60 *deg
S1,S2,S3,S4,S5,S6,S7,S8 = symbols("S1,S2,S3,S4,S5,S6,S7,S8")

s, c, t = sin(alpha), cos(alpha), tan(alpha)

unks = [S1,S2,S3,S4,S5,S6,S7,S8]

eq1 = Eq( 0,  S2 + S1*c )
eq2 = Eq( 0, -F1 + S1*s )

eq3 = Eq( 0,  S4 + S3*c - S1*c )
eq4 = Eq( 0, -S1*s - S3*s )

eq5 = Eq( 0, S6 - S2 + S5*c - S3*c )
eq6 = Eq( 0, S3*s + S5*s - F2 )

eq7 = Eq( 0, S8 - S4 + S7*c - S5*c )
eq8 = Eq( 0, -S5*s -S7*s )

eqns = [eq1,eq2,eq3,eq4,eq5,eq6,eq7,eq8]
sol = solve(eqns, unks)

pprint("\nTensile Forces in Rods:")
print_dict(sol, unit=1, unit_str=None, prec="nil", sub_list=[])
pprint("\nTensile Forces in Rods / N:")
print_dict(sol, unit=N, unit_str="N", prec=prec, sub_list=sub_list)

pprint("\nSupport Reactions:")
Ah = - sol[S6] - sol[S7]*c
Av = - sol[S7]*s
Bh = - sol[S8]

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

pprint("\nAv / N:")
printout(Av, unit=N, prec=prec, sub_list=sub_list)

pprint("\nBh / N:")
printout(Bh, unit=N, 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.