1.6.A
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:
Mit \(\alpha=60^\circ\) und den Abkürzungen \(s_{\alpha}=\sin \alpha, c_{\alpha}=\cos \alpha, t_{\alpha}=\tan \alpha\):Lösung
b) Stabkräfte
Berechnen Sie die Stab-Zugkräfte aller Stäbe - abhängig von gegebenen Symbolen.
c) Ergebnisse für gegebene Größen
Seien ab hier folgende Größen gegeben:
Berechnen Sie alle Stabkräfte, und zwar in \(\mathrm{N}\) (Newton) und gerundet auf Rundestellenwert \(0{,}1\) für diese gegebenen Größen.
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\)Lösung
d) Lagerreaktionen
Berechnen Sie die Lagerreaktionen für dieselben Größen - und wieder gerundet auf Rundestellenwert \(0{,}1\):
4 Gleichungen zur Berechnung der 4 Unbekannten \(A_h, A_v, B_h, B_v\). Einsetzen liefert: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, 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)
[ ]: einfügen.▶ drücken.