2.1.Q
Älteres Video zur Unvollständigen LösungVideos
Gegeben
Symbole:
\(E, A\) für alle Stäbe gleich.
FEM-Lösung
siehe R2.A
Source Code eines Programms dazu: Programm im nachfolgenden Frame 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 = 20 Gleichungen und Unbekannten auf einer Seite
SymPy
from sympy.physics.units import kg, m, s
from sympy import S, var, sqrt, Eq, solve, pprint, Matrix, pi, cos, sin, simplify, zeros
# Units:
N = kg*m/s**2
(mm, cm) = ( m/1000, m/100 )
kN = 10**3*N
Pa = N/m**2
MPa = 10**6*Pa
GPa = 10**9*Pa
deg = pi/180
half = S(1)/2
# Rounding:
def iso_round(x, pv):
try:
x = float(x)
tmp = round(x, pv)
except TypeError:
from functools import partial
func = partial(round, ndigits = pv)
tmp = x.applyfunc(func)
return tmp
# Parameters:
F, E, A, l = var("F, E, A, l")
EA = E*A
sub_list = [
( F, 5 *kN ),
( E, 200 *GPa ),
( A, 25 *mm**2 ),
( l, 1707 *mm ),
]
# Shortcuts:
p1, p2, p3 = 45 *deg, 90 *deg, 135 *deg
c1, c2, c3 = cos(p1), cos(p2), cos(p3)
s1, s2, s3 = sin(p1), sin(p2), sin(p3)
l1, l2, l3 = sqrt(2)*l, l, sqrt(2)*l
# Symbols:
S1, S2, S3 = var("S1, S2, S3")
dl1, dl2, dl3 = var("dl1, dl2, dl3")
u1x, u1y = var("u1x, u1y")
u2x, u2y = var("u2x, u2y")
u3x, u3y = var("u3x, u3y")
u4x, u4y = var("u4x, u4y")
u1 = Matrix([u1x, u1y])
u2 = Matrix([u2x, u2y])
u3 = Matrix([u3x, u3y])
u4 = Matrix([u4x, u4y])
R1x, R1y = var("R1x, R1y")
R2x, R2y = var("R2x, R2y")
R3x, R3y = var("R3x, R3y")
R1 = Matrix([R1x, R1y])
R2 = Matrix([R2x, R2y])
R3 = Matrix([R3x, R3y])
e1 = Matrix([c1, s1])
e2 = Matrix([c2, s2])
e3 = Matrix([c3, s3])
Fv = Matrix([0, -F])
zero = Matrix([0, 0])
# Equations:
unks = [S1,S2,S3,\
dl1,dl2,dl3,\
u1x,u1y, u2x,u2y, u3x,u3y, u4x,u4y,\
R1x,R1y, R2x,R2y, R3x,R3y
]
eqns = [
Eq( S1 , EA * dl1 / l1 ),
Eq( S2 , EA * dl2 / l2 ),
Eq( S3 , EA * dl3 / l3 ),
Eq( dl1 , e1.dot(u4 - u1 ) ),
Eq( dl2 , e2.dot(u4 - u2 ) ),
Eq( dl3 , e3.dot(u4 - u3 ) ),
Eq( R1 + S1*e1, zero ),
Eq( R2 + S2*e2, zero ),
Eq( R3 + S3*e3, zero ),
Eq( Fv - S1*e1 - S2*e2 - S3*e3, zero ),
Eq( u1, zero ),
Eq( u2, zero ),
Eq( u3, zero ),
]
sol = solve(eqns, unks)
pprint("\n(S₁, S₂, S₃) / F:")
S1, S2, S3 = sol[S1], sol[S2], sol[S3]
for S in [S1, S2, S3]:
tmp = S / F
tmp = tmp.simplify()
pprint(tmp)
pprint("\n(Δl₁, Δl₂, Δl₃) / ( Fl / (EA) ):")
dl1, dl2, dl3 = sol[dl1], sol[dl2], sol[dl3]
fac = F*l / EA
for dl in [dl1, dl2, dl3]:
tmp = dl / fac
tmp = tmp.simplify()
pprint(tmp)
pprint("\n(u4x, u4y) / ( Fl / (EA) ):")
tmp = Matrix([sol[u4x], sol[u4y]])
tmp /= fac
tmp = tmp.applyfunc(simplify)
pprint(tmp)
pprint("\nu4y / mm:")
tmp = sol[u4y]
tmp = tmp.subs(sub_list)
tmp /= mm
tmp = iso_round(tmp, 5)
pprint(tmp)
[ ]:
einfügen.▶
drücken.
Source Code eines Programms dazu: Programm im nachfolgenden Frame ausführen? Dazu: Copy: Source Code in die Zwischenablage kopieren. Paste: Source Code ins Eingabefeld hinter Play: Knopf Unvollständige Lösung mit 2·k + 2·s - r = 8 Gleichungen und Unbekannten auf einer Seite
SymPy
from sympy.physics.units import kg, m, s
from sympy import S, var, sqrt, Eq, solve, pprint, Matrix, pi, cos, sin, simplify
# Units:
N = kg*m/s**2
(mm, cm) = ( m/1000, m/100 )
kN = 10**3*N
Pa = N/m**2
MPa = 10**6*Pa
GPa = 10**9*Pa
deg = pi/180
half = S(1)/2
# Rounding:
def iso_round(x, pv):
try:
x = float(x)
tmp = round(x, pv)
except TypeError:
from functools import partial
func = partial(round, ndigits = pv)
tmp = x.applyfunc(func)
return tmp
# Parameters:
F, E, A, l = var("F, E, A, l")
EA = E*A
# Shortcuts:
p1, p2, p3 = 45 *deg, 90 *deg, 135 *deg
c1, c2, c3 = cos(p1), cos(p2), cos(p3)
s1, s2, s3 = sin(p1), sin(p2), sin(p3)
r = sqrt(2)
c = r / 2
# Symbols:
S1, S2, S2p, S3 = var("S1, S2, S2p, S3")
dl1, dl2, dl3 = var("dl1, dl2, dl3")
u4x, u4y = var("u4x, u4y")
sub_list = [
( F, 5 *kN ),
( E, 200 *GPa ),
( A, 25 *mm**2 ),
( l, 1707 *mm ),
]
symm = True
# symm = False
# Equations:
if symm:
pprint("Symmetry used.")
unks = [S1, S2p, dl1, dl2, u4x, u4y] # 6 Unknowns.
eqns = [ # 6 Equations:
Eq( dl1 , S1/EA * r*l ), # 1
Eq( dl2 , S2p/(EA/2) * l ), # 2
Eq( 0, u4x ), # 3
Eq( 0, S1*s1 + S2p + F/2 ), # 4
Eq( dl1 , c1 * u4x + s1 * u4y ), # 5
Eq( dl2 , c2 * u4x + s2 * u4y ), # 6
]
else:
pprint("Symmetry not used.")
unks = [S1, S2, S3, dl1, dl2, dl3, u4x, u4y] # 8 Unknowns.
eqns = [ # 8 Equations:
Eq( dl1 , S1/EA * r*l ), # 1
Eq( dl2 , S2/EA * l ), # 2
Eq( dl3 , S3/EA * r*l ), # 3
Eq( - S1*c1 - S2*c2 - S3*c3, 0 ), # 4
Eq( -F - S1*s1 - S2*s2 - S3*s3, 0 ), # 5
Eq( dl1 , c1 * u4x + s1 * u4y ), # 6
Eq( dl2 , c2 * u4x + s2 * u4y ), # 7
Eq( dl3 , c3 * u4x + s3 * u4y ), # 8
]
sol = solve(eqns, unks)
fac = F*l / EA
if symm:
S1, S2p = sol[S1], sol[S2p]
dl1, dl2 = sol[dl1], sol[dl2]
u4x, u4y = sol[u4x], sol[u4y]
pprint("\n(S₁, S₂') / F:")
for S in [S1, S2p]:
tmp = S / F
tmp = tmp.simplify()
pprint(tmp)
pprint("\n(Δl₁, Δl₂) / (Fl/EA):")
for s in [dl1, dl2]:
tmp = s / fac
tmp = tmp.simplify()
pprint(tmp)
else:
S1, S2, S3 = sol[S1], sol[S2], sol[S3]
dl1, dl2, dl3 = sol[dl1], sol[dl2], sol[dl3]
u4x, u4y = sol[u4x], sol[u4y]
pprint("\n(S₁, S₂, S₃) / F:")
for S in [S1, S2, S3]:
tmp = S / F
tmp = tmp.simplify()
pprint(tmp)
pprint("\n(Δl₁, Δl₂, Δl₃) / ( Fl / (EA) ):")
for s in [dl1, dl2, dl3]:
tmp = s / fac
tmp = tmp.simplify()
pprint(tmp)
pprint("\n(u4x, u4y) / ( Fl / (EA) ):")
tmp = Matrix([u4x, u4y])
tmp /= fac
tmp = tmp.applyfunc(simplify)
tmp = tmp.expand()
pprint(tmp)
pprint("\nu4y / mm:")
tmp = u4y
tmp = tmp.subs(sub_list)
tmp /= mm
tmp = iso_round(tmp, 5)
pprint(tmp)
[ ]:
einfügen.▶
drücken.
a) Elastizität
Geben Sie Stabkräfte an abhängig von den genäherten Stabverlängerungen und den gegebenen Symbolen. D.h. notieren Sie das Hookesche Gesetz für die drei Stäbe.
Die Stäbe 1 und 3 haben die Länge \(\sqrt 2 l\). Und Stab 2 hat die Länge \(l\).Lösung
b) Gleichgewicht
Machen Sie einen Knotenschnitt am Knoten 4. Geben Sie zwei Gleichgewichtsbedingungen an.
Lösung
c) Kinematik
Geben Sie die (genäherten) Stabverlängerungen \(\Delta l_1, \Delta l_2, \Delta l_3\) an abhängig von den \((x,y)\)-Komponenten \((u_{4x}, u_{4y})\) des Verschiebungsvektors \(\boldsymbol u_4\) von Knoten 4.
\((x,y)\)-Komponenten der Einheitsvektoren: Stabverlängerungen:Lösung
d) Gleichungssystem und Lösung
Berechnen Sie abhängig von den gegebenen Symbolen:
Berechnen Sie außerdem \(u_{4y}\) für folgende Größen:
Und zwar in \(\mathrm{mm}\) (Millimeter) und gerundet auf Rundestellenwert \(0{,}00001\):
Die o.g. Gleichungen sind 8 Gleichungen zur Berechnung der 8 Unbekannten \((S_1, S_2, S_3, \Delta l_1, \Delta l_2, \Delta l_3, u_{4x}, u_{4y})\). Lösung: Source Code eines Programms dazu: Programm im nachfolgenden Frame ausführen? Dazu: Copy: Source Code in die Zwischenablage kopieren. Paste: Source Code ins Eingabefeld hinter Play: Knopf Lösung
SymPy
from sympy.physics.units import kg, m, s
from sympy import S, var, sqrt, Eq, solve, pprint, Matrix, pi, cos, sin, simplify
# Units:
N = kg*m/s**2
(mm, cm) = ( m/1000, m/100 )
kN = 10**3*N
Pa = N/m**2
MPa = 10**6*Pa
GPa = 10**9*Pa
deg = pi/180
half = S(1)/2
# Rounding:
def iso_round(x, pv):
try:
x = float(x)
tmp = round(x, pv)
except TypeError:
from functools import partial
func = partial(round, ndigits = pv)
tmp = x.applyfunc(func)
return tmp
# Parameters:
F, E, A, l = var("F, E, A, l")
EA = E*A
# Shortcuts:
p1, p2, p3 = 45 *deg, 90 *deg, 135 *deg
c1, c2, c3 = cos(p1), cos(p2), cos(p3)
s1, s2, s3 = sin(p1), sin(p2), sin(p3)
r = sqrt(2)
c = r / 2
# Symbols:
S1, S2, S2p, S3 = var("S1, S2, S2p, S3")
dl1, dl2, dl3 = var("dl1, dl2, dl3")
u4x, u4y = var("u4x, u4y")
sub_list = [
( F, 5 *kN ),
( E, 200 *GPa ),
( A, 25 *mm**2 ),
( l, 1707 *mm ),
]
symm = True
# symm = False
# Equations:
if symm:
pprint("Symmetry used.")
unks = [S1, S2p, dl1, dl2, u4x, u4y] # 6 Unknowns.
eqns = [ # 6 Equations:
Eq( dl1 , S1/EA * r*l ), # 1
Eq( dl2 , S2p/(EA/2) * l ), # 2
Eq( 0, u4x ), # 3
Eq( 0, S1*s1 + S2p + F/2 ), # 4
Eq( dl1 , c1 * u4x + s1 * u4y ), # 5
Eq( dl2 , c2 * u4x + s2 * u4y ), # 6
]
else:
pprint("Symmetry not used.")
unks = [S1, S2, S3, dl1, dl2, dl3, u4x, u4y] # 8 Unknowns.
eqns = [ # 8 Equations:
Eq( dl1 , S1/EA * r*l ), # 1
Eq( dl2 , S2/EA * l ), # 2
Eq( dl3 , S3/EA * r*l ), # 3
Eq( - S1*c1 - S2*c2 - S3*c3, 0 ), # 4
Eq( -F - S1*s1 - S2*s2 - S3*s3, 0 ), # 5
Eq( dl1 , c1 * u4x + s1 * u4y ), # 6
Eq( dl2 , c2 * u4x + s2 * u4y ), # 7
Eq( dl3 , c3 * u4x + s3 * u4y ), # 8
]
sol = solve(eqns, unks)
fac = F*l / EA
if symm:
S1, S2p = sol[S1], sol[S2p]
dl1, dl2 = sol[dl1], sol[dl2]
u4x, u4y = sol[u4x], sol[u4y]
pprint("\n(S₁, S₂') / F:")
for S in [S1, S2p]:
tmp = S / F
tmp = tmp.simplify()
pprint(tmp)
pprint("\n(Δl₁, Δl₂) / (Fl/EA):")
for s in [dl1, dl2]:
tmp = s / fac
tmp = tmp.simplify()
pprint(tmp)
else:
S1, S2, S3 = sol[S1], sol[S2], sol[S3]
dl1, dl2, dl3 = sol[dl1], sol[dl2], sol[dl3]
u4x, u4y = sol[u4x], sol[u4y]
pprint("\n(S₁, S₂, S₃) / F:")
for S in [S1, S2, S3]:
tmp = S / F
tmp = tmp.simplify()
pprint(tmp)
pprint("\n(Δl₁, Δl₂, Δl₃) / ( Fl / (EA) ):")
for s in [dl1, dl2, dl3]:
tmp = s / fac
tmp = tmp.simplify()
pprint(tmp)
pprint("\n(u4x, u4y) / ( Fl / (EA) ):")
tmp = Matrix([u4x, u4y])
tmp /= fac
tmp = tmp.applyfunc(simplify)
tmp = tmp.expand()
pprint(tmp)
pprint("\nu4y / mm:")
tmp = u4y
tmp = tmp.subs(sub_list)
tmp /= mm
tmp = iso_round(tmp, 5)
pprint(tmp)
[ ]:
einfügen.▶
drücken.
e) Symmetrie
Zeigen Sie, dass Sie bei Ausnutzung der Symmetrie dieselbe Lösung erhalten.
6 Gleichungen zur Berechnung der 6 Unbekannten \((S_1, S_2', \Delta l_1, \Delta l_2, u_{4x}, u_{4y})\) und Lösung: Source Code eines Programms dazu: Programm im nachfolgenden Frame ausführen? Dazu: Copy: Source Code in die Zwischenablage kopieren. Paste: Source Code ins Eingabefeld hinter Play: Knopf Lösung
SymPy
from sympy.physics.units import kg, m, s
from sympy import S, var, sqrt, Eq, solve, pprint, Matrix, pi, cos, sin, simplify
# Units:
N = kg*m/s**2
(mm, cm) = ( m/1000, m/100 )
kN = 10**3*N
Pa = N/m**2
MPa = 10**6*Pa
GPa = 10**9*Pa
deg = pi/180
half = S(1)/2
# Rounding:
def iso_round(x, pv):
try:
x = float(x)
tmp = round(x, pv)
except TypeError:
from functools import partial
func = partial(round, ndigits = pv)
tmp = x.applyfunc(func)
return tmp
# Parameters:
F, E, A, l = var("F, E, A, l")
EA = E*A
# Shortcuts:
p1, p2, p3 = 45 *deg, 90 *deg, 135 *deg
c1, c2, c3 = cos(p1), cos(p2), cos(p3)
s1, s2, s3 = sin(p1), sin(p2), sin(p3)
r = sqrt(2)
c = r / 2
# Symbols:
S1, S2, S2p, S3 = var("S1, S2, S2p, S3")
dl1, dl2, dl3 = var("dl1, dl2, dl3")
u4x, u4y = var("u4x, u4y")
sub_list = [
( F, 5 *kN ),
( E, 200 *GPa ),
( A, 25 *mm**2 ),
( l, 1707 *mm ),
]
symm = True
# symm = False
# Equations:
if symm:
pprint("Symmetry used.")
unks = [S1, S2p, dl1, dl2, u4x, u4y] # 6 Unknowns.
eqns = [ # 6 Equations:
Eq( dl1 , S1/EA * r*l ), # 1
Eq( dl2 , S2p/(EA/2) * l ), # 2
Eq( 0, u4x ), # 3
Eq( 0, S1*s1 + S2p + F/2 ), # 4
Eq( dl1 , c1 * u4x + s1 * u4y ), # 5
Eq( dl2 , c2 * u4x + s2 * u4y ), # 6
]
else:
pprint("Symmetry not used.")
unks = [S1, S2, S3, dl1, dl2, dl3, u4x, u4y] # 8 Unknowns.
eqns = [ # 8 Equations:
Eq( dl1 , S1/EA * r*l ), # 1
Eq( dl2 , S2/EA * l ), # 2
Eq( dl3 , S3/EA * r*l ), # 3
Eq( - S1*c1 - S2*c2 - S3*c3, 0 ), # 4
Eq( -F - S1*s1 - S2*s2 - S3*s3, 0 ), # 5
Eq( dl1 , c1 * u4x + s1 * u4y ), # 6
Eq( dl2 , c2 * u4x + s2 * u4y ), # 7
Eq( dl3 , c3 * u4x + s3 * u4y ), # 8
]
sol = solve(eqns, unks)
fac = F*l / EA
if symm:
S1, S2p = sol[S1], sol[S2p]
dl1, dl2 = sol[dl1], sol[dl2]
u4x, u4y = sol[u4x], sol[u4y]
pprint("\n(S₁, S₂') / F:")
for S in [S1, S2p]:
tmp = S / F
tmp = tmp.simplify()
pprint(tmp)
pprint("\n(Δl₁, Δl₂) / (Fl/EA):")
for s in [dl1, dl2]:
tmp = s / fac
tmp = tmp.simplify()
pprint(tmp)
else:
S1, S2, S3 = sol[S1], sol[S2], sol[S3]
dl1, dl2, dl3 = sol[dl1], sol[dl2], sol[dl3]
u4x, u4y = sol[u4x], sol[u4y]
pprint("\n(S₁, S₂, S₃) / F:")
for S in [S1, S2, S3]:
tmp = S / F
tmp = tmp.simplify()
pprint(tmp)
pprint("\n(Δl₁, Δl₂, Δl₃) / ( Fl / (EA) ):")
for s in [dl1, dl2, dl3]:
tmp = s / fac
tmp = tmp.simplify()
pprint(tmp)
pprint("\n(u4x, u4y) / ( Fl / (EA) ):")
tmp = Matrix([u4x, u4y])
tmp /= fac
tmp = tmp.applyfunc(simplify)
tmp = tmp.expand()
pprint(tmp)
pprint("\nu4y / mm:")
tmp = u4y
tmp = tmp.subs(sub_list)
tmp /= mm
tmp = iso_round(tmp, 5)
pprint(tmp)
[ ]:
einfügen.▶
drücken.