Particle Equilibrium
Particle equilibrium is the statics model for a body whose size and rotational effects do not matter for the question being asked. All external forces are treated as concurrent at one point, so force balance is the entire mechanical statement. This model appears in cable joints, rings, pulleys treated as ideal pins, small collars on guides, and three-dimensional attachments where several members meet at one connector.
The topic is simple in principle and unforgiving in practice. The equation is short, but the success of the solution depends on a complete free-body diagram, correct force directions, and enough independent scalar equations. A particle in 2D supplies two scalar equations; a particle in 3D supplies three.
Definitions
A particle is an idealized body with position but no size or orientation. In statics, it has no acceleration, so linear momentum is constant and the force balance reduces to
In 2D Cartesian form,
In 3D Cartesian form,
A free-body diagram for a particle shows the isolated point and every external force acting on it. It should include known forces, unknown reaction components, cable tensions, weights if the particle represents a small mass, and any applied loads. It should not include forces exerted by the particle on other bodies; those appear on the other bodies' diagrams.
A two-force member is a body loaded only at two points and in equilibrium. If its own weight is negligible or included at an end, the forces at its ends must be equal, opposite, and collinear. In particle problems, a two-force member attached to a joint contributes one unknown axial force along the member. A positive solved value may be interpreted as tension under the assumed direction; a negative value indicates compression or the opposite direction.
A cable tension is usually modeled as an unknown force along the cable, pulling away from the isolated particle. For a massless, frictionless cable over ideal pulleys, the same tension magnitude acts throughout a continuous cable segment. If friction, pulley inertia, or cable mass matters, this simplification no longer applies.
Key results
The central result is that a stationary particle cannot have a nonzero resultant force:
The vector equation is equivalent to independent scalar component equations. The number of unknown scalar force components that can be determined directly equals the number of independent component equations. A 2D particle gives two independent equations; a 3D particle gives three. If there are more unknowns than equations, additional constraints, known ratios, or other connected-body diagrams are needed. If there are fewer unknowns than equations, the data may be inconsistent or may determine a condition such as a required angle.
For a particle with three nonparallel forces in 2D, the force vectors form a closed triangle. This gives a geometric alternative to components:
The triangle method is useful for insight, but component equations are usually more robust when signs and unknowns accumulate.
For 3D particle equilibrium, write every cable or member force using unit vectors:
Then assemble
This gives a linear system in the unknown force magnitudes if the geometry is known. The coefficients are direction cosines, so each coefficient should lie between and .
Equilibrium is also a useful modeling test. If a proposed support arrangement provides only one direction of force but the load has components in two independent directions, a single particle cannot remain in equilibrium. In actual hardware, some unmodeled effect must then be present: friction, contact against another surface, stiffness of a member, or acceleration.
Visual
| Model | Scalar equations | Typical unknowns | Warning sign |
|---|---|---|---|
| 2D particle | 2 | Two cable tensions, or one tension plus one reaction component | Three unknown force magnitudes without more information |
| 3D particle | 3 | Three cable tensions, or three reaction components | Coplanar cable directions may not support an out-of-plane load |
| Smooth contact particle | 2 or 3 | Normal reaction perpendicular to surface | No tangential force unless friction is modeled |
| Pin-connected joint in truss | 2 | Member axial forces | Include only members and external joint loads |
Worked example 1: Suspended ring with two cables
Problem. A ring supports a downward load of N. Two cables attach to the ring. Cable is above the horizontal to the left, and cable is above the horizontal to the right. Find the cable tensions.
Method. Isolate the ring. Assume both cable tensions pull away from the ring. Resolve each force into components and solve the two equilibrium equations.
- Let be the left cable tension and be the right cable tension. With to the right and upward,
and the load is
- Write force balance in :
Therefore
- Write force balance in :
- Substitute the relation for :
- Solve:
Using , , and ,
Then
- Check vertical balance:
The small N difference is rounding. The checked answer is
The steeper right cable carries more load because it supplies more vertical component per unit horizontal balance requirement.
Worked example 2: Three-dimensional cable support
Problem. A small joint at supports a N downward load. It is held by three cables attached to m, m, and m. Find the cable tensions.
Method. Use unit vectors along each cable, then solve the three component equilibrium equations.
- Direction to :
- Direction to :
- Direction to :
- Equilibrium is
- Write scalar equations:
-
From the equation, . Let both equal .
-
The equation becomes
- Substitute in balance:
Thus
and
The checked answer is
The symmetry in points and correctly produces equal tensions and canceling components.
Code
import numpy as np
points = {
"A": np.array([3.0, 0.0, 4.0]),
"B": np.array([-2.0, 3.0, 6.0]),
"C": np.array([-2.0, -3.0, 6.0]),
}
unit_vectors = []
for name in ["A", "B", "C"]:
r = points[name]
unit_vectors.append(r / np.linalg.norm(r))
# Columns are cable unit vectors. A @ tensions + load = 0.
A = np.column_stack(unit_vectors)
load = np.array([0.0, 0.0, -900.0])
tensions = np.linalg.solve(A, -load)
for name, tension in zip(["A", "B", "C"], tensions):
print(f"T_{name} = {tension:.2f} N")
print("residual =", A @ tensions + load)
Common pitfalls
- Drawing the force a cable exerts on the joint in the wrong direction.
- Including action-reaction pairs on the same free-body diagram.
- Treating a support as a particle when its moment balance is actually needed.
- Solving a 3D problem with only two equations because the sketch looks planar.
- Assuming a negative tension is impossible without first checking the assumed direction convention.
- Forgetting that a smooth surface supplies only a normal force.
- Using rounded unit vectors too early, which can noticeably disturb equilibrium in 3D systems.