The Golden Quad of Chapter 8.9 was applied to whole bars, and it produced \(\delta = FL/EA\). That result carries an assumption we never had to state, because it was built into the geometry: the stress is the same everywhere along the bar. As soon as the cross section tapers, or the load acts along the length rather than at the end, the assumption fails and there is no single \(N\) to divide by a single \(A\).
The repair is to apply the same three relations to an infinitesimal slice rather than to the whole bar. What comes out is a differential equation, and \(\delta = FL/EA\) turns out to be one of its solutions. This is the first place in the book where the reduction runs the other way from Chapter 8.14: instead of specialising the continuum, we generalise the elementary formula, and the two meet in the middle.
The problem
Figure 8.10.1 shows an elastic rod of constant cross-sectional area \(A\) in \(\text{mm}^2\), hanging from a fixed support. A force \(F\) in \(\text{N}\) acts at the free end at \(x = L\), and a body load \(f(x)\) in \(\text{N}/\text{mm}\) acts along the entire length. The body load is a force per unit length, so gravity is the obvious example.
Figure 8.10.1: An elastic rod under a tip force \(F\) and a distributed body load \(f(x)\).
We want the displacement \(u(x)\) at every point, given the two boundary conditions: the rod is fixed at the top, \(u(0) = 0\), and loaded at the bottom by \(F\).
Equilibrium of a slice
Take a slice of length \(\Delta x\) at an arbitrary position \(x\), as in Figure 8.10.2. The normal force enters the slice at one end and leaves at the other, and the body load acting over the slice is the integral of \(f\) across it.
Figure 8.10.2: Normal forces and body load on a slice of length \(\Delta x\).
with \(N(L) = F\) at the loaded end. Letting \(\Delta x \to 0\), the integral tends to \(f(x)\Delta x\) and the difference quotient tends to the derivative,
This is 8.7.7, the continuum equilibrium equation, integrated over the cross section and written for one dimension. The divergence of the stress has become an ordinary derivative because nothing varies across the section.
The remaining two relations are the ones we already have. Forces and stresses are connected by the definition of stress, assuming as always that it is uniform over the section,
and strains and displacements by the geometric definition of 8.5.2. Figure 8.10.3 shows the displacements of the two ends of the slice, whose difference divided by the slice length is the strain,
Figure 8.10.3: Displacements at the two ends of the slice.
Substituting 8.10.4 into 8.10.3, the result into 8.10.2 and that into 8.10.1 chains the three relations of the Golden Quad into a single differential equation,
\[
\boxed{
\text{(BVP)}\quad
\begin{cases}
-\dfrac{d}{dx}\left(EA\dfrac{du}{dx}\right) = f & \text{for } x \in [0, L]\\[10pt]
u(0) = 0 & \text{Essential boundary condition}\\[6pt]
EA\dfrac{du}{dx}(L) = F & \text{Natural boundary condition}
\end{cases}}
\tag{8.10.5}\]
Notice that \(EA\) sits inside the derivative. That placement is what allows the stiffness to vary along the rod, and it is the whole reason for deriving the differential form.
The two boundary conditions are of different kinds, and the distinction runs through all of computational mechanics. The condition \(u(0) = 0\) constrains the unknown function itself and is called essential, or Dirichlet. The condition \(EAu'(L) = F\) constrains a derivative of the unknown, which through 8.10.2 means it prescribes a force, and it is called natural, or Neumann. The naming is not arbitrary. In the finite element method the essential condition must be imposed explicitly on the approximation space, whereas the natural condition appears by itself when the weak form is derived, which is where “natural” comes from.
⚠ Note
The same pattern reappears in Chapter 8.14. There the fourth-order equation 8.14.10 needs two conditions per end, and 8.14.12 pairs them the same way: prescribing deflection or slope is essential, prescribing moment or shear is natural.
Solving the rod under its own weight
Let the body load be the rod’s own weight, \(f(x) = \rho g A\), with \(\rho\) the density and \(g\) the gravitational acceleration, so that \(f\) comes out as a force per unit length. SymPy solves 8.10.5 directly.
x, L, E, A, F, rho, g = sp.symbols('x L E A F rho g', positive=True)u = sp.Function('u')f_body = rho*g*Aode = sp.Eq(-sp.diff(E*A*sp.diff(u(x), x), x), f_body)bcs = {u(0): 0, sp.diff(u(x), x).subs(x, L): F/(E*A)}u_sol = sp.expand(sp.dsolve(ode, u(x), ics=bcs).rhs)ltx(r"u(x) =", u_sol)
The displacement is quadratic in \(x\): linear from the tip force, quadratic from the weight, since the weight carried by a section grows with the amount of rod hanging below it. Evaluating at the free end gives the total elongation.
\[
\delta = \frac{FL}{EA} + \frac{\rho g L^2}{2E}
\tag{8.10.6}\]
Setting the density to zero recovers \(\delta = FL/EA\) exactly, which is the check we wanted: the elementary formula is the special case of 8.10.5 with no body load. The self-weight term is worth reading on its own. It does not contain \(A\) at all, because a thicker rod weighs proportionally more and carries proportionally more, so the two effects cancel. It contains \(L^2\), so it is negligible for a bolt and dominant for a mine hoist rope. Setting the two terms equal gives the length at which a rod’s own weight matters as much as its payload, \(L = 2F/(\rho g A)\), which for a steel rod of \(100~\text{mm}^2\) carrying \(10~\text{kN}\) works out at about \(2.6~\text{km}\).
\[ \begin{aligned}L_{\text{equal}} &=\dfrac{2 F}{A g \rho}\\ &=2.6~\text{km}\end{aligned} \]
A tapered rod
The case that motivated the derivation is one where \(A\) varies, and it now costs nothing extra. Let the rod be conical, tapering linearly from an area \(A_0\) at the support to half that at the tip,
\[
A(x) = A_0\left(1 - \frac{x}{2L}\right)
\]
carrying a tip force \(F\) and no body load.
With no body load, 8.10.1 gives \(dN/dx = 0\), so the normal force is constant along the rod and equal to the tip force, \(N = F\). The strain then follows from 8.10.2 and 8.10.3 as \(\varepsilon = F/(EA(x))\), and the displacement is its integral. Rather than let SymPy pick a branch of the logarithm, we write the candidate down and verify that it satisfies all three parts of 8.10.5.
\[ \begin{aligned}u(x) &=- \dfrac{2 F L \log{\left(1 - \dfrac{x}{2 L} \right)}}{A_{0} E}\\ \delta &=\dfrac{2 F L \log{\left(2 \right)}}{A_{0} E}\approx1.386\frac{FL}{EA_0}\end{aligned} \]
The exact elongation is \(2\ln 2 \approx 1.386\) times \(FL/(EA_0)\). A tempting shortcut would be to use the average area, \(\bar A = 0.75 A_0\), which gives \(1.333\) times the same quantity and is \(4\%\) low. The error is small here because the taper is gentle, and it grows quickly as the tip narrows: the integrand \(1/A(x)\) blows up as the area goes to zero, so a rod that tapers to a point has infinite compliance while its average area is a perfectly finite number.
Code
k, s_ = sp.symbols('k s', positive=True)# dimensionless elongation, delta*E*A_0/(F*L), for a rod tapering to k*A_0exact = sp.simplify(sp.integrate(1/(1- (1-k)*s_), (s_, 0, 1)))mean =2/(1+ k)ltx(r"\text{exact} &=", exact, r"\\\text{mean-area shortcut} &=", mean, aligned=True)
Plotting both against the tip-to-root area ratio shows where the shortcut stops being usable.
Code
ratios = np.linspace(0.05, 0.999, 200)f_exact = sp.lambdify(k, exact, 'numpy')f_mean = sp.lambdify(k, mean, 'numpy')fig, ax = plt.subplots(figsize=(6.5, 4))ax.plot(ratios, f_exact(ratios), lw=2, label="exact, from the BVP")ax.plot(ratios, f_mean(ratios), lw=2, ls='--', label=r"shortcut, using the mean area")ax.set_xlabel(r"tip area / root area")ax.set_ylabel(r"$\delta\,EA_0/(FL)$")ax.set_ylim(0, 8)ax.grid(True)ax.legend()plt.show()
The two curves agree for a prismatic rod and diverge as the taper sharpens. This is the practical argument for the differential formulation: it costs one extra line of SymPy and it is right in cases where the algebraic shortcut is not.
What we have and what is missing
8.10.5 is a complete model of an axially loaded member, and it has the same structure as every field problem in this book: a differential equation from equilibrium, a constitutive law inside it, and two boundary conditions of different kinds. Replacing \(EA\) by a thermal conductivity, \(u\) by a temperature and \(f\) by heat generation turns it into steady heat conduction without changing a symbol of the mathematics, which is why one finite element code solves both.
What we cannot do with 8.10.5 is handle a structure made of many rods pointing in different directions, because the equation lives on a line and a truss does not. Extending it requires each rod’s local axis to be related to a common global frame, which is the subject of Chapter 8.12.