1.6.E
Berechnen Sie die Stabkräfte \(S_1, S_2, S_3\). Gehen Sie wie folgt vor:
a) Geometrie
Berechnen Sie die Länge \(l_1\) des Stabs 1. Zeigen Sie, dass:
Lösung
b) Kosinus und Sinus
Berechnen Sie Kosinus und Sinus der Winkel \(\alpha\) und \(\beta\). Zeigen Sie, dass:
Lösung
c) Ritterschnitt
Schneiden Sie durch die drei Stäbe 1, 2, 3 (Ritterschnitt), sodass die Stabkräfte \(S_1, S_2, S_3\) sichtbar werden.
Schließen Sie den Schnitt nach rechts, und betrachten Sie das rechte Teilsystem, sodass Sie die Lagerreaktionen nicht berechnen müssen.
Geben Sie drei Gleichgewichtsbedingungen an. Und berechnen Sie damit \(S_1, S_2, S_3\).
Runden Sie auf Rundestellenwert \(0{,}01\). Zeigen Sie, dass:
Lösung: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, sqrt, 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
def printout_sol(sol, unit=1, unit_str=None, prec="nil", sub_list=[]):
for s in sol:
if unit_str:
print("\n"+str(s) + " / " + unit_str + ":")
else:
print("\n"+str(s) + ":")
x = sol[s]
x = x.subs(sub_list)
x /= unit
try:
x = x.applyfunc(simplify)
except:
x = x.simplify()
if prec != "nil":
x = iso_round(x, prec)
pprint(x)
return
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)
# ---
a = symbols("a", positive=True)
F = symbols("F")
print("\nl1 / a:")
k1 = a
k2 = a/3
l1 = sqrt(k1*k1 + k2*k2)
pprint(l1)
tmp = l1/a
tmp = iso_round(tmp, 2)
pprint(tmp)
pprint("\ncos(a), sin(a), cos(b), sin(b):")
ca = k1 / l1
sa = k2 / l1
cb = cos(45*deg)
sb = sin(45*deg)
for x in [ca, sa, cb, sb]:
pprint(x)
S1, S2, S3 = symbols("S1, S2, S3")
unknowns = [S1, S2, S3]
# shortcuts:
s10 = sqrt(10)
third = S(1)/3
s22 = sqrt(2)/2
eq1 = Eq(0, 2*a/3*S1*ca - 2*a*F)
eq2 = Eq(0, S1*ca + S3*ca + S2*sb)
eq3 = Eq(0, 3*F - S2*cb - S1*sa + S3*sa)
# solve linear system:
eqs = [eq1, eq2, eq3]
sol = solve(eqs, unknowns)
pprint(sol)
print_dict(sol, unit=F, unit_str="F", prec=2, sub_list=[])
[ ]: einfügen.▶ drücken.