Example deflection using Castigliano

import matplotlib
if not hasattr(matplotlib.RcParams, "_get"):
    matplotlib.RcParams._get = dict.get

Example deflection using Castigliano#

import sympy as sym
q, L, x, F_c, B_v, EI = sym.symbols('q, L, x, F_c, B_v, EI')
M_1 = -q * (L - x)**2 / 2 - F_c * (L/2 - x) + B_v * (L-x)
M_2 = -q * (L - x)**2 / 2 + B_v * (L-x)
display(M_1)
display(M_2)
\[\displaystyle B_{v} \left(L - x\right) - F_{c} \left(\frac{L}{2} - x\right) - \frac{q \left(L - x\right)^{2}}{2}\]
\[\displaystyle B_{v} \left(L - x\right) - \frac{q \left(L - x\right)^{2}}{2}\]
display(M_1.diff(B_v))
display(M_2.diff(B_v))
\[\displaystyle L - x\]
\[\displaystyle L - x\]
w = sym.integrate(M_1 * M_1.diff(B_v) / EI, (x,0,L/2)) + sym.integrate(M_2 * M_2.diff(B_v) / EI, (x,L/2,L))
B_v_sol = sym.solve(w,B_v)[0]
display(B_v_sol)
\[\displaystyle \frac{5 F_{c}}{16} + \frac{3 L q}{8}\]
M_1 = M_1.subs(B_v,B_v_sol)
M_2 = M_2.subs(B_v,B_v_sol)
display(M_1)
display(M_2)
\[\displaystyle - F_{c} \left(\frac{L}{2} - x\right) - \frac{q \left(L - x\right)^{2}}{2} + \left(\frac{5 F_{c}}{16} + \frac{3 L q}{8}\right) \left(L - x\right)\]
\[\displaystyle - \frac{q \left(L - x\right)^{2}}{2} + \left(\frac{5 F_{c}}{16} + \frac{3 L q}{8}\right) \left(L - x\right)\]
display(M_1.diff(F_c))
display(M_2.diff(F_c))
\[\displaystyle - \frac{3 L}{16} + \frac{11 x}{16}\]
\[\displaystyle \frac{5 L}{16} - \frac{5 x}{16}\]
w_C = sym.integrate(M_1 * M_1.diff(F_c) / EI, (x,0,L/2)) + sym.integrate(M_2 * M_2.diff(F_c) / EI , (x , L/2, L))
display(w_C.subs(F_c,0))
\[\displaystyle \frac{L^{4} q}{192 EI}\]