Voorbeeld 7

Voorbeeld 7#

import sympy as sym
import matplotlib.pyplot as plt
import numpy as np
sym.init_printing()
oo = sym.Dummy('oo', prime=True)
very_small = 1/oo
x = sym.symbols('x')

C_1, C_2, C_3, C_4 = sym.symbols('C_1, C_2, C_3, C_4')
A_v, B_v = sym.symbols('A_v, B_v')
ql, Vl, Ml, kappal, phil, wl = sym.symbols('q_z, V, M, kappa, phi, w')
L = 10
F = 35

EI = sym.symbols('EI')

q = A_v * sym.SingularityFunction(x,0,-1) + F * sym.SingularityFunction(x,L/2,-1) + B_v * sym.SingularityFunction(x,L,-1)
display(sym.Eq(ql,q))
../../../_images/c0ef2776e881870bed6992de59a73a56acf65a7e8f617b582d402b14437f1ca6.png
V = -sym.integrate(q, x) + C_1
display(sym.Eq(Vl,V))
M = sym.integrate(V, x) + C_2
display(sym.Eq(Ml,M))
kappa = M/EI + 1/EI*(1-5/x)*sym.SingularityFunction(x,5,0)*(A_v*L/2) + 1/EI*(1-5/x)*sym.SingularityFunction(x,5,1)*(A_v+F)
display(sym.Eq(kappal,kappa))
phi = sym.integrate(kappa, x) + C_3
display(sym.Eq(phil,phi))
w = -sym.integrate(phi, x) + C_4
display(sym.Eq(wl,w))
../../../_images/7604c2dd23b7ce2de59d111188f49233aac6626f5690448a25867be35a219c01.png ../../../_images/f609e38c6d78ccdd41b089c4d486461eaf12b1c1ce22c928a989ada02ba32c68.png ../../../_images/bc0fdfa610c9f35cb3c1ff797b46e3357b2a0c5a420068065008da01abef0ebf.png ../../../_images/8a0d30df871244ae52110b513c83213eb803f04b8b76f56123afd49b25228a02.png ../../../_images/e632adf2e0e72d58d239cd17ccf92c4dc1c5bc3f02f1d7283861c86074bab222.png
eq1 = sym.Eq(M.subs(x,0),0)
eq2 = sym.Eq(w.subs(x,0-very_small),0).subs(oo,sym.oo)
eq3 = sym.Eq(M.subs(x,L),0)
eq4 = sym.Eq(w.subs(x,L),0)
eq5 = sym.Eq(V.subs(x,0-very_small),0).subs(oo,sym.oo)
eq6 = sym.Eq(V.subs(x,L+very_small),0).subs(oo,sym.oo)
display(eq1, eq2, eq3, eq4, eq5, eq6)
../../../_images/9cc2e3c0c5db8011bcd40f7b76d402c61b2ff3341e693915ce92b10f0dda5d1e.png ../../../_images/363a245cc9072af09b9a5fb9ecd9429a709d7d70ad13717df58d5166b5163860.png ../../../_images/72baf215e866e7a60e6c341c8558d4a95f07663c3ffd9de8a5d10b5a73b15d2f.png ../../../_images/2907a254632554970a69a608842f360ee4b16f21cc226458d659c7e0af100b9e.png ../../../_images/e5948659485e9911da17c2d5166e7e3db2419f18a601281d8f3bdb9de5307718.png ../../../_images/3ce8e02b984793a381b44499afe0aeb2152e7890679653b8f027b9df9143cd24.png
sol = sym.solve((eq1,eq2,eq3,eq4,eq5,eq6),(C_1,C_2,C_3,C_4,A_v,B_v))
display(sol)
display(w.subs(sol).factor(EI))
../../../_images/ce0531c05c7408073243ad91e9ae824d2fb1eff69719733346396a9ab83b1718.png ../../../_images/477b295d7b21670637bd3b18903f70e843556b6c25786348176e2b095934ce74.png
w_numpy = sym.lambdify(x, w.subs(sol).subs(EI,10000).rewrite(sym.Piecewise))
x_numpy = np.linspace(0,L,100)
plt.figure()
plt.plot(x_numpy,w_numpy(x_numpy))
plt.xlabel('$x$')
plt.ylabel('$w$',rotation=0);
ax = plt.gca()
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()
print(w_numpy(5))
print(w_numpy(7.24562))
0.06627272482830962
0.04665771610574422
<lambdifygenerated-1>:2: RuntimeWarning: divide by zero encountered in log
  return 0.0205462116323286*x + 0.00875*((1/2)*x**2 - 5*x*log(x) + 5*x*log(5) - 25/2)*select([greater(x, 5),True], [1,0], default=nan) - 0.00175*((1/6)*x**3 - 5*x**2 + 25*x*log(x) - 25*x*log(5) + (25/2)*x + 125/3)*select([greater(x, 5),True], [1,0], default=nan) - 0.000291666666666667*select([greater(x, 0),True], [x**3,0], default=nan) + (7/12000)*select([greater(x - 5.0, 0),True], [125.0*(0.2*x - 1)**3,0], default=nan) - 0.000291666666666667*select([greater(x, 10),True], [(x - 10)**3,0], default=nan)
<lambdifygenerated-1>:2: RuntimeWarning: invalid value encountered in multiply
  return 0.0205462116323286*x + 0.00875*((1/2)*x**2 - 5*x*log(x) + 5*x*log(5) - 25/2)*select([greater(x, 5),True], [1,0], default=nan) - 0.00175*((1/6)*x**3 - 5*x**2 + 25*x*log(x) - 25*x*log(5) + (25/2)*x + 125/3)*select([greater(x, 5),True], [1,0], default=nan) - 0.000291666666666667*select([greater(x, 0),True], [x**3,0], default=nan) + (7/12000)*select([greater(x - 5.0, 0),True], [125.0*(0.2*x - 1)**3,0], default=nan) - 0.000291666666666667*select([greater(x, 10),True], [(x - 10)**3,0], default=nan)
../../../_images/800de723238bb7d393f240b2cba6514919274a9385c765f503375c36549ef6da.png
V_numpy = sym.lambdify(x, V.subs(sol).subs(EI,10000).rewrite(sym.Piecewise))
x_numpy = np.linspace(0,L,100)
plt.figure()
plt.plot(x_numpy,V_numpy(x_numpy))
plt.xlabel('$x$')
plt.ylabel('$V$',rotation=0);
ax = plt.gca()
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()
../../../_images/1389fa9b219eeb022d03bcd1b5032e06b659da5cb9679b85ae64a86cfbde64fa.png
M_numpy = sym.lambdify(x, M.subs(sol).subs(EI,10000).rewrite(sym.Piecewise))
x_numpy = np.linspace(0,L,100)
plt.figure()
plt.plot(x_numpy,M_numpy(x_numpy))
plt.xlabel('$x$')
plt.ylabel('$M$',rotation=0);
ax = plt.gca()
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()
../../../_images/37260adb904d941be29834c6f262b6e4423c11aee43c8f62ba75b9e824694433.png
kappa_numpy = sym.lambdify(x, kappa.subs(sol).subs(EI,10000).rewrite(sym.Piecewise))
x_numpy = np.linspace(0,L,100)
plt.figure()
plt.plot(x_numpy,kappa_numpy(x_numpy))
# plt.plot(x_numpy, a1(x_numpy))
plt.xlabel('$x$')
plt.ylabel('$\kappa$',rotation=0);
ax = plt.gca()
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()
<lambdifygenerated-4>:2: RuntimeWarning: divide by zero encountered in divide
  return -0.00875*(1 - 5/x)*select([greater(x, 5),True], [1,0], default=nan) + 0.00175*(1 - 5/x)*select([greater(x, 5),True], [x - 5,0], default=nan) + 0.00175*select([greater(x, 0),True], [x,0], default=nan) + 0.00175*select([greater(x, 10),True], [x - 10,0], default=nan) - 7/2000*select([greater(x - 5.0, 0),True], [x - 5.0,0], default=nan)
<lambdifygenerated-4>:2: RuntimeWarning: invalid value encountered in multiply
  return -0.00875*(1 - 5/x)*select([greater(x, 5),True], [1,0], default=nan) + 0.00175*(1 - 5/x)*select([greater(x, 5),True], [x - 5,0], default=nan) + 0.00175*select([greater(x, 0),True], [x,0], default=nan) + 0.00175*select([greater(x, 10),True], [x - 10,0], default=nan) - 7/2000*select([greater(x - 5.0, 0),True], [x - 5.0,0], default=nan)
../../../_images/cb2144e42b8b6b0b21f3dc6335af18d113d45219d732662665f977038277c60a.png