AERO-330 · Lesson 6 of 12 · 23 min

Linearized equations of motion

Lessons 2 to 5 asked only which way the aircraft starts to move after a disturbance. To know what happens next, whether the motion dies away, oscillates or grows, and how fast, Arjun needs the equations of motion of Lesson 1 in a form he can solve. The full equations are nonlinear and coupled, but the motions that matter for stability are small departures from steady flight. Linearizing about a trimmed condition turns twelve tangled equations into two tidy sets of four linear equations, one longitudinal and one lateral-directional. Their eigenvalues are the aircraft's natural modes. This lesson builds the longitudinal set for the Tern Block 2 in cruise at 3000 m and 105 m/s .

Small perturbations

Write each variable as its steady value plus a small perturbation: \(u = u_0 + \Delta u\), \(w = 0 + \Delta w\) in stability axes, \(\theta = \theta_0 + \Delta\theta\), and so on, with the steady angular rates all zero. Substitute into the equations of Lesson 1, subtract the steady-flight balance, and drop all products of perturbations because they are second-order small. Trigonometric terms are linearized too: \(\sin(\theta_0 + \Delta\theta) \approx \sin\theta_0 + \Delta\theta\cos\theta_0\). For a symmetric aircraft in wings-level flight, something useful happens: the longitudinal variables \(u, w, q, \theta\) do not appear in the lateral equations and the lateral variables \(v, p, r, \phi\) do not appear in the longitudinal ones. The two sets decouple, which is why every textbook treats them separately.

The perturbation forces and moments are expanded in a Taylor series about the trim point, keeping only first derivatives. For example, the change in pitching moment is

\[\Delta M = M_u\,\Delta u + M_w\,\Delta w + M_{\dot w}\,\Delta\dot w + M_q\,\Delta q + M_{\delta_e}\,\Delta\delta_e\]

Each coefficient is a dimensional stability derivative: the change in force or moment per unit change of a variable, divided by mass or by moment of inertia. They come from the non-dimensional derivatives of earlier lessons and the flight condition. For instance \(M_w = C_{m_\alpha}\,qS\bar c/(I_y u_0)\) and \(M_q = C_{m_q}(\bar c/2u_0)\,qS\bar c/I_y\). The derivative \(M_{\dot w}\) captures the lag of downwash: the tail feels the wing's change in downwash only after the air has travelled from wing to tail, which adds pitch damping.

The state-space form

Collecting terms gives four first-order equations, conveniently written as a matrix equation \(\dot{\mathbf{x}} = A\mathbf{x} + B\mathbf{u}\) with state \(\mathbf{x} = [\Delta u, \Delta w, \Delta q, \Delta\theta]^T\) and input the elevator angle:

\[\begin{bmatrix}\dot u\\ \dot w\\ \dot q\\ \dot\theta\end{bmatrix} = \begin{bmatrix} X_u & X_w & 0 & -g\\ Z_u & Z_w & u_0 & 0\\ M_u + M_{\dot w}Z_u & M_w + M_{\dot w}Z_w & M_q + M_{\dot w}u_0 & 0\\ 0 & 0 & 1 & 0\end{bmatrix}\begin{bmatrix}u\\ w\\ q\\ \theta\end{bmatrix} + \begin{bmatrix}X_{\delta_e}\\ Z_{\delta_e}\\ M_{\delta_e} + M_{\dot w}Z_{\delta_e}\\ 0\end{bmatrix}\delta_e\]

(The perturbation symbol is dropped for clarity.) Reading the matrix row by row tells a physical story. The first row says speed changes with the drag derivative \(X_u\), with \(X_w\) as angle of attack tilts the lift and drag, and with gravity as the pitch attitude changes. The second says vertical velocity responds mainly to lift (\(Z_w\)) and to pitch rate, which rotates the velocity vector at \(u_0 q\). The third is the pitch equation: stiffness from \(M_w\) and damping from \(M_q\). The fourth says pitch attitude is the integral of pitch rate. Typical derivative magnitudes for the Tern are given in the table.

Dimensional longitudinal derivatives of the Tern Block 2 at 3000 m and 105 m/s.
DerivativeMeaningTern cruise value
X_udrag change with speed−0.0148 per s
Z_wlift change with vertical velocity−1.159 per s
M_wpitch stiffness (from Cm-alpha)−0.0807 per m s
M_q + M_ẇ u0pitch damping−1.926 per s
M_δeelevator power−12.2 per s² per rad

Eigenvalues are modes

With no control input, the solution of \(\dot{\mathbf{x}} = A\mathbf{x}\) is a sum of terms \(e^{\lambda t}\), where the \(\lambda\) are the eigenvalues of \(A\): the roots of the characteristic equation \(\det(\lambda I - A) = 0\). For a four-by-four matrix this is a quartic. A real root \(\lambda = -1/\tau\) gives a non-oscillatory mode that decays with time constant \(\tau\) if negative or grows if positive. A complex pair \(\lambda = -\zeta\omega_n \pm j\omega_n\sqrt{1 - \zeta^2}\) gives an oscillation with natural frequency \(\omega_n\) and damping ratio \(\zeta\). The aircraft is dynamically stable if every root has a negative real part, that is, if every root lies in the left half of the complex plane.

\[\det(\lambda I - A) = \lambda^4 + c_1\lambda^3 + c_2\lambda^2 + c_3\lambda + c_4 = 0 \qquad \lambda_{1,2} = -\zeta\omega_n \pm j\,\omega_n\sqrt{1-\zeta^2}\]

The corresponding eigenvectors are the mode shapes: the relative sizes and phases of \(u, w, q\) and \(\theta\) in each mode. They are what distinguish a pitching oscillation in which speed hardly changes from a slow exchange of speed and height in which angle of attack hardly changes.

The longitudinal state matrix of the Tern Block 2 in cruise built from non-dimensional derivatives, its characteristic polynomial by the Faddeev-LeVerrier method, and its roots by the Durand-Kerner iteration.
# Linearized longitudinal equations of the Tern Block 2 in cruise (3000 m, 105 m/s):
# build the state matrix from the stability derivatives and find its eigenvalues.
import math
def charpoly(A):
    """Coefficients of det(sI - A), highest power first (Faddeev-LeVerrier)."""
    n = len(A); M = [[0.0] * n for _ in range(n)]; c = [1.0]
    I = [[1.0 if i == j else 0.0 for j in range(n)] for i in range(n)]
    for k in range(1, n + 1):
        AM = [[sum(A[i][l] * M[l][j] for l in range(n)) for j in range(n)] for i in range(n)]
        M = [[AM[i][j] + c[-1] * I[i][j] for j in range(n)] for i in range(n)]
        AM = [[sum(A[i][l] * M[l][j] for l in range(n)) for j in range(n)] for i in range(n)]
        c.append(-sum(AM[i][i] for i in range(n)) / k)
    return c

def roots(c, it=500):
    """All roots of a polynomial by the Durand-Kerner iteration."""
    n = len(c) - 1; a = [x / c[0] for x in c]
    z = [complex(0.4, 0.9) ** k for k in range(n)]
    for _ in range(it):
        new = []
        for i in range(n):
            p = sum(a[k] * z[i] ** (n - k) for k in range(n + 1))
            d = 1
            for j in range(n):
                if j != i: d *= (z[i] - z[j])
            new.append(z[i] - p / d)
        z = new
    return sorted(z, key=lambda r: -abs(r))

def describe(s):
    import math
    if abs(s.imag) < 1e-6:
        t = -1 / s.real if s.real < 0 else 1 / s.real
        kind = 'time constant' if s.real < 0 else 'doubles every'
        val = t if s.real < 0 else math.log(2) / s.real
        return f"real root {s.real:+.4f}: {kind} {val:.2f} s"
    wn = abs(s); z = -s.real / wn
    return f"pair {s.real:+.4f} +/- {abs(s.imag):.4f}j: wn {wn:.3f} rad/s, zeta {z:.3f}, period {2*math.pi/abs(s.imag):.1f} s"

m, Iyy, S, c, g = 6500.0, 27000.0, 28.0, 1.73, 9.81
rho, u0 = 0.909, 105.0
Q = 0.5 * rho * u0 ** 2; QS = Q * S
CL = m * g / QS; CD = 0.028 + 0.039 * CL ** 2
CLa, CDa = 5.6, 2 * 0.039 * CL * 5.6
Cma, Cmq, Cmad = -1.00, -20.0, -6.0          # per radian (Cmq, Cmad on q c/2u0 and alpha-dot c/2u0)
print(f"q = {Q:.0f} Pa, CL = {CL:.3f}, CD = {CD:.4f}")
# dimensional derivatives (Nelson notation), per unit of u, w (m/s) and q (rad/s)
Xu = -2 * CD * QS / (m * u0)
Xw = (CL - CDa) * QS / (m * u0)
Zu = -2 * CL * QS / (m * u0)
Zw = -(CLa + CD) * QS / (m * u0)
Mw = Cma * QS * c / (Iyy * u0)
Mwd = Cmad * (c / (2 * u0)) * QS * c / (Iyy * u0)
Mq = Cmq * (c / (2 * u0)) * QS * c / Iyy
A = [[Xu, Xw, 0.0, -g],
     [Zu, Zw, u0, 0.0],
     [Mwd * Zu, Mw + Mwd * Zw, Mq + Mwd * u0, 0.0],
     [0.0, 0.0, 1.0, 0.0]]
print("state x = [u, w, q, theta]; A =")
for row in A: print("  " + "  ".join(f"{v:+9.4f}" for v in row))
cp = charpoly(A)
print("characteristic polynomial:", "  ".join(f"{v:+.4f}" for v in cp))
for s in roots(cp):
    if s.imag >= -1e-9: print("  " + describe(s))
Output
q = 5011 Pa, CL = 0.454, CD = 0.0361
state x = [u, w, q, theta]; A =
    -0.0148    +0.0526    +0.0000    -9.8100
    -0.1869    -1.1586  +105.0000    +0.0000
    +0.0008    -0.0807    -1.9255    +0.0000
    +0.0000    +0.0000    +1.0000    +0.0000
characteristic polynomial: +1.0000  +3.0990  +10.7616  +0.1810  +0.1569
  pair -1.5432 +/- 2.8856j: wn 3.272 rad/s, zeta 0.472, period 2.2 s
  pair -0.0063 +/- 0.1209j: wn 0.121 rad/s, zeta 0.052, period 52.0 s

The program finds the characteristic quartic and its four roots. They come as two complex pairs, as they almost always do for a conventional aircraft. The first pair, \(-1.54 \pm 2.89j\), has a natural frequency of 3.27 rad/s and a damping ratio of 0.47: a fast, well-damped pitching motion with a period of about 2 seconds. The second, \(-0.0063 \pm 0.121j\), has a natural frequency of 0.12 rad/s, a period of 52 seconds and a damping ratio of only 0.05. These are the short-period mode and the phugoid, the two longitudinal modes that Lesson 7 studies in detail. All four roots have negative real parts, so the Tern is dynamically stable in cruise.

A complex plane with real part on the horizontal axis and imaginary part on the vertical axis. Two crosses far to the left at about -1.5 with imaginary parts plus and minus 2.9 are labelled short period, wn 3.27, zeta 0.47. Two crosses almost on the imaginary axis at plus and minus 0.12 are labelled phugoid, wn 0.12, zeta 0.05.
Longitudinal roots of the Tern Block 2 in cruise. The short-period pair is far from the imaginary axis and well damped; the phugoid pair sits close to it and is lightly damped.

Why solve it this way

Engineering tools find eigenvalues with the QR algorithm, which is faster and more robust than forming the characteristic polynomial. The program uses the polynomial route because it shows each step and needs nothing beyond standard Python. For four-by-four systems with well-separated roots it is accurate; for larger or badly scaled matrices, forming the polynomial loses precision, and professional tools avoid it. The program's coefficients also allow a classical check called Routh's criterion: for a quartic with all coefficients positive, the system is stable if \(c_1c_2c_3 > c_3^2 + c_1^2c_4\). For the Tern, \(3.099 \times 10.76 \times 0.181 = 6.04\) comfortably exceeds \(0.181^2 + 3.099^2 \times 0.157 = 1.54\). The same test can be applied with the derivatives as symbols to find exactly which combination of them would make the phugoid unstable.

Linear models have limits worth stating. They are valid for small perturbations about one flight condition. Near the stall, where lift no longer varies linearly with angle of attack, or in large manoeuvres where the products of rates matter, the full nonlinear equations must be used. The Tern's simulator therefore runs the full twelve-state model with tabulated aerodynamic data, and the linear models are extracted from it at many flight conditions for stability analysis and control design.

Worked problem

Reading a root

A mode has eigenvalues \(-0.8 \pm 2.4j\). Find its natural frequency, damping ratio and period.

Show solution
  1. \(\omega_n = \sqrt{0.8^2 + 2.4^2} = 2.53\) rad/s.
  2. \(\zeta = 0.8/2.53 = 0.316\).
  3. Period \(= 2\pi/2.4 = 2.62\) s.

Answer: The amplitude halves every \(\ln 2/0.8 = 0.87\) s, so it is mostly gone within two cycles.

Worked problem

Building a derivative

At 100 m/s and dynamic pressure 5000 Pa, an aircraft with \(S = 30\) m², \(\bar c = 1.8\) m and \(I_y = 30\,000\) kg m² has \(C_{m_\alpha} = -1.1\) per radian. Find \(M_w\).

Show solution
  1. \(M_\alpha = -1.1 \times 5000 \times 30 \times 1.8/30\,000 = -9.9\) per s².
  2. \(M_w = M_\alpha/u_0 = -0.099\) per m s.

Answer: The short-period frequency is roughly the square root of −M_α plus a damping term, so this aircraft's short period will be near 3 rad/s.

Common mistakes

  • MistakeKeeping products of perturbations in a linear model.

    InsteadSmall-perturbation theory drops them; they belong in the nonlinear simulator.

  • MistakeCalling the aircraft stable because the static margin is positive.

    InsteadDynamic stability needs every eigenvalue in the left half-plane.

  • MistakeConfusing damped frequency with natural frequency.

    InsteadThe oscillation frequency is ω_n√(1 − ζ²); the period uses it.

  • MistakeUsing a linear model far from its trim point.

    InsteadRe-linearize at each flight condition; near the stall use the nonlinear model.

Summary and key terms

  • Linearizing the equations of motion about a trimmed, wings-level flight condition separates them into longitudinal and lateral-directional sets.
  • Forces and moments are expanded with dimensional stability derivatives, giving a state-space model x-dot = Ax + Bu.
  • The eigenvalues of A are the natural modes: real roots for non-oscillatory modes, complex pairs for oscillations with a natural frequency and damping ratio.
  • The aircraft is dynamically stable when every root lies in the left half-plane.
  • For the Tern in cruise the longitudinal roots are a well-damped short period and a lightly damped phugoid.
Small perturbation
A departure from trimmed flight small enough for products to be neglected.
Dimensional derivative
A force or moment derivative divided by mass or inertia, used in the state matrix.
State-space model
A set of first-order equations x-dot = Ax + Bu.
Eigenvalue
A root of det(λI − A) = 0, describing one mode.
Natural frequency
ω_n, the magnitude of a complex root.
Damping ratio
ζ, minus the real part divided by the natural frequency.
Routh criterion
An algebraic test of the characteristic polynomial for stability.

Practice problems

Work each problem on paper first, then reveal the answer to check.

  1. Why do the longitudinal and lateral equations separate?

    Show answer

    For a symmetric aircraft in wings-level flight, the cross-coupling terms vanish after linearization.

  2. What does M_ẇ represent physically?

    Show answer

    The lag of downwash reaching the tail, which adds pitch damping.

  3. In the program, make Cm_alpha −0.2. What happens to the short period?

    Show answer

    Its frequency falls and its damping rises; the two roots may approach the real axis.

  4. What is the period of a mode with roots −0.1 ± 0.5j?

    Show answer

    2π/0.5 = 12.6 s.

  5. State the condition for dynamic stability in terms of eigenvalues.

    Show answer

    Every eigenvalue has a negative real part.

  6. Why do professional tools avoid forming the characteristic polynomial?

    Show answer

    It loses precision for large or badly scaled matrices; QR is more robust.

Lesson quiz · 5 questions

Score 60% or more to complete this lesson.

Take the quiz