2.1.S
Gegeben
Symbole:
Größen:
Unvollständige Lösung: Keine Gleichungen mit unbekannten Lagerreaktionen.Lösung auf einer Seite
a) Stabkräfte
Berechnen Sie die Stabkräfte. Zeigen Sie, dass:
b) Verschiebung
Berechnen Sie die Komponenten des Verschiebungsvektors von Knoten 1. Zeigen Sie, dass:
c) Probe mit Arbeitssatz
Berechnen Sie \(u_{1y}\) noch einmal. Und zwar zur Probe und mit dem Arbeitssatz. Zeigen Sie, dass:
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
cm = m/100
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
# ---
a, EA, F = symbols("a, EA, F")
sub_list = [
( a, 2 *m ),
( EA, 72 *GPa * 10*cm**2 ),
( F, 100 *kN ),
]
# ---
prec = 1
w5 = sqrt(5)
# Cosine and Sine:
c = 2/w5
s = 1/w5
l1 = 2*a
l2 = w5*a
k1 = EA/l1
k2 = EA/l2
S1, S2, dl1, dl2, u1x, u1y = symbols("S1, S2, dl1, dl2, u1x, u1y")
e1 = Matrix([1, 0])
e2 = Matrix([c, s])
u1 = Matrix([u1x,u1y])
# Equilibrium:
eq1 = Eq(S1 + S2*c, 0)
eq2 = Eq( F + S2*s, 0)
# Elasticity:
eq3 = Eq(S1, k1*dl1)
eq4 = Eq(S2, k2*dl2)
# Kinemmatics:
eq5 = Eq(dl1, e1.dot(u1))
eq6 = Eq(dl2, e2.dot(u1))
eqns = [eq1, eq2, eq3, eq4, eq5, eq6]
unks = [S1, S2, dl1, dl2, u1x, u1y]
sol = solve(eqns, unks)
pprint("\n(S1, S2):")
S1 = sol[S1]
S2 = sol[S2]
S2 = S2.simplify()
for Sx in [S1, S2]:
tmp = Sx
tmp = tmp.simplify()
pprint(tmp)
pprint("\nu1:")
u1x, u1y = sol[u1x], sol[u1y]
u1 = Matrix([u1x,u1y])
printout(u1, unit=1, prec="nil", sub_list=[])
pprint("\nu1 / mm:")
printout(u1, unit=mm, prec=prec, sub_list=sub_list)
pprint("\nChecking:")
u1y = symbols("u1y")
# Work done by force:
Wa = - half * F*u1y
# Stored energy:
Ws = half * (S1**2/k1 + S2**2/k2)
u1y = solve(Eq(Wa, Ws), u1y)
pprint(u1y)
[ ]: einfügen.▶ drücken.