After completing this chapter, you should be able to:
State the linear elastic constitutive relations \(N = EA\varepsilon\), \(Q = GA^*\gamma\), \(M = EI\chi\)
State the Bernoulli hypothesis and derive the Euler–Bernoulli beam equation \(EI w'''' = q\)
Formulate boundary conditions for clamped, pinned and free ends
Solve beam deflection problems by integrating the beam equation
With equilibrium (Chapter 4), kinematics (Chapter 5) and virtual work (Chapter 6) we have two separate sets of equations: one for the internal forces \(N\), \(Q\), \(M\) and one for the displacements \(u\), \(w\), \(\varphi\). Virtual work told us which force belongs to which strain. What is still missing is the link between them: how much does a beam bend under a given moment? This link depends on the material and is called the constitutive relation. Once it is known, we can compute deflections — and solve beams that equilibrium alone cannot solve.
Constitutive relations
The strain measures \(\varepsilon\), \(\gamma\), and \(\chi\) describe the local deformation of the beam, but they do not tell us anything about the forces required to produce these deformations. To close the system of equations, we need constitutive relations that connect the kinematic quantities to the internal forces. These relations depend on the material properties and encode how stiff the beam is against different types of deformation.
For a linear elastic beam, the constitutive relations take a particularly simple form: each internal force is proportional to its conjugate strain measure. The normal force \(N\) is proportional to the axial strain, \[N = EA\,\varepsilon,\] where \(E\) is Young’s modulus and \(A\) is the cross-sectional area. The product \(EA\) is called the axial stiffness and determines how much force is needed to stretch the beam by a given amount. A beam with a larger cross-section or made from a stiffer material requires more force to achieve the same axial strain.
Similarly, the shear force \(Q\) is proportional to the shear strain, \[Q = GA\,\gamma,\] where \(G\) is the shear modulus. The product \(GA\) is called the shear stiffness. In practice, a correction factor \(\kappa\) (the Timoshenko shear coefficient) is often introduced to account for the non-uniform distribution of shear stress across the cross-section, giving \(Q = \kappa GA\,\gamma\). For a rectangular cross-section, \(\kappa \approx 5/6\).
Finally, the bending moment \(M\) is proportional to the curvature, \[M = EI\,\chi,\] where \(I\) is the second moment of area (moment of inertia) of the cross-section about the neutral axis. The product \(EI\) is called the flexural rigidity or bending stiffness. This quantity plays a central role in beam theory: it determines how much moment is required to bend the beam by a given amount. The second moment of area \(I\) depends on the shape of the cross-section and how the material is distributed relative to the neutral axis. Moving material away from the neutral axis (as in an I-beam) dramatically increases \(I\) and hence the bending stiffness.
NoteSummary of constitutive relations
The three constitutive relations for a linear elastic beam are:
These relate internal forces (from equilibrium) to kinematic quantities (from geometry).
The Bernoulli hypothesis
So far, we have kept the rotation \(\varphi\) as an independent kinematic variable. This general formulation leads to Timoshenko beam theory, which accounts for shear deformation and is necessary for thick beams or beams made of materials with low shear stiffness. However, for most engineering applications involving slender beams, shear deformation is small compared to bending deformation, and we can make a powerful simplifying assumption.
The Bernoulli hypothesis (also called the Euler-Bernoulli or Navier-Bernoulli assumption) states:
“Plane cross-sections remain plane and perpendicular to the deformed beam axis.”
This seemingly simple statement has profound consequences. It says that when a beam bends, each cross-section rotates as a rigid body and always stays at right angles to the curved beam axis. There is no “shearing” of the cross-section relative to the axis—the cross-section simply follows the slope of the beam. Figure 1 illustrates this difference.
Code
import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.patches import Rectangle, FancyArrowPatchfig, (ax1, ax2) = plt.subplots(1, 2, figsize=(7, 3))# Colorsbeam_color ='#cccccc'arrow_color ='#008fe0'# Left panel: General case (with shear)ax1.set_title('General beam (Timoshenko)', fontsize=12)# Draw curved beam axis (z points down, so deflection goes down in plot)x = np.linspace(0, 1, 100)w =-0.15* np.sin(np.pi * x) # negative for z-down conventionax1.plot(x, w, 'k-', linewidth=2, label='beam axis')# Draw cross-sections at various pointsfor x_pos in [0.25, 0.5, 0.75]: idx =int(x_pos *99)# Slope of beam axis in plot coordinates dw_dx_plot =-0.15* np.pi * np.cos(np.pi * x_pos)# Cross-section rotation (different from slope - shear deformation) phi = dw_dx_plot *0.7# not perpendicular cs_length =0.08 dx =-cs_length/2* np.sin(phi) dz = cs_length/2* np.cos(phi) ax1.plot([x_pos - dx, x_pos + dx], [w[idx] - dz, w[idx] + dz], 'b-', linewidth=3)ax1.text(0.5, 0.08, r'$\gamma \neq 0$: cross-sections NOT $\perp$ to axis', fontsize=10, ha='center', style='italic')ax1.set_xlim(-0.05, 1.1)ax1.set_ylim(-0.25, 0.12)ax1.set_aspect('equal')ax1.axis('off')# Right panel: Bernoulli case (no shear)ax2.set_title('Bernoulli beam (Euler-Bernoulli)', fontsize=12)# Draw curved beam axisax2.plot(x, w, 'k-', linewidth=2, label='beam axis')# Draw cross-sections perpendicular to beam axisfor x_pos in [0.25, 0.5, 0.75]: idx =int(x_pos *99)# Slope of beam axis in plot coordinates dw_dx_plot =-0.15* np.pi * np.cos(np.pi * x_pos)# Cross-section rotation equals slope (perpendicular to axis) phi = np.arctan(dw_dx_plot) cs_length =0.08 dx =-cs_length/2* np.sin(phi) dz = cs_length/2* np.cos(phi) ax2.plot([x_pos - dx, x_pos + dx], [w[idx] - dz, w[idx] + dz], 'b-', linewidth=3)ax2.text(0.5, 0.08, r'$\gamma = 0$: cross-sections $\perp$ to axis', fontsize=10, ha='center', style='italic')ax2.set_xlim(-0.05, 1.1)ax2.set_ylim(-0.25, 0.12)ax2.set_aspect('equal')ax2.axis('off')plt.tight_layout()plt.show()
Figure 1: The Bernoulli hypothesis: cross-sections remain perpendicular to the deformed beam axis. This means the rotation \(\varphi\) equals the slope \(\mathrm{d}w/\mathrm{d}x\).
Mathematically, the Bernoulli hypothesis constrains the cross-section rotation to equal the negative of the slope of the beam axis: \[\varphi = -\frac{\mathrm{d}w}{\mathrm{d}x}\] The negative sign arises because with our conventions (\(z\) pointing downward, \(\varphi\) positive counterclockwise), a positive slope \(\mathrm{d}w/\mathrm{d}x\) corresponds to a clockwise rotation, which is negative \(\varphi\).
This constraint has an immediate and important consequence: the shear strain vanishes. Substituting the Bernoulli hypothesis into the shear strain definition gives \[\gamma = \frac{\mathrm{d}w}{\mathrm{d}x} + \varphi = \frac{\mathrm{d}w}{\mathrm{d}x} - \frac{\mathrm{d}w}{\mathrm{d}x} = 0.\] This is the mathematical expression of “perpendicular to the axis”—no shear strain means the cross-section does not tilt relative to the beam axis.
With \(\varphi\) no longer independent, the curvature becomes a function of the deflection alone: \[\chi = \frac{\mathrm{d}\varphi}{\mathrm{d}x} = -\frac{\mathrm{d}^2 w}{\mathrm{d}x^2}.\] This is a crucial simplification: instead of two independent kinematic variables (\(w\) and \(\varphi\)), we now have only one (\(w\)). The entire bending behavior of the beam is captured by a single function—the deflection \(w(x)\).
The Bernoulli hypothesis is an excellent approximation when the beam is slender (its length \(L\) is much larger than its cross-sectional dimensions), when shear deformation is negligible compared to bending deformation, and when the material is homogeneous and isotropic. For short, deep beams or sandwich structures with soft cores, the Timoshenko theory (which retains \(\gamma \neq 0\)) provides more accurate results. As a rule of thumb, Bernoulli beam theory is accurate when the length-to-depth ratio exceeds about 10.
Euler-Bernoulli beam equations
Combining the Bernoulli hypothesis with the constitutive relation for bending:
From the equilibrium relations derived in Chapter 4 (and again from virtual work in Chapter 6): \[Q = \frac{\mathrm{d}M}{\mathrm{d}x} \quad \text{and} \quad q = -\frac{\mathrm{d}Q}{\mathrm{d}x}\]
we obtain: \[Q = -\frac{\mathrm{d}}{\mathrm{d}x}\left(EI\,\frac{\mathrm{d}^2 w}{\mathrm{d}x^2}\right)\]
and \[q = \frac{\mathrm{d}^2}{\mathrm{d}x^2}\left(EI\,\frac{\mathrm{d}^2 w}{\mathrm{d}x^2}\right)\]
For a beam with constant flexural rigidity \(EI\), this simplifies to:
This is the Euler-Bernoulli beam equation, the fundamental differential equation governing beam deflection.
NoteSign convention
The sign in the Euler-Bernoulli equation depends on the sign conventions used for \(q\), \(Q\), \(M\), and \(w\). With our conventions (positive \(w\) and \(q\) in the positive \(z\)-direction, i.e., downward), we have \(EI\,w'''' = q\). Some textbooks use opposite conventions, resulting in \(EI\,w'''' = -q\).
Boundary conditions
The fourth-order differential equation requires four boundary conditions. These depend on the support type:
Consider a cantilever beam of length \(L\), fixed at \(x=0\), with a downward point load \(F\) at the free end \(x=L\).
Code
import numpy as npimport matplotlib.pyplot as pltfrom matplotlib.patches import Rectanglefig, ax = plt.subplots(figsize=(7, 3))# Colorsbeam_color ='#cccccc'support_color ='#7f7f7f'load_color ='#008fe0'L =1.0beam_height =0.08# Draw the beambeam = Rectangle((0, -beam_height/2), L, beam_height, facecolor=beam_color, edgecolor='black', linewidth=2)ax.add_patch(beam)# Draw the fixed supportwall_width =0.05wall_height =0.3wall = Rectangle((-wall_width, -wall_height/2), wall_width, wall_height, facecolor=support_color, edgecolor='black', linewidth=1.5, hatch='///')ax.add_patch(wall)# Draw point load arrow (pointing down = positive z direction, from top of beam)arrow_length =0.18ax.annotate('', xy=(L, beam_height/2), xytext=(L, beam_height/2+ arrow_length), arrowprops=dict(arrowstyle='->', color=load_color, lw=2.5))ax.text(L +0.03, beam_height/2+ arrow_length/2, r'$F$', fontsize=14, ha='left', va='center', color=load_color)# Dimension line for Ldim_y =0.15ax.annotate('', xy=(0, dim_y), xytext=(L, dim_y), arrowprops=dict(arrowstyle='<->', color='black', lw=1.5))ax.text(L/2, dim_y +0.04, r'$L$', fontsize=14, ha='center')# Coordinate axesax.annotate('', xy=(1.15, 0), xytext=(0, 0), arrowprops=dict(arrowstyle='->', color='black', lw=1.5))ax.text(1.18, 0, r'$x$', fontsize=14, va='center')ax.annotate('', xy=(0, -0.25), xytext=(0, 0), arrowprops=dict(arrowstyle='->', color='black', lw=1.5))ax.text(0.03, -0.28, r'$z$', fontsize=14, ha='left')ax.set_xlim(-0.15, 1.3)ax.set_ylim(-0.35, 0.25)ax.set_aspect('equal')ax.axis('off')plt.tight_layout()plt.show()
Figure 2: Cantilever beam with point load \(F\) at the free end.
Our goal is to find the deflection \(w(x)\) of the beam. We will solve the Euler-Bernoulli beam equation with appropriate boundary conditions.
For \(0 < x < L\), there is no distributed load (the load is concentrated at the end), so \(q(x) = 0\). The Euler-Bernoulli equation becomes: \[EI\,\frac{\mathrm{d}^4 w}{\mathrm{d}x^4} = 0\]
To solve this fourth-order ordinary differential equation, we need to integrate four times. Each integration introduces one constant of integration, so we expect four unknown constants in our general solution. Integrating the equation \(w'''' = 0\) once gives \(w''' = C_4\) (a constant). Integrating again gives \(w'' = C_4 x + C_3\). Continuing: \[w' = \frac{C_4}{2}x^2 + C_3 x + C_2\]\[w = \frac{C_4}{6}x^3 + \frac{C_3}{2}x^2 + C_2 x + C_1\]
It is conventional to redefine the constants to absorb the numerical factors. Writing the general solution as: \[w(x) = C_1 + C_2 x + C_3 x^2 + C_4 x^3\]
we see that the deflection is a cubic polynomial in \(x\). The four constants \(C_1, C_2, C_3, C_4\) must be determined from boundary conditions.
The fourth-order equation requires exactly four boundary conditions—two at each end of the beam. At the fixed end (\(x=0\)): the beam cannot move vertically, so \(w(0) = 0\), and the beam cannot rotate (the slope is zero), so \(w'(0) = 0\). At the free end (\(x=L\)): there is no bending moment, so \(M(L) = 0\), and a point load \(F\) acts downward, which must equal the shear force, so \(Q(L) = F\).
To use the last two conditions, we need to express \(M\) and \(Q\) in terms of \(w\). From the Euler-Bernoulli theory: \[M = -EI\,w'' \quad \text{and} \quad Q = -EI\,w'''\]
Therefore, the boundary conditions at the free end become: \[w''(L) = 0 \quad \text{and} \quad -EI\,w'''(L) = F\]
Now we apply each boundary condition to determine the constants. From \(w(0) = 0\), we substitute \(x = 0\) into \(w(x) = C_1 + C_2 x + C_3 x^2 + C_4 x^3\): \[w(0) = C_1 + 0 + 0 + 0 = C_1 = 0\]
From \(w'(0) = 0\), we first differentiate \(w(x)\) to get \(w'(x) = C_2 + 2C_3 x + 3C_4 x^2\). Then: \[w'(0) = C_2 + 0 + 0 = C_2 = 0\]
From \(M(L) = -EI\,w''(L) = 0\), we differentiate again to get \(w''(x) = 2C_3 + 6C_4 x\). The condition \(w''(L) = 0\) gives: \[2C_3 + 6C_4 L = 0\]
Solving for \(C_3\): \[C_3 = -3C_4 L\]
From \(Q(L) = -EI\,w'''(L) = F\), we differentiate once more to get \(w'''(x) = 6C_4\). The condition becomes: \[-EI \cdot 6C_4 = F\]
Solving for \(C_4\): \[C_4 = -\frac{F}{6EI}\]
Now we can find \(C_3\) using the relation from the moment condition: \[C_3 = -3C_4 L = -3 \cdot \left(-\frac{F}{6EI}\right) \cdot L = \frac{FL}{2EI}\]
Substituting the constants back into the general solution: \[w(x) = 0 + 0 \cdot x + \frac{FL}{2EI} x^2 + \left(-\frac{F}{6EI}\right) x^3\]
The maximum deflection occurs at the free end, \(x = L\): \[w_{\max} = w(L) = \frac{FL^2}{6EI}(3L - L) = \frac{FL^2}{6EI} \cdot 2L = \frac{FL^3}{3EI}\]
The deflection is positive (downward, since \(z\) points down), which is correct for a downward load. The deflection increases with force \(F\) and length \(L\), and decreases with bending stiffness \(EI\)—all as expected. The cubic dependence on \(L\) explains why long cantilevers deflect much more than short ones.
NoteChapter Summary
This chapter closed the beam equations with the material law:
Constitutive relations: \(N = EA\varepsilon\), \(Q = GA^*\gamma\), \(M = EI\chi\) — each internal force is proportional to its conjugate strain
Bernoulli hypothesis: cross-sections remain plane and perpendicular to the axis; \(\varphi = -\mathrm{d}w/\mathrm{d}x\), \(\gamma = 0\)