import matplotlib
if not hasattr(matplotlib.RcParams, "_get"):
matplotlib.RcParams._get = dict.get
Begeleide oefening 2#
Gegeven is de volgende constructie:
Fig. 220 #
Plot de zakkings- en momentenlijn en bepaal de locatie van het buigpunt.
Opgave
Maak de opdracht in WebLab. Heb je nog geen toegang? Schrijf je dan eerst hier in voor dit vak op WebLab.
Je kan je antwoord op de vragen in de volgende opgaves invoeren. Maar om je code te checken zorg je ervoor dat deze in de variabele x_buigpunt is opgeslagen en klik je op ‘Check’ in WebLab. De plotjes worden niet grafisch gecontroleerd, maar je vergelijkingen V1, M1, etc. worden gecheckt op de randvoorwaarden.
Opgave
Welke voorwaarden gelden op \(x=0\)?
Voor … kan je elke waarde ongelijk aan \(0\) invullen die je van tevoren kan bepalen enkel op basis van het model op \(x=0\).
Well done!
Try again! You selected at least one incorrect option.
Try again! You missed at least one correct option.
Opgave
Welke voorwaarden gelden op \(x=1.5\)?
Voor … kan je elke waarde ongelijk aan \(0\) invullen die je van tevoren kan bepalen enkel op basis van het model op \(x=1.5\).
Well done!
Try again! You selected at least one incorrect option.
Try again! You missed at least one correct option.
Opgave
Welke voorwaarden gelden op \(x=3\)?
Voor … kan je elke waarde ongelijk aan \(0\) invullen die je van tevoren kan bepalen enkel op basis van het model op \(x=3\).
Well done!
Try again! You selected at least one incorrect option.
Try again! You missed at least one correct option.
Opgave
Welke voorwaarden gelden op \(x=7\)?
Voor … kan je elke waarde ongelijk aan \(0\) invullen die je van tevoren kan bepalen enkel op basis van het model op \(x=7\).
Well done!
Try again! You selected at least one incorrect option.
Try again! You missed at least one correct option.
Opgave
Wat is de momentenlijn van de constructie?
Oplossing
Fig. 221 #
Opgave
Wat is de zakkingslijn van de constructie?
Oplossing
Fig. 222 #
Opgave
Wat is de locatie van het buigpunt in \(\rm{m}\) volgens het gegeven assenstelsel?
Uitwerking
import sympy as sym
sym.init_printing(use_latex='mathjax')
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import display as ipy_display, Math
%config InlineBackend.figure_formats = ['svg']
def display(*objs):
for obj in objs:
if isinstance(obj, dict):
lines = [f"{sym.latex(k)} &= {sym.latex(obj[k])}" for k in sorted(obj, key=lambda s: str(s))]
ipy_display(Math(r"\begin{aligned}" + r"\\ ".join(lines) + r"\end{aligned}"))
else:
ipy_display(obj)
def plot(w_list, x_range_list,ylabel):
fig = plt.figure(facecolor='none')
for i, w in enumerate(w_list):
# check if x is the only symbol in the expression
if len(w.free_symbols) > 1:
raise ValueError('The expression must be a function of x only.')
w_numpy = sym.lambdify(x, w)
x_vals = np.linspace(x_range_list[i][0], x_range_list[i][1], 100)
# if the expression is a constant, we need to make sure that it is broadcasted correctly
if isinstance(w_numpy(x_vals),float) or isinstance(w_numpy(x_vals),int):
w_numpy = np.vectorize(w_numpy)
plt.plot(x_vals,w_numpy(x_vals))
plt.xlabel('$x$')
plt.ylabel(ylabel)
ax = plt.gca()
ax.set_facecolor('none')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.spines['bottom'].set_position('zero')
ax.spines['left'].set_position('zero')
ax.invert_yaxis()
import sympy as sym
sym.var('x')
sym.var('C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12');
q1 = 0 # kN/m
q2 = 0 # kN/m
q3 = 0 # kN/m
V1 = sym.integrate(-q1,x)+C1 # kN
M1 = sym.integrate(V1,x)+C2 # kNm
kappa1 = M1 / 12000 # 1/m
phi1 = sym.integrate(kappa1,x)+C3 # rad
w1 = sym.integrate(-phi1,x)+C4 # m
V2 = sym.integrate(-q2,x)+C5 # kN
M2 = sym.integrate(V2,x)+C6 # kNm
kappa2 = M2 / 12000 # 1/m
phi2 = sym.integrate(kappa2,x)+C7 # rad
w2 = sym.integrate(-phi2,x)+C8 # m
V3 = sym.integrate(-q3,x)+C9 # kN
M3 = sym.integrate(V3,x)+C10 # kNm
kappa3 = M3 / 12000 # 1/m
phi3 = sym.integrate(kappa3,x)+C11 # rad
w3 = sym.integrate(-phi3,x)+C12 # m
Eq1 = sym.Eq( M1.subs(x, 0) , 0)
Eq2 = sym.Eq( V1.subs(x, 0) , 0)
Eq3 = sym.Eq(phi1.subs(x, 1.5), phi2.subs(x, 1.5))
Eq4 = sym.Eq( w1.subs(x, 1.5), w2.subs(x, 1.5))
Eq5 = sym.Eq( M1.subs(x, 1.5), M2.subs(x, 1.5) )
Eq6 = sym.Eq( -V1.subs(x, 1.5) - 50 + V2.subs(x, 1.5), 0)
Eq7 = sym.Eq( w2.subs(x, 3) , 0)
Eq8 = sym.Eq( w3.subs(x, 3) , 0)
Eq9 = sym.Eq( M2.subs(x, 3) , M3.subs(x, 3))
Eq10 = sym.Eq(phi2.subs(x, 3) , phi3.subs(x, 3))
Eq11 = sym.Eq( w3.subs(x,7), 0)
Eq12 = sym.Eq( M3.subs(x,7) + 80 , 0)
sol = sym.solve((Eq1, Eq2, Eq3, Eq4, Eq5, Eq6, Eq7, Eq8, Eq9, Eq10, Eq11, Eq12), (C1, C2, C3, C4, C5, C6, C7, C8, C9, C10, C11, C12))
display(sol)
w1_oplossing = w1.subs(sol)
w2_oplossing = w2.subs(sol)
w3_oplossing = w3.subs(sol)
M1_oplossing = M1.subs(sol)
M2_oplossing = M2.subs(sol)
M3_oplossing = M3.subs(sol)
plot([w1_oplossing, w2_oplossing, w3_oplossing], [(0, 1.5), (1.5, 3), (3, 7)], 'w(x)')
plot([M1_oplossing, M2_oplossing, M3_oplossing], [(0, 1.5), (1.5, 3), (3, 7)], 'M(x)')
eq13 = sym.Eq(M3_oplossing, 0)
x_buigpunt = sym.solve(eq13, x)[0] # m
display(x_buigpunt)