1.7.K
a) Lagerreaktionen
Berechnen Sie:
die Kraft \(A\), die bei A vom Lager nach oben auf den Balken wirkt und
die Kraft \(B\), die bei B vom Lager nach oben auf den Balken wirkt.
Zeigen Sie, dass:
Die Resultierende \(R\) (nach unten positiv gezählt) ist: Diese Kraft verteilt sich entsprechend der Hebel. Auswerten der Gleichgewichtsbedingungen liefert die Behauptung.
Berechnen Sie die Schnittgrößen Querkraft und Biegemoment. Zeigen Sie, dass in Bereich 1 = links gilt für alle \(0 < x < 12 a\): mit \(\xi = \tfrac{x}{a}\) und für alle \(0 < \xi < 12.\) Zeigen Sie, in Bereich 2 = rechts gilt für alle \(12 a < x < 18 a\): wieder mit \(\xi = \tfrac{x}{a}\) und für alle \(12 < \xi < 18.\) Freischneiden liefert diese Behauptung. Im Bereich rechts werden Querkraft und Biegemoment am negativen Schnittufer berechnet als:
Zeichnen Sie die dimensionslosen Schnittgrößen in ein einziges Diagramm. Zeichnen Sie \(\tfrac{Q_1}{qa}\) und \(\tfrac{M_1}{qa^2}\) im Bereich \(0 < x < 12 a\) bzw. \(0 < \xi < 12.\) Zeichnen Sie \(\tfrac{Q_2}{qa}\) und \(\tfrac{M_2}{qa^2}\) im Bereich \(12 a < x < 18 a\) bzw. \(12 < \xi < 18.\)
Berechnen Sie die Position \(x_0\) bzw. \(\xi_0\) , bei der das Biegemoment maximal ist. Zeigen Sie, dass: mit \(\xi_0 = \tfrac{x_0}{a}.\) Und berechnen Sie das Moment \(M_{\mathsf{max}}\) an dieser Position. 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 Lösung
b) Querkraft & Biegemoment
Lösung
c) Funktionsgraphen
Lösung
d) Extremwert
SymPy
from sympy.physics.units import kg, m, s
from sympy import pi, S, pprint, symbols, cos, sin, Matrix, Eq, solve, sqrt, exp, simplify # noqa: F401
from sympy import diff
import pickle
# 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
one = S(1)
# 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)
# old:
# except:
# new:
except AttributeError:
tmp = x.simplify()
if tmp is not None:
x = tmp
if prec != "nil":
x = iso_round(x, prec)
pprint(x)
return
# --- Input starting here.
# 10 04:
case = "ex_1"
case = "ex_2"
case = "1.7.K"
pprint("\nCase:")
pprint(case)
# --- Input ending here.
a, q = symbols("a, q", positive=True)
x, xi = symbols("x, xi", positive=True)
# scale:
# total length = a -> scale = 1
# total length = 3a -> scale = 3
# alpha:
# left = 2a, right = 2a -> alpha = 1/2
# left = 4a, right = 3a -> alpha = 4/7
# left = 2a, right = 1a -> alpha = 2/3
if case == "ex_1":
scale = 3
alpha = S(2)/3
elif case == "ex_2":
scale = 4
alpha = half
elif case == "1.7.K":
scale = 18
alpha = S(2)/3
else:
exit()
ltot = scale*a
beta = 1 - alpha
len1, len2 = alpha*ltot, beta*ltot
R = len2*q
pprint("\nA / (qa):")
A = half*beta*R
printout(A, unit=q*a, prec="nil", sub_list=[])
pprint("\nB / (qa):")
B = R - A
printout(B, unit=q*a, prec="nil", sub_list=[])
pprint("\nQ1 / (qa):")
Q1 = A
Q1 = Q1.subs(x, xi*a)
printout(Q1, unit=q*a, prec="nil", sub_list=[])
pprint("\nM1 / (qa²):")
M1 = A*x
M1 = M1.subs(x, xi*a)
printout(M1, unit=q*a*a, prec="nil", sub_list=[])
pprint("\nQ2 / (qa):")
Q2 = -B + q*(ltot - x)
Q2 = Q2.subs(x, xi*a)
printout(Q2, unit=q*a, prec="nil", sub_list=[])
pprint("\nM2 / (qa²):")
M2 = B*(ltot - x) - half*q*(ltot-x)**2
M2p = diff(M2, x)
M2 = M2.subs(x, xi*a)
printout(M2, unit=q*a*a, prec="nil", sub_list=[])
pprint("\nx₀ / a:")
eq = Eq(M2p, 0)
sol = solve(eq, x)
x0 = sol[0]
printout(x0, unit=a, prec="nil", sub_list=[])
pprint("\nMmax / (qa²):")
Mmax = M2.subs(xi, x0/a)
printout(Mmax, unit=q*a*a, prec="nil", sub_list=[])
# Save to database for plotting:
db = {
"a": a,
"q": q,
"xi": xi,
"scale": scale,
"alpha": alpha,
"Q1": Q1,
"M1": M1,
"Q2": Q2,
"M2": M2,
}
pickle.dump(db, open("db.pickle", "wb"))
[ ]: einfügen.▶ drücken.