1.5.K
aus Gross et al. [GEW08] Aufgabe 5.14
Video
Berechnen Sie die Lagerreaktionen bei A und B und die Kräfte im Gelenk G. Gehen Sie wie folgt vor.
a) Freischneiden
Schneiden Sie:
bei G durch das Gelenk, an der Grenze zwischen linkem und rechtem Balken
bei A, an der Grenze zwischen linkem Balken und Lager bei A
bei B, an der Grenze zwischen rechtem Balken und Lager bei B
Zeichnen Sie zwei Freikörperbilder: Eins für den Balken links - und eins für den Balken rechts.
b) Resultierende und Gleichgewichtsbedingungen
Berechnen Sie die Resultierende der verteilten Kraft. Und geben Sie für beide Körper drei Gleichgewichtsbedingungen an. Nummerieren Sie die Gleichungen, und zählen Sie die Unbekannten. Zeigen Sie, dass Sie 6 Gleichungen für 6 Unbekannte haben.
c) Lösen des Gleichungssystems
Lösen Sie das Lineare Gleichungssystem bestehend aus 6 Gleichungen für 6 Unbekannte. Berechnen Sie die 6 Unbekannten für die gegebenen Symbole.
Lösung für die 6 Unbekannten \(A_h, A_v, M_A, B_v, G_h, G_v\):Lösung
d) Lösung für gegebene Größen
Berechnen Sie alle Lagerreaktionen und die Gelenkkräfte für die Größen:
Lösung
e) Nur Lagerreaktionen
Zeigen Sie eine Möglichkeit, mit geeigneten Freischnitten und Gleichgewichtsbedingungen die Lagerreaktionen zu berechnen, ohne die Gelenkkräfte berechnen zu müssen.
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, Eq, solve
from operator import itemgetter
# 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 print_dict(sol, unit=1, unit_str=None, prec="nil", sub_list=[]):
# Sorting:
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, F, q = symbols("a, F, q")
sub_list=[
( a, 1 *m ),
( F, 1 *N ),
( q, 1 *N/m ),
]
pprint("Solution 1:")
# 6 Unknowns:
Ah,Av,Bv,Gh,Gv,MA = symbols("Ah,Av,Bv,Gh,Gv,MA")
unks = [Ah,Av,Bv,Gh,Gv,MA]
# 6 Equations / Equilibrium Conditions:
R = 2*a*q
eq1 = Eq( Gh, 0 )
eq2 = Eq( - Bv + F + Gv + R, 0 )
eq3 = Eq( 2*a*F + a*(-Bv + R), 0 )
eq4 = Eq( Ah + Gh, 0 )
eq5 = Eq( Av + Gv , 0 )
eq6 = Eq( Gv*a - MA, 0 )
eqns = [eq1, eq2, eq3, eq4, eq5, eq6]
sol = solve(eqns, unks)
print(sol)
print_dict(sol, unit=N, unit_str="N", prec="nil", sub_list=sub_list)
pprint("\nSolution 2:")
# 4 Unknowns:
Ah, Av, Bv, MA= symbols("Ah, Av, Bv, MA")
unks = [Ah, Av, Bv, MA]
# 4 Equations:
eq1 = Eq( 2*F*a + a*(-Bv + R), 0 )
eq2 = Eq( Ah, 0 )
eq3 = Eq( Av + Bv - R - F, 0 )
eq4 = Eq( 2*a*Bv -2*a*R -3*a*F - MA, 0 )
eqns = [eq1, eq2, eq3, eq4]
sol = solve(eqns, unks)
print(sol)
print_dict(sol, unit=N, unit_str="N", prec="nil", sub_list=sub_list)
[ ]: einfügen.▶ drücken.