2.1.H
Gegeben
Symbole:
In der undeformierten Lage hat Stab 1 hat die Länge \(l_1\), und Stab 2 die Länge \(l_2\).
Beide Stäbe haben einen Kreisquerschnitt mit Durchmesser \(d\).
Beide Stäbe sind aus einem Material mit E-Modul \(E\).
An Gelenk 1 wirkt die Kraft \(F_1\). An Gelenk 2 wirkt die Kraft \(F_2\).
Berechnen Sie die Verschiebung \(u_2\). Gehen Sie wie folgt vor.
Hinter jeder nummerierten Gleichung in Klammern: Gleichungsnummer und darin enthaltene neue Unbekannte. Source Code eines Programms dazu: Programm ausführen? Dazu: Copy: Source Code in die Zwischenablage kopieren. Paste: Source Code ins Eingabefeld hinter Play: Knopf Vollständige Lösung mit 2·k + 2·s + r = 14 Gleichungen und Unbekannten auf einer Seite
SymPy
from sympy import pi, S, pprint, symbols, cos, sin, Matrix, Eq, solve, sqrt, exp, default_sort_key
# Given Symbols:
l1, l2, d, E, F1, F2 = symbols("l1, l2, d, E, F1, F2")
EA = E*pi*d**2/4
# Unknowns:
S1, S2, dl1, dl2 = symbols("S1, S2, dl1, dl2")
u0x, u0y, u1x, u1y, u2x, u2y = symbols("u0x, u0y, u1x, u1y, u2x, u2y")
# Reactions:
R0x, R0y, R1y, R2y = symbols("R0x, R0y, R1y, R2y")
# Loads:
F1, F2 = symbols("F1, F2")
# Displacements:
u0 = Matrix([u0x, u0y])
u1 = Matrix([u1x, u1y])
u2 = Matrix([u2x, u2y])
# Reactions:
R0 = Matrix([R0x, R0y])
R1 = Matrix([0, R1y])
R2 = Matrix([0, R2y])
# Loads:
F1 = Matrix([-F1, 0])
F2 = Matrix([ F2, 0])
# Elasticity:
eq_1 = Eq( S1, EA * dl1/l1 )
eq_2 = Eq( S2, EA * dl2/l2 )
# Kinematics:
e = Matrix([1, 0])
eq_3 = Eq( dl1, e.dot(u1 - u0) )
eq_4 = Eq( dl2, e.dot(u2 - u1) )
# Equilibrium:
Zero = Matrix([0, 0])
eq_5_6 = Eq( R0 + S1*e, Zero )
eq_7_8 = Eq( F1 + R1 - S1*e + S2*e, Zero )
eq_9_10 = Eq( F2 + R2 - S2*e , Zero )
# Constraints:
eq_11 = Eq(u0x, 0)
eq_12 = Eq(u0y, 0)
eq_13 = Eq(u1y, 0)
eq_14 = Eq(u2y, 0)
# Solve:
eqns = [eq_1,eq_2,eq_3,eq_4,eq_5_6,eq_7_8,eq_9_10,eq_11,eq_12,eq_13,eq_14]
unks = [S1,S2, dl1,dl2, u0x,u0y,u1x,u1y,u2x,u2y, R0x,R0y,R1y,R2y]
sol = solve(eqns, unks)
pprint("\nSolution (all zero-results suppressed):")
for s in sorted(sol,key=default_sort_key):
if sol[s] != 0:
print("\n")
pprint(str(s)+":")
pprint(sol[s])
[ ]: einfügen.▶ drücken.
a) Querschnittsfläche
Berechnen Sie die Querschnittsfläche \(A\) beider Stäbe.
Die Querschnittsfläche \(A\) wird nicht als Unbekannte betrachtet, sondern sofort berechnet und ab dann als bekannt angenommen. Es gilt:Lösung
b) Elastizität
Hookesches Gesetz: Notieren Sie den Zusammenhang zwischen den Stabkräften \(S_1\) und \(S_2\) und den (genäherten) Stabverlängerungen \(\Delta l_1\) und \(\Delta l_2\):
Stabverlängerungen: Bis hierher: 4 Unbekannte: \(S_1, S_2, \Delta l_1, \Delta l_2\) - und 2 Gleichungen.Lösung
c) Kinematik: Verlängerungen
Berechnen Sie die Verlängerungen \(\Delta l_1\) und \(\Delta l_2\), und zwar abhängig von den unbekannten Verschiebungen \(u_1\) und \(u_2\).
Verlängerungen \(\Delta l_1\) und \(\Delta l_2\) der Stäbe 1 und 2: Bis hierher: 6 Unbekannte: \(S_1, S_2, \Delta l_1, \Delta l_2, u_1, u_2\) - und 4 Gleichungen. Aus dem Bild: Damit ist die genäherte Stabverlängerung nach Stab-Kinematik & -Elastizität:Lösung
Details
d) Gleichgewicht
Berechnen Sie die Stabkräfte \(S_1\) und \(S_2\), und zwar abhängig von den gegebenen Symbolen \(F_1\) und \(F_2.\)
Zugkräfte \(S_1\) und \(S_2\): Jetzt: 6 Unbekannte - und 6 Gleichungen.Lösung
e) Gleichungssystem
Geben Sie ein Gleichungssystem an, aus dem die Unbekannten berechnet werden könnten. Dies sollten (2·k + 2·s - r = 6) Gleichungen mit ebenso vielen Unbekannten sein.
Nummerieren Sie die Gleichungen, aus denen das Gleichungssystem besteht.
Markieren Sie alle Unbekannten, die in diesen Gleichungen auftauchen.
Zeigen Sie, dass das Gleichungssystem aus ebenso vielen Gleichungen wie Unbekannte enthält.
Zeigen Sie, dass Sie wahren Aussagen erhalten, wenn Sie die folgende Lösung des Gleichungssystems in alle Gleichungen Ihres Gleichungssystems einsetzen:
Die 6 Gleichungen sind: Für jede dieser Gleichungen gilt: Setzt man die gegebene Lösung ein, so erhält man eine wahre Aussage.Lösung
Folgendes wäre der Lösungsweg, um \(u_2\) zu berechnen. Dies ist aber nicht Bestandteil der Aufgabe! Eliminieren von \(A\) und \(S_1\) und \(S_2\) in die letzten beiden Gleichungen ergibt: Dies sind vier Gleichungen für vier Unbekannte \(\Delta l_1, \Delta l_2, u_1, u_2\). Eliminieren von \(\Delta l_1\) und \(\Delta l_2\) ergibt: Dies sind zwei Gleichungen für zwei Unbekannte \(u_1, u_2\). Eliminieren von \(u_1\) ergibt:Rechenweg
f) Lösung für Größen
Berechnen Sie \(u_2\) in \({\mathrm{mm}}\) (Millimeter) gerundet auf Rundestellenwert \(0{,}001\) für folgende Größen:
Zeigen Sie, dass:
Einsetzen der gegebenen Größen in die Lösung des Gleichungssystems liefert die Behauptung.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, Eq, solve, sqrt, exp, simplify
# 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
mm = m/1000
# 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
# ---
l1, l2, d, E = symbols("l1, l2, d, E", positive=True)
F1, F2 = symbols("F1, F2")
A = pi*d**2/4
sub_list = [
( l1 , 0.6 *m ),
( l2 , 0.4 *m ),
( d , 20 *mm ),
( E , 200 *GPa ),
( F1 , 100 *kN ),
( F2 , 40 *kN ),
]
S1, S2, dl1, dl2, u1, u2 = symbols("S1, S2, dl1, dl2, u1, u2")
eq1 = Eq( S1, E*A * dl1/l1 )
eq2 = Eq( S2, E*A * dl2/l2 )
eq3 = Eq( dl1, u1 )
eq4 = Eq( dl2, u2 - u1 )
eq5 = Eq( S1, F2 - F1 )
eq6 = Eq( S2, F2 )
pprint("\nSolution:")
unks = [S1, S2, dl1, dl2, u1, u2]
eqns = [eq1, eq2, eq3, eq4, eq5, eq6]
sol = solve(eqns, unks)
pprint(sol)
pprint("\nu2 / mm:")
u2 = sol[u2]
printout(u2, unit=mm, prec=3, sub_list=sub_list)
[ ]: einfügen.▶ drücken.