The Zero-Torque Counterfactual
A moving club retains momentum, and the forces acting next depend on the current configuration, velocity, loads and internal state. A simulator can copy that state, set specified applied torques to zero, and calculate what follows. This is the forward Zero-Torque Counterfactual (ZTCF): a controlled comparison inside a model.
The useful question is precise: which input was changed, which state was copied, and which laws were retained? A branch that resembles a swing does not establish relaxed muscles. A branch that departs from a reference does not identify a particular muscle or control strategy. The calculation connects mechanics to a stated intervention; measurements and a separate identification argument are needed to connect it to a golfer.
Formal Definition of the ZTCF
Choose generalized coordinates \(q\), velocities \(v=\dot q\), internal states \(z\), and parameters \(p\). Internal states can include actuator activation, tendon strain, controller memory or flexible modes when the chosen model represents them. They must either evolve under specified equations or be explicitly held fixed as part of the intervention. The rigid three-link fixture discussed below has no such additional states.
For an unconstrained mechanical model with applied input \(u\), write
\[ \begin{aligned} \dot q&=v,\\ M(q)\dot v+h(q,v,z,t;p)&=B(q,z,t;p)u,\\ \dot z&=\psi(q,v,z,u,t;p). \end{aligned} \tag{1}\]
Here \(h\) is the complete retained bias on the left-hand side, including velocity-product and gravity terms and the signed contributions of other retained loads. This convention makes the zero-input acceleration \(-M^{-1}h\). Generalized coordinates need not all be angles; each row has its own force or moment units. The familiar rigid-body structure follows from kinetic and potential energy (Lynch and Park 2017; Featherstone 2008).
The full-state equation is control-affine, \(\dot x=f(x,t)+G(x,t)u\), only when all state equations are affine in the selected input within the chosen mode. Direct generalized torque input commonly has this property; a nonlinear activation or actuator command need not. State the physical input level before using affine superposition.
Four constructions answer different questions. A pointwise ZTCF sample evaluates \(f(x(t),t)\) at one reference state. A stitched pointwise ZTCF trace collects those samples along the reference; it is not an integrated path. A forward ZTCF trajectory solves the zeroed-input initial-value problem. A branched ZTCF trajectory starts that solve at a reference state and compares it with a separately specified reference branch. The full-state vector \(f\) includes velocity and internal-state derivatives; only its mechanical acceleration block has acceleration units.
Zeroing every declared input gives
\[ \dot x^0=f(x^0,t),\qquad x^0(t_0)=x_0. \tag{2}\]
If other channels remain, their input histories or feedback policies belong to the retained protocol. A time-varying load also remains time-dependent. The zeroed-input plant is autonomous only when the remaining laws have no explicit time dependence, or when the necessary clock/controller states are included. A recorded open-loop torque replay and a feedback controller reacting to the new state define different reference experiments.
Normative ZTCF Contract
Every executable or quantitative record uses affinedrift.ztcf-intervention/v1. The published normative schema and Python golden fixture freeze model/version/revision, inputs, state, units, frame, retained controls, constraints, contact, loads and internal states, solver/version, horizon, preconditions, postconditions, and failure states. The ZTCF is a model-conditioned intervention. The record separates simulated trajectory difference from any contribution measure. It states each causal estimand and physiological interpretation, and records non-identifiability explicitly. Unavailable or engine-unsupported interventions fail closed; no MATLAB, Simulink, or cross-engine parity result is inherited from the Python fixture. The public records are Normative Schema and Rigid Three-Link Golden Fixture.
The current fixture uses model version 2.0: a rigid three-link chain with consistent rigid inertia and bias forces. It integrates no flexible shaft states or additional shaft inertia. The historical version 1 fixture is preserved as a record of the earlier mixed-inertia calculation and is unsupported by the current adapter. The model change requires a new result; it does not inherit the old numerical or physical interpretation.
The analytical two-rod calculation later in this chapter checks the mechanics underlying a pointwise evaluation. It does not add a registered two-link simulator, publish a forward ZTCF result, or certify an engine. A new executable branch requires its own supported model and intervention record; the existing three-link fixture cannot supply those missing declarations.
The Decomposition: What the ZTCF Reveals
At the same time and full state, with the same parameters and admissible constraint mode, an affine acceleration solve gives
\[ a(x,u,t)=a_0(x,t)+H(x,t)u, \qquad a(x,u,t)-a(x,0,t)=H(x,t)u. \tag{3}\]
For the unconstrained model, \(a_0=-M^{-1}h\) and \(H=M^{-1}B\). This identity holds at every common state, not just the initial time. A reference branch and a zeroed-input branch normally share their state at the branch instant; later they generally do not. Subtracting their accelerations then includes the change in the drift itself:
\[ a(x^r,u,t)-a(x^0,0,t) =[a_0(x^r,t)-a_0(x^0,t)]+H(x^r,t)u. \]
Consequently, integrating the nominal input contribution along the reference is generally different from recomputing the trajectory after input removal. The removed input changes subsequent states, and those states change the forces and accelerations. This is the connection to induced-acceleration analysis: pointwise attribution and trajectory intervention share a dynamics model but answer different questions.
Constraints and Physical Outputs
For equality constraints at a fixed feasible mode, solve accelerations and reactions together:
\[ \begin{bmatrix}M&-A^T\\A&0\end{bmatrix} \begin{bmatrix}a\\\lambda\end{bmatrix} =\begin{bmatrix}Bu-h\\b\end{bmatrix}. \]
The acceleration constraint is \(Aa=b\), with \(b\) carrying curvature and prescribed support motion. Positive-definite \(M\) and independent rows of \(A\) give a unique equality-constrained solve. Its zero-input baseline includes the necessary reactions and constraint acceleration; it is generally not \(-M^{-1}h\). Contact forces must also satisfy the declared unilateral and friction conditions. A zeroed input can cause separation or a mode transition; retaining an impossible contact mode does not define a valid physical comparison.
For a fixed geometric point \(y(q)\), acceleration is \(\ddot y=Ja+\dot Jv\). At a common state the transport term cancels in the input increment, giving \(\Delta\ddot y=JHu\). On separated branches both \(J\) and \(\dot Jv\) can differ. A clubhead-speed contribution additionally uses the velocity-direction projection; angular acceleration alone is not clubhead acceleration, speed change or energy transfer.
Force Bookkeeping and Inverse Dynamics
In the unconstrained fully actuated case \(B=I\),
\[ Q_{\mathrm{inertial}}=Ma,\qquad Q_{\mathrm{retained}}=-h, \qquad u=Ma+h=M(a-a_0). \]
Thus a hypothetical scalar component of inertial generalized load of \(100\) N·m and retained load of \(85\) N·m leaves \(15\) N·m applied input. The first number must mean a component of \(Ma\). If inverse dynamics already reports the required applied input as \(100\) N·m, subtracting the retained load again is double counting. The same inverse-dynamics model can compute all these terms; ZTCF does not reveal information hidden from the equations.
With \(B\ne I\), the acceleration difference determines \(Bu\), not necessarily a unique \(u\). With constraints, changes in reaction also enter the force balance; feasible acceleration alone can leave input directions unidentified. The full mass matrix is essential even when there are only two angular coordinates. Replacing it with its diagonal discards the coupling being investigated.
Computing the ZTCF: Algorithm and Simulation
Copy the complete declared state at \(t_0\), including any solver-required contact, actuator and controller state. Record the model revision, parameter convention, zeroed channels and their physical level. Specify the reference input policy and every retained load, constraint, mode rule and internal-state law. Use identical initial states for a paired intervention.
An illustrative branch switch applies only to the selected channel:
\[ M\dot v+h=k_u Bu,\qquad k_u\in\{0,1\}. \tag{4}\]
It does not automatically reset activation, elastic strain, velocity or contact forces. A switch diagram is an implementation pattern, not evidence of a supported Simulink or other engine.
Integrate each declared branch to the stated time or event. Record integration method, version, step size or error tolerances, event localization, and failure behavior. Compare both full-state closure and the output relevant to the question. For example, face orientation at a fixed time and face orientation at each branch’s own impact event are different estimands. A branch that misses the impact surface has no impact value; it must not inherit the reference event.
Numerical checks should include forward/inverse closure, constraint residuals, physically appropriate energy or power balances, and step refinement in the reported output. An autonomous conservative model with ideal fixed constraints conserves mechanical energy; damping, moving supports or external work change that balance. Energy conservation by itself does not prove trajectory accuracy. Large acceleration and nonlinearity alone do not establish numerical stiffness: fast decaying modes relative to the solution time scale can restrict explicit stability. Contact discontinuities additionally require an event or nonsmooth formulation, not simply a smaller arbitrary step.
The Zero-Velocity Counterfactual
The instantaneous Zero-Velocity Counterfactual (ZVCF) evaluates acceleration at the same configuration with specified velocities reset and declared input zero. For the unconstrained convention above, holding \(z,t,p\) fixed gives
\[ a_{\mathrm{ZVCF}}(q,z,t)=-M(q)^{-1}h(q,0,z,t). \tag{5}\]
If flexible or actuator velocities are stored in \(z\), say whether they are also reset. Setting rigid joint velocity to zero does not silently reset all internal motion. In a rigid model with gravity as the only retained zero-velocity load this is \(-M^{-1}h_g\). Elastic strain, prescribed loads and internal-state forces can survive zero joint velocity, so ZVCF is not generally gravity-only.
The difference
\[ a_0(q,v,z,t)=a_{\mathrm{ZVCF}}(q,z,t)+a_{\mathrm{velocity}}(q,v,z,t) \tag{6}\]
defines \(a_{\mathrm{velocity}}\) by subtraction under identical remaining declarations. It includes all effects changed by that velocity reset, not just a selected Coriolis term. For constrained models, recompute the constraint acceleration baseline consistently, and first check that the reset is feasible. A prescribed coordinate \(q=t\) requires \(\dot q=1\); resetting it to zero violates the velocity constraint. A contact law can also change mode at zero velocity.
This state reset is distinct from removing an input. It changes kinetic energy and may require an impulse if interpreted physically. Integrating afterward would define a separate initial-state intervention. Holding velocity zero for an interval would require a constraint or controller, not free evolution from the instantaneous sample.
Two Uniform Rods: A Mechanics Check
Use two planar uniform rods with a fixed base, no contact, no damping and uniform gravity. These are manufactured mechanics parameters, not anthropometry or a fitted golf swing. The inertial frame has \(x\) right and \(y\) up. Angle \(q_1\) is counterclockwise from \(+x\); \(q_2\) is relative to rod 1, so rod 2 has absolute angle \(q_1+q_2\). Positive inputs do positive work against positive coordinate velocities.
Take masses \((m_1,m_2)=(2,0.2)\) kg and lengths \((L_1,L_2)=(0.4,0.3)\) m. The COM distances are \(r_i=L_i/2\), and COM inertias are \(J_i=m_iL_i^2/12\). A pivot inertia would instead be \(J_i+m_ir_i^2\); do not add the parallel-axis term twice. Set \(g=9.81\) m/s\(^2\) and \(k=m_2L_1r_2=0.012\) kg·m\(^2\).
The COM positions are
\[ \begin{aligned} c_1&=r_1(\cos q_1,\sin q_1)^T,\\ c_2&=L_1(\cos q_1,\sin q_1)^T\\ &\quad+r_2(\cos(q_1+q_2),\sin(q_1+q_2))^T. \end{aligned} \]
Sum translational COM and rotational kinetic energies:
\[ T=\tfrac12\sum_i m_i\|\dot c_i\|^2+\tfrac12J_1v_1^2+\tfrac12J_2(v_1+v_2)^2. \]
Collecting the coefficients in \(T=\tfrac12v^TMv\) gives
\[ \begin{aligned} M_{11}&=J_1+m_1r_1^2+J_2+m_2(L_1^2+r_2^2)+2k\cos q_2,\\ M_{12}=M_{21}&=J_2+m_2r_2^2+k\cos q_2,\\ M_{22}&=J_2+m_2r_2^2. \end{aligned} \tag{7}\]
The potential energy is
\[ V=g[(m_1r_1+m_2L_1)\sin q_1+m_2r_2\sin(q_1+q_2)]. \] With \(T=\tfrac12v^TMv\), the Euler–Lagrange equations give \(M a+h_v+h_g=u\), where
\[ \begin{aligned} h_v&=k\sin q_2\begin{bmatrix}-(2v_1v_2+v_2^2)\\v_1^2\end{bmatrix},\\ h_g&=g\begin{bmatrix}(m_1r_1+m_2L_1)\cos q_1+m_2r_2\cos(q_1+q_2)\\m_2r_2\cos(q_1+q_2)\end{bmatrix}. \end{aligned} \tag{8}\]
Both velocity-bias components matter. The first contains a factor-two cross term and a squared distal-rate term; the second contains the proximal-rate squared. Their signs follow the stated relative-angle convention. They satisfy \(v^Th_v=\tfrac12v^T\dot Mv\), the identity needed for conservative energy balance.
At \(q=(45,70)\) degrees and \(v=(8,12)\) rad/s, the combined angle has cosine
\[ \cos(q_1+q_2)=\cos115^\circ=-0.422618. \] All computations use unrounded values; displayed matrices are rounded:
\[ M\simeq\begin{bmatrix}0.152875&0.010104\\0.010104&0.006000\end{bmatrix} \quad\mathrm{kg\,m^2}. \tag{9}\]
\[ h_v\simeq\begin{bmatrix}-3.788841\\0.721684\end{bmatrix},\qquad h_g\simeq\begin{bmatrix}3.205248\\-0.124377\end{bmatrix} \quad\mathrm{N\,m}. \tag{10}\]
The mobility and zero-input acceleration are
\[ M^{-1}\simeq\begin{bmatrix}7.360562&-12.395482\\-12.395482&187.541158\end{bmatrix} \quad(\mathrm{kg\,m^2})^{-1}, \tag{11}\]
\[ a_0=-M^{-1}(h_v+h_g)\simeq\begin{bmatrix}11.699484\\-119.253631\end{bmatrix} \quad\mathrm{rad/s^2}. \tag{12}\]
This is an instantaneous mechanics calculation. The first coordinate accelerates positively and the second negatively at this snapshot; the configuration is not labeled an anatomical downswing posture. The gravity-only slice is \((-25.134131,63.056316)^T\) rad/s\(^2\), while the velocity-bias contribution is \((36.833615,-182.309947)^T\) rad/s\(^2\). Their sum recovers \(a_0\).
For a specified reference acceleration \(a^r=(2,8)^T\) rad/s\(^2\) at exactly the same state,
\[ u=M(a^r-a_0)=Ma^r+h_v+h_g \simeq\begin{bmatrix}-0.197009\\0.665516\end{bmatrix}\quad\mathrm{N\,m}. \]
Diagonal-only multiplication would give approximately \((-1.482810,0.763522)^T\) N·m and would fail forward/inverse closure. The difference is substantial because the reference acceleration at one coordinate also requires generalized input through the off-diagonal inertia. Neither correct net input identifies a muscle, activation or effort.
The Drift-Control Ratio and Correction Authority
For a stated angular-acceleration projection \(W\), norm and admissible input set \(\mathcal U\), define
\[ \mathrm{DCR}_{W,\mathcal U}(x)= \frac{\|Wa_0(x)\|}{\sup_{u\in\mathcal U(x)}\|WH(x)u\|+\varepsilon}. \tag{13}\]
The regularizer \(\varepsilon\) has the denominator’s units and must be reported. A zero control-effect denominator means there is no authority in that projection; regularization does not create it. For physical point acceleration, use the complete baseline \(Ja_0+\dot Jv\) and operator \(JH\). Coordinate rescaling changes an unqualified component norm, so specify what the projection measures.
For the two-rod snapshot, choose \(W=(0,1)\), absolute value, \(B=I\), \(\varepsilon=0\), and the illustrative torque box \(|u_1|\le2\) N·m, \(|u_2|\le0.2\) N·m. These are chosen limits, not muscular capacity estimates. The exact scalar projection bound is
\[ \begin{aligned} s&=\sum_j |(WM^{-1})_j|\bar u_j\\ &=12.395482(2)+187.541158(0.2)\\ &\simeq62.299196\quad\mathrm{rad/s^2}. \end{aligned} \tag{14}\]
The bound is attained at a vertex of the torque box. The corresponding ratio is
\[ \mathrm{DCR}=119.253631/62.299196\simeq1.914208. \tag{15}\]
Using only a single Coriolis force divided by one torque bound would be a different quantity. Here both actuator channels influence the selected angular acceleration.
At fixed configuration and parameters, uniformly scaling both rates by \(\alpha\) gives
\[ h_v(q,\alpha v)=\alpha^2 h_v(q,v),\qquad a_0(q,\alpha v)=-M^{-1}(\alpha^2h_v+h_g). \tag{16}\]
Doubling the rates in this artificial snapshot yields
\[ a_{0,2}\simeq-666.183472\quad\mathrm{rad/s^2},\qquad \mathrm{DCR}\simeq10.693292. \tag{17}\]
This is a rate-scaling experiment, not a later measured swing state. The total ratio is not exactly four times the first: gravity does not scale with rate, and drift components can cancel. Along a real trajectory, posture, admissible inputs, contact and internal-state forces can also change. Quadratic velocity bias therefore does not establish a universal rising DCR or a late-downswing threshold.
Magnitude Is Not Direction or Reachability
Consider an abstract two-dimensional acceleration drift \((1,0)^T\) and scalar input \(|u|\le1\). The input directions \(H_1=(1,0)^T\) and \(H_2=(0,1)^T\) both give Euclidean DCR equal to one. The first cancels drift with \(u=-1\); the second cannot change the first component. Equal ratios therefore allow different instantaneous cancellation authority.
For the one-dimensional double integrator \(\ddot y=u\), \(|u|\le a_{\max}\), the displacement change relative to the zero-input branch at time \(T\) is
\[ \Delta y(T)=\int_0^T(T-s)u(s)\,ds,\qquad |\Delta y(T)|\le\tfrac12a_{\max}T^2. \]
This bound is attained by constant extreme input when no other constraints apply. It exposes the role of remaining time even when instantaneous drift acceleration is zero. A golf impact claim additionally needs the actual input map, state limits, output and event geometry, and uncertainty. DCR and one zero-input branch do not supply that reachable set.
Why ZTCF Cannot Be Measured Directly
Motion capture or IMUs provide measurements from which pose and motion are estimated under calibration and reconstruction assumptions. Differentiation amplifies noise; filtering, synchronization, uncertainty and sensitivity must be documented. EMG records electrical activity related to muscle excitation, not a direct measurement of muscle force or a uniquely identified activation state. A force plate measures the ground-contact wrench; grip loading requires an instrumented grip/club or a model-based inference. These observations constrain different parts of the model.
The unperformed branch is not observed in the recorded swing. Within an exact fixed deterministic model, a paired branch difference is the consequence of the specified intervention under its retained protocol. Comparing that branch to human data introduces parameter error, state-estimation error, omitted loads, contact mismatch and model discrepancy. Those are different claims and need different uncertainty analyses.
Zero generalized torque can coexist with substantial antagonistic muscle forces. A model may retain activation-dependent stiffness only if its intervention defines how that stiffness and activation evolve. Calling the retained terms passive does not establish a physiologically realizable muscle state. Causal interpretation for a person requires a defensible structural and measurement model; deterministic software replay alone supplies neither muscle identification nor a coaching prescription.
Summary and Preview
The central chain of reasoning is: define the input and full state; derive the retained dynamics; distinguish a pointwise evaluation from an integrated intervention; project into a named physical output; then test numerical and model uncertainty. The same mass matrix couples torque and acceleration, while state evolution couples present input removal to future drift. ZVCF adds a distinct state reset, and DCR adds a magnitude comparison. None of these steps by itself identifies biological effort or finite-horizon control authority.
The next chapter studies constraint forces. Those forces are essential to a feasible counterfactual whenever supports and contacts matter, even when all declared applied torques are zero.
Chapter Exercises
- Starting from the two COM positions above, recover all entries of \(M\) using the displayed sum of translational and rotational kinetic energies. Explain why a COM inertia and a pivot inertia cannot be interchanged without a parallel-axis correction.
- Derive \(h_v\) from the Euler–Lagrange equations and \(h_g\) from \(\nabla V\). Verify \(v^Th_v=\tfrac12v^T\dot Mv\), and recover both components of the stated reference input. Explain why zero applied input does not imply constant velocity.
- For a uniform rod with mass \(2\) kg and length \(0.7\) m, let \(\theta\) measure displacement from vertically downward. At \(\theta=45^\circ\), the pivot inertia is \(mL^2/3=0.326667\) kg·m\(^2\) and gravity acceleration is \(-3g\sin\theta/(2L)=-14.864395\) rad/s\(^2\). Verify these values. An illustrative \(+10\) N·m input adds \(30.612245\) rad/s\(^2\); it is not a measured muscle capacity.
- Replay the registered three-link Python golden fixture without changing its parameters or source authority. Report its terminal state and units, then assess step refinement separately. Explain why matching the fixture cannot establish a second engine, flexible-shaft validity or an individual golfer’s muscle state.
- Define a fixed-time and an impact-event branch comparison. State what happens if a branch never reaches impact. For the double-integrator example, derive the displacement bound and explain why adding a final-velocity constraint can change the attainable endpoint.
On This Site
- Canonical ZTCF Reference defines the four constructions and their interpretation.
- Induced Acceleration Analysis develops constrained pointwise attribution.
- Constraint Forces explains reaction recovery and feasibility.
- Drift-Control Ratio separates magnitude comparisons from reachable outcomes.
References
Citation
@online{untitled,
author = {},
url = {https://affinedrift.com/articles/The_Physics_of_Golf/quarto/ch06_zero_torque_counterfactual.html},
langid = {en}
}