Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Pontryagin’s Necessary Conditions

the preceding two first-variation sections developed the complete first variation of the augmented optimal-control functional. The endpoint terms were expanded carefully, the Hamiltonian integral was varied using the Leibniz rule, and the term containing δx˙\delta\dot{\boldsymbol{x}} was integrated by parts. The remaining task is to interpret the coefficients of the independent variations.

This interpretation produces the equations that every sufficiently regular extremal must satisfy: the state equation, the costate equation, the stationarity or minimum condition, the endpoint constraints, and the transversality conditions. Together, these equations form a coupled two-point boundary-value problem.

Optimal-control problem and augmented functional

Consider the Bolza problem

minu(),t0,tfJ=Φ ⁣(x0,t0,xf,tf)+t0tfL(x,u,t)dt,\begin{aligned} \min_{\boldsymbol{u}(\cdot),\,t_0,\,t_f}\quad J &= \Phi\!\left(\boldsymbol{x}_0,t_0,\boldsymbol{x}_f,t_f\right) + \int_{t_0}^{t_f}L(\boldsymbol{x},\boldsymbol{u},t)\,\mathrm{d} t, \end{aligned}
subject tox˙=f(x,u,t),\begin{aligned} \text{subject to}\quad \dot{\boldsymbol{x}} &=\boldsymbol{f}(\boldsymbol{x},\boldsymbol{u},t), \end{aligned}
ϕ(x0,t0,xf,tf)=0,\begin{aligned} \boldsymbol{\phi}(\boldsymbol{x}_0,t_0,\boldsymbol{x}_f,t_f) &=\boldsymbol{0}, \end{aligned}
u(t)U(t).\begin{aligned} \boldsymbol{u}(t)&\in\mathcal{U}(t). \end{aligned}

Here, x(t)Rn\boldsymbol{x}(t)\in\mathbb{R}^n, u(t)Rm\boldsymbol{u}(t)\in\mathbb{R}^m, and ϕRq\boldsymbol{\phi}\in\mathbb{R}^q.

The Hamiltonian is

H(x,u,λ,t)=L(x,u,t)+λTf(x,u,t),H(\boldsymbol{x},\boldsymbol{u},\boldsymbol{\lambda},t) = L(\boldsymbol{x},\boldsymbol{u},t)+\boldsymbol{\lambda}^{\mathsf{T}}\boldsymbol{f}(\boldsymbol{x},\boldsymbol{u},t),

and the augmented functional is

Ja=ΦνTϕ+t0tf(HλTx˙)dt.J_a = \Phi-\boldsymbol{\nu}^{\mathsf{T}}\boldsymbol{\phi} + \int_{t_0}^{t_f} \left(H-\boldsymbol{\lambda}^{\mathsf{T}}\dot{\boldsymbol{x}}\right)\,\mathrm{d} t.

The sign convention in (6) determines the signs in the endpoint conditions developed below.

Complete first variation

After the calculations of the preceding two first-variation sections, the first variation can be written as

δJa=[Φx0νTϕx0+λT(t0)]δx0+[Φt0νTϕt0H(t0)]δt0+[ΦxfνTϕxfλT(tf)]δxf+[ΦtfνTϕtf+H(tf)]δtfϕTδν+t0tf[Hx+λ˙T]δxdt+t0tfHuδudt+t0tf[Hλx˙T]δλdt.\begin{aligned} \delta J_a ={}& \left[ \Phi_{\boldsymbol{x}_0} - \boldsymbol{\nu}^{\mathsf{T}}\boldsymbol{\phi}_{\boldsymbol{x}_0} + \boldsymbol{\lambda}^{\mathsf{T}}(t_0) \right]\delta\boldsymbol{x}_0\\ &+ \left[ \Phi_{t_0} - \boldsymbol{\nu}^{\mathsf{T}}\boldsymbol{\phi}_{t_0} - H(t_0) \right]\delta t_0 \nonumber\\ &+ \left[ \Phi_{\boldsymbol{x}_f} - \boldsymbol{\nu}^{\mathsf{T}}\boldsymbol{\phi}_{\boldsymbol{x}_f} - \boldsymbol{\lambda}^{\mathsf{T}}(t_f) \right]\delta\boldsymbol{x}_f \nonumber\\ &+ \left[ \Phi_{t_f} - \boldsymbol{\nu}^{\mathsf{T}}\boldsymbol{\phi}_{t_f} + H(t_f) \right]\delta t_f \nonumber\\ &- \boldsymbol{\phi}^{\mathsf{T}}\delta\boldsymbol{\nu} \nonumber\\ &+ \int_{t_0}^{t_f} \left[ H_{\boldsymbol{x}}+\dot{\boldsymbol{\lambda}}^{\mathsf{T}} \right]\delta\boldsymbol{x}\,\mathrm{d} t \nonumber\\ &+ \int_{t_0}^{t_f} H_{\boldsymbol{u}}\delta\boldsymbol{u}\,\mathrm{d} t \nonumber\\ &+ \int_{t_0}^{t_f} \left[ H_{\boldsymbol{\lambda}}-\dot{\boldsymbol{x}}^{\mathsf{T}} \right]\delta\boldsymbol{\lambda}\,\mathrm{d} t. \nonumber \end{aligned}

Subscripts denote row-oriented Jacobians. For example,

Hx=HxR1×n.H_{\boldsymbol{x}}=\frac{\partial H}{\partial\boldsymbol{x}}\in\mathbb{R}^{1\times n}.

Interior necessary conditions

The variations δx(t)\delta\boldsymbol{x}(t), δu(t)\delta\boldsymbol{u}(t), and δλ(t)\delta\boldsymbol{\lambda}(t) act within the open interval (t0,tf)(t_0,t_f). The fundamental lemma of the calculus of variations implies that their coefficients must satisfy the following conditions almost everywhere.

Costate equation

The coefficient of δx\delta\boldsymbol{x} is

Hx+λ˙T.H_{\boldsymbol{x}}+\dot{\boldsymbol{\lambda}}^{\mathsf{T}}.

Therefore,

Hx+λ˙T=0T,H_{\boldsymbol{x}}+\dot{\boldsymbol{\lambda}}^{\mathsf{T}}=\boldsymbol{0}^{\mathsf{T}},

or, equivalently,

λ˙=HxT=(Hx)T.\boxed{ \dot{\boldsymbol{\lambda}} =-H_{\boldsymbol{x}}^{\mathsf{T}} =-\left(\frac{\partial H}{\partial\boldsymbol{x}}\right)^{\mathsf{T}}. }

This is called the costate equation or the adjoint equation.

Using (5),

λ˙=LxT(fx)Tλ.\dot{\boldsymbol{\lambda}} =-L_{\boldsymbol{x}}^{\mathsf{T}} -\left(\boldsymbol{f}_{\boldsymbol{x}}\right)^{\mathsf{T}}\boldsymbol{\lambda}.

Thus, the costate evolves according to both the gradient of the running cost and the local state sensitivity of the dynamics.

State equation recovered from the Hamiltonian

The coefficient of δλ\delta\boldsymbol{\lambda} yields

Hλx˙T=0T.H_{\boldsymbol{\lambda}}-\dot{\boldsymbol{x}}^{\mathsf{T}}=\boldsymbol{0}^{\mathsf{T}}.

Therefore,

x˙=HλT.\boxed{ \dot{\boldsymbol{x}}=H_{\boldsymbol{\lambda}}^{\mathsf{T}}. }

Since

H=L+λTf,H=L+\boldsymbol{\lambda}^{\mathsf{T}}\boldsymbol{f},

we have

Hλ=fT.H_{\boldsymbol{\lambda}}=\boldsymbol{f}^{\mathsf{T}}.

Hence,

x˙=f(x,u,t),\boxed{ \dot{\boldsymbol{x}}=\boldsymbol{f}(\boldsymbol{x},\boldsymbol{u},t), }

which is precisely the original state equation. This condition is not new information; it confirms that the augmented formulation enforces the dynamics.

Stationarity condition

For an unconstrained control, or when the optimal control lies in the interior of the admissible set U(t)\mathcal{U}(t), the coefficient of δu\delta\boldsymbol{u} gives

Hu=0T.\boxed{ H_{\boldsymbol{u}}=\boldsymbol{0}^{\mathsf{T}}. }

Equivalently,

(Hu)T=0.\left(\frac{\partial H}{\partial\boldsymbol{u}}\right)^{\mathsf{T}}=\boldsymbol{0}.

If (18) can be solved uniquely, it defines the control feedback law

u=π(x,λ,t).\boldsymbol{u}^*=\boldsymbol{\pi}(\boldsymbol{x},\boldsymbol{\lambda},t).

Substitution into the state and costate equations produces a closed Hamiltonian system in x\boldsymbol{x} and λ\boldsymbol{\lambda}.

Hamiltonian minimum condition

For a minimization problem with pointwise admissible control set U(t)\mathcal{U}(t), the stronger condition is

H(x(t),u(t),λ(t),t)=minuU(t)H(x(t),u,λ(t),t).\boxed{ H\bigl(\boldsymbol{x}^*(t),\boldsymbol{u}^*(t),\boldsymbol{\lambda}^*(t),t\bigr) = \min_{\boldsymbol{u}\in\mathcal{U}(t)} H\bigl(\boldsymbol{x}^*(t),\boldsymbol{u},\boldsymbol{\lambda}^*(t),t\bigr). }

If the minimizing control lies in the interior of U(t)\mathcal{U}(t) and the Hamiltonian is differentiable with respect to u\boldsymbol{u}, then (21) implies (18).

For a scalar bounded control,

U=[umin,umax],\mathcal{U}=[u_{\min},u_{\max}],

the minimizer may occur at an endpoint. For example, if

H=a(t)u+b(t),H=a(t)u+b(t),

then

u(t)={umin,a(t)>0,umax,a(t)<0,u^*(t)= \begin{cases} u_{\min}, & a(t)>0,\\ u_{\max}, & a(t)<0, \end{cases}

with additional analysis required when a(t)=0a(t)=0.

Endpoint multiplier condition

The multiplier variation appears as

ϕTδν.-\boldsymbol{\phi}^{\mathsf{T}}\delta\boldsymbol{\nu}.

Because δν\delta\boldsymbol{\nu} is arbitrary,

ϕ(x0,t0,xf,tf)=0.\boxed{ \boldsymbol{\phi}(\boldsymbol{x}_0,t_0,\boldsymbol{x}_f,t_f)=\boldsymbol{0}. }

Thus, variation with respect to the endpoint multiplier recovers the original endpoint constraints.

Transversality conditions

The endpoint variations require more care than the interior variations. An endpoint variable may be fixed, constrained, or free. If it is fixed, its variation is zero and its coefficient need not vanish. If it is free, the variation is arbitrary and the coefficient must vanish.

Initial-state condition

The initial-state contribution is

[Φx0νTϕx0+λT(t0)]δx0.\left[ \Phi_{\boldsymbol{x}_0} - \boldsymbol{\nu}^{\mathsf{T}}\boldsymbol{\phi}_{\boldsymbol{x}_0} + \boldsymbol{\lambda}^{\mathsf{T}}(t_0) \right]\delta\boldsymbol{x}_0.

Therefore, either

δx0=0,\delta\boldsymbol{x}_0=\boldsymbol{0},

or

λT(t0)=Φx0+νTϕx0.\boxed{ \boldsymbol{\lambda}^{\mathsf{T}}(t_0) =-\Phi_{\boldsymbol{x}_0} +\boldsymbol{\nu}^{\mathsf{T}}\boldsymbol{\phi}_{\boldsymbol{x}_0}. }

In column form,

λ(t0)=Φx0T+ϕx0Tν.\boldsymbol{\lambda}(t_0) =-\Phi_{\boldsymbol{x}_0}^{\mathsf{T}} +\boldsymbol{\phi}_{\boldsymbol{x}_0}^{\mathsf{T}}\boldsymbol{\nu}.

Final-state condition

The final-state contribution is

[ΦxfνTϕxfλT(tf)]δxf.\left[ \Phi_{\boldsymbol{x}_f} - \boldsymbol{\nu}^{\mathsf{T}}\boldsymbol{\phi}_{\boldsymbol{x}_f} - \boldsymbol{\lambda}^{\mathsf{T}}(t_f) \right]\delta\boldsymbol{x}_f.

Therefore, either

δxf=0,\delta\boldsymbol{x}_f=\boldsymbol{0},

or

λT(tf)=ΦxfνTϕxf.\boxed{ \boldsymbol{\lambda}^{\mathsf{T}}(t_f) = \Phi_{\boldsymbol{x}_f} - \boldsymbol{\nu}^{\mathsf{T}}\boldsymbol{\phi}_{\boldsymbol{x}_f}. }

In column form,

λ(tf)=ΦxfTϕxfTν.\boldsymbol{\lambda}(t_f) = \Phi_{\boldsymbol{x}_f}^{\mathsf{T}} -\boldsymbol{\phi}_{\boldsymbol{x}_f}^{\mathsf{T}}\boldsymbol{\nu}.

Initial-time condition

The initial-time contribution is

[Φt0νTϕt0H(t0)]δt0.\left[ \Phi_{t_0} - \boldsymbol{\nu}^{\mathsf{T}}\boldsymbol{\phi}_{t_0} - H(t_0) \right]\delta t_0.

Therefore, either

δt0=0,\delta t_0=0,

or

H(t0)=Φt0νTϕt0.\boxed{ H(t_0) = \Phi_{t_0} - \boldsymbol{\nu}^{\mathsf{T}}\boldsymbol{\phi}_{t_0}. }

Final-time condition

The final-time contribution is

[ΦtfνTϕtf+H(tf)]δtf.\left[ \Phi_{t_f} - \boldsymbol{\nu}^{\mathsf{T}}\boldsymbol{\phi}_{t_f} + H(t_f) \right]\delta t_f.

Therefore, either

δtf=0,\delta t_f=0,

or

H(tf)=Φtf+νTϕtf.\boxed{ H(t_f) =-\Phi_{t_f} +\boldsymbol{\nu}^{\mathsf{T}}\boldsymbol{\phi}_{t_f}. }

Fixed and free endpoint cases

Fixed initial state

If x0\boldsymbol{x}_0 is prescribed, then

δx0=0.\delta\boldsymbol{x}_0=\boldsymbol{0}.

No initial costate condition follows from (7). The known value of x(t0)\boldsymbol{x}(t_0) already supplies nn boundary conditions.

Free initial state

If x0\boldsymbol{x}_0 is free, then δx0\delta\boldsymbol{x}_0 is arbitrary and (29) must hold.

Fixed final state

If xf\boldsymbol{x}_f is prescribed, then

δxf=0.\delta\boldsymbol{x}_f=\boldsymbol{0}.

No terminal costate equation is generated by this variation. The prescribed terminal state itself supplies the required boundary information.

Free final state with terminal cost

If xf\boldsymbol{x}_f is free and no endpoint equality constraint is present, then ν\boldsymbol{\nu} is absent and

λ(tf)=ΦxfT.\boxed{ \boldsymbol{\lambda}(t_f)=\Phi_{\boldsymbol{x}_f}^{\mathsf{T}}. }

If Φ=0\Phi=0, this reduces to

λ(tf)=0.\boldsymbol{\lambda}(t_f)=\boldsymbol{0}.

Free final time

If tft_f is free and no endpoint equality constraint is present, then

H(tf)+Φtf=0.\boxed{ H(t_f)+\Phi_{t_f}=0. }

For an autonomous problem with terminal cost independent of time, this becomes

H(tf)=0.H(t_f)=0.
Endpoint quantityVariationConsequence
Fixed x0\boldsymbol{x}_0δx0=0\delta\boldsymbol{x}_0=0No condition on λ(t0)\boldsymbol{\lambda}(t_0) from this variation
Free x0\boldsymbol{x}_0Arbitrary δx0\delta\boldsymbol{x}_0Apply (29)
Fixed xf\boldsymbol{x}_fδxf=0\delta\boldsymbol{x}_f=0No terminal costate condition from this variation
Free xf\boldsymbol{x}_fArbitrary δxf\delta\boldsymbol{x}_fApply (33)
Fixed t0t_0δt0=0\delta t_0=0No initial Hamiltonian condition
Free t0t_0Arbitrary δt0\delta t_0Apply (37)
Fixed tft_fδtf=0\delta t_f=0No terminal Hamiltonian condition
Free tft_fArbitrary δtf\delta t_fApply (40)

Common endpoint cases and resulting conditions.

Partial freedom in vector endpoints

A vector endpoint may be partly fixed and partly free. Suppose

xf=[xf(F)xf(R)],\boldsymbol{x}_f= \begin{bmatrix} \boldsymbol{x}_f^{(F)}\\ \boldsymbol{x}_f^{(R)} \end{bmatrix},

where xf(F)\boldsymbol{x}_f^{(F)} is fixed and xf(R)\boldsymbol{x}_f^{(R)} is free. Then

δxf=[0δxf(R)].\delta\boldsymbol{x}_f= \begin{bmatrix} \boldsymbol{0}\\ \delta\boldsymbol{x}_f^{(R)} \end{bmatrix}.

Only the coefficient components associated with δxf(R)\delta\boldsymbol{x}_f^{(R)} must vanish. Consequently, transversality conditions are imposed only on the costate components corresponding to free terminal-state components.

Hamiltonian system

The state and costate equations form the canonical Hamiltonian system

x˙=HλT,λ˙=HxT.\boxed{ \begin{aligned} \dot{\boldsymbol{x}}&=H_{\boldsymbol{\lambda}}^{\mathsf{T}},\\ \dot{\boldsymbol{\lambda}}&=-H_{\boldsymbol{x}}^{\mathsf{T}}. \end{aligned} }

When the stationarity condition can be solved for u\boldsymbol{u}, substitute u=π(x,λ,t)\boldsymbol{u}^*=\boldsymbol{\pi}(\boldsymbol{x},\boldsymbol{\lambda},t) to obtain

ddt[xλ]=[HλTHxT]u=π(x,λ,t).\frac{\,\mathrm{d}}{\,\mathrm{d} t} \begin{bmatrix} \boldsymbol{x}\\ \boldsymbol{\lambda} \end{bmatrix} = \begin{bmatrix} H_{\boldsymbol{\lambda}}^{\mathsf{T}}\\ -H_{\boldsymbol{x}}^{\mathsf{T}} \end{bmatrix}_{\boldsymbol{u}=\boldsymbol{\pi}(\boldsymbol{x},\boldsymbol{\lambda},t)}.

Because both x\boldsymbol{x} and λ\boldsymbol{\lambda} are nn-dimensional, this is a 2n2n-dimensional differential system.

Two-point boundary-value structure

The boundary data for (50) are generally divided between t0t_0 and tft_f. For example, a common fixed-initial-state, free-terminal-state problem has

x(t0)=x0,λ(tf)=ΦxfT.\begin{aligned} \boldsymbol{x}(t_0)&=\boldsymbol{x}_0,\\ \boldsymbol{\lambda}(t_f)&=\Phi_{\boldsymbol{x}_f}^{\mathsf{T}}. \end{aligned}

The state is specified at the initial time, while the costate is specified at the final time. Therefore, the equations cannot usually be integrated as a conventional initial-value problem.

A general optimality system is a two-point boundary-value problem because boundary information is distributed between the initial and terminal times.

Figure 1:A general optimality system is a two-point boundary-value problem because boundary information is distributed between the initial and terminal times.

Common numerical approaches include:

  1. single shooting;

  2. multiple shooting;

  3. collocation;

  4. direct transcription;

  5. differential-algebraic boundary-value solvers.

Interpretation of the costate

Let V(x,t)V(\boldsymbol{x},t) denote the optimal value-to-go from state x\boldsymbol{x} at time tt. Under suitable smoothness conditions,

λ(t)=xV(x(t),t).\boldsymbol{\lambda}(t)=\nabla_{\boldsymbol{x}}V(\boldsymbol{x}^*(t),t).

Thus, λi(t)\lambda_i(t) measures the first-order change in optimal cost resulting from a small perturbation of state component xi(t)x_i(t).

A large positive λi\lambda_i indicates that increasing xix_i locally increases the optimal cost. A large negative value indicates that increasing xix_i locally decreases it. In economic language, the costate is a shadow price; in engineering design, it is a trajectory-level sensitivity.

Conservation of the Hamiltonian

Along a smooth extremal satisfying the state, costate, and stationarity equations,

dHdt=Ht.\frac{\,\mathrm{d} H}{\,\mathrm{d} t} =H_t.

Therefore, if the problem is autonomous, so that Ht=0H_t=0, then

H=constant along the extremal.\boxed{H=\text{constant along the extremal}.}

If, in addition, the final time is free and Φtf=0\Phi_{t_f}=0, then H(tf)=0H(t_f)=0, implying

H(t)=0for all t[t0,tf].H(t)=0 \qquad\text{for all }t\in[t_0,t_f].

Worked example: minimum-energy transfer

Consider

minu()J=120Tu2(t)dt,\begin{aligned} \min_{u(\cdot)}\quad J&=\frac{1}{2}\int_0^T u^2(t)\,\mathrm{d} t, \end{aligned}
subject tox˙=u,\begin{aligned} \text{subject to}\quad \dot{x}&=u, \end{aligned}
x(0)=x0,x(T)=xf,\begin{aligned} x(0)&=x_0, \qquad x(T)=x_f, \end{aligned}

where TT is fixed.

The Hamiltonian is

H=12u2+λu.H=\frac{1}{2}u^2+\lambda u.

The costate equation is

λ˙=Hx=0,\dot{\lambda}=-H_x=0,

so

λ(t)=c,\lambda(t)=c,

where cc is constant.

The stationarity condition is

Hu=u+λ=0,H_u=u+\lambda=0,

which gives

u=λ=c.u^*=-\lambda=-c.

Hence,

x˙=c,\dot{x}=-c,

and

x(t)=x0ct.x(t)=x_0-ct.

Applying x(T)=xfx(T)=x_f,

c=x0xfT.c=\frac{x_0-x_f}{T}.

Therefore,

u(t)=xfx0T,\boxed{ u^*(t)=\frac{x_f-x_0}{T}, }

and

x(t)=x0+xfx0Tt.\boxed{ x^*(t)=x_0+\frac{x_f-x_0}{T}t. }

The optimal control is constant, and the state moves linearly from x0x_0 to xfx_f.

Worked example: free terminal state

Consider

minu()J=12q(x(T)xd)2+120Tru2(t)dt,x˙=ax+bu,x(0)=x0,\begin{aligned} \min_{u(\cdot)}\quad J&=\frac{1}{2}q\bigl(x(T)-x_d\bigr)^2 +\frac{1}{2}\int_0^T r u^2(t)\,\mathrm{d} t,\\ \dot{x}&=a x+b u,\\ x(0)&=x_0, \end{aligned}

where TT is fixed and x(T)x(T) is free.

The Hamiltonian is

H=12ru2+λ(ax+bu).H=\frac{1}{2}r u^2+\lambda(ax+bu).

The necessary conditions are

x˙=ax+bu,λ˙=aλ,0=ru+bλ.\begin{aligned} \dot{x}&=ax+bu,\\ \dot{\lambda}&=-a\lambda,\\ 0&=ru+b\lambda. \end{aligned}

Thus,

u=brλ.u^*=-\frac{b}{r}\lambda.

Because the terminal state is free,

λ(T)=Φxf=q(x(T)xd).\lambda(T)=\Phi_{x_f} =q\bigl(x(T)-x_d\bigr).

This terminal condition couples the costate to the terminal tracking error.

Compact statement of the necessary conditions

For a smooth extremal of the problem in (1)(4), there exist multiplier trajectories λ(t)\boldsymbol{\lambda}(t) and endpoint multipliers ν\boldsymbol{\nu} such that

x˙=HλT,λ˙=HxT,u(t)argminuU(t)H(x,u,λ,t),ϕ(x0,t0,xf,tf)=0,\begin{aligned} \dot{\boldsymbol{x}}^*&=H_{\boldsymbol{\lambda}}^{\mathsf{T}},\\ \dot{\boldsymbol{\lambda}}^*&=-H_{\boldsymbol{x}}^{\mathsf{T}},\\ \boldsymbol{u}^*(t)&\in\arg\min_{\boldsymbol{u}\in\mathcal{U}(t)}H(\boldsymbol{x}^*,\boldsymbol{u},\boldsymbol{\lambda}^*,t),\\ \boldsymbol{\phi}(\boldsymbol{x}_0,t_0,\boldsymbol{x}_f,t_f)&=\boldsymbol{0}, \end{aligned}

together with the transversality conditions corresponding to the endpoint variables that are free.

For interior controls, the minimization condition reduces to

Hu=0T.H_{\boldsymbol{u}}=\boldsymbol{0}^{\mathsf{T}}.

Common errors

  1. Imposing a costate condition at a fixed state endpoint. If the endpoint state is fixed, its variation is zero; the corresponding coefficient need not vanish.

  2. Using Hu=0H_{\boldsymbol{u}}=0 for a saturated control. A control on the boundary of its admissible set is determined by Hamiltonian minimization, not necessarily by stationarity.

  3. Losing transposes. Under row-Jacobian conventions, HxH_{\boldsymbol{x}} and HuH_{\boldsymbol{u}} are row vectors, whereas λ˙\dot{\boldsymbol{\lambda}} and x˙\dot{\boldsymbol{x}} are columns.

  4. Confusing δx(tf)\delta\boldsymbol{x}(t_f) with δxf\delta\boldsymbol{x}_f. For moving terminal time, these are related by δxf=δx(tf)+x˙(tf)δtf\delta\boldsymbol{x}_f=\delta\boldsymbol{x}(t_f)+\dot{\boldsymbol{x}}(t_f)\delta t_f.

  5. Treating all endpoint components identically. Mixed fixed/free endpoint vectors require componentwise conditions.

  6. Assuming an extremal is automatically optimal. First-order conditions identify candidates only.