Solution of State Equations and the State Transition Matrix
Chapter 23 wrote the system as \(\dot{\mathbf{x}}=A\mathbf{x}+B u\) but never solved it; this chapter does, and everything follows from one object — the state transition matrix \(e^{At}\), which propagates the state forward in time and turns the whole forced response into a single convolution integral.
- Why the solution of \(\dot{\mathbf{x}}=A\mathbf{x}\) must be the matrix exponential \(e^{At}\), derived from a power series rather than assumed.
- The state transition matrix \(\Phi(t)=e^{At}\) and the seven properties that make it a propagation operator.
- How to compute \(\Phi(t)\) by Laplace inversion of the resolvent \((sI-A)^{-1}\).
- How Cayley–Hamilton collapses an infinite series into a polynomial of degree \(n-1\), and how Sylvester's formula fixes its coefficients.
- Why the eigenvalues of \(A\) are the system modes, and how each mode owns a direction in state space.
- The complete solution \(\mathbf{x}(t)=\Phi(t)\mathbf{x}(0)+\int_0^t \Phi(t-\tau)B u(\tau)\,d\tau\) and its split into zero-input and zero-state parts.
- How \(\Phi(s)\) regenerates the transfer function \(C(sI-A)^{-1}B+D\) of Chapters 3 and 23.
The Question Chapter 23 Left Open
Chapter 23 replaced the single high-order differential equation of a system by a first-order vector equation,
and argued that this form carries strictly more information than the transfer function: it exposes the internal variables, it accommodates non-zero initial conditions naturally, and it extends without modification to multi-input, multi-output systems. All of that was structural. What Chapter 23 did not do was solve the equation — it never produced \(\mathbf{x}(t)\).
That is the whole business of this chapter, and the answer turns out to be remarkably close to the scalar case every student already knows. For a single first-order equation \(\dot{x}=ax+bu\) with \(x(0)=x_0\), the classical result from Chapter 7 is
The first term is the decaying memory of where the system started; the second is a running accumulation of the input, each past value weighted by how much of it survives to time \(t\). The vector case will produce a formula of exactly this shape, with the scalar \(e^{at}\) replaced by an \(n\times n\) matrix \(e^{At}\). Establishing what that symbol means, proving it behaves the way the notation promises, and learning three practical ways to compute it are the tasks ahead.
The Homogeneous Equation and the Matrix Exponential
Set the input to zero and ask what the state does on its own. The homogeneous state equation is
Rather than guess the answer, look for a solution as a power series in \(t\) with vector coefficients — a legitimate move because the equation has constant coefficients and the solution is analytic:
Substituting into \(\dot{\mathbf{x}}=A\mathbf{x}\) and matching the coefficient of \(t^k\) on both sides gives the recursion \((k+1)\mathbf{b}_{k+1}=A\mathbf{b}_k\), so that \(\mathbf{b}_{k+1}=\dfrac{A\mathbf{b}_k}{k+1}\). Starting from \(\mathbf{b}_0=\mathbf{x}(0)=\mathbf{x}_0\) and unwinding,
Collecting the terms and factoring the constant vector \(\mathbf{x}_0\) out on the right,
The bracketed matrix series is defined to be the matrix exponential \(e^{At}\). The definition is not an analogy borrowed from scalars: it is the series that the differential equation itself forced on us. It converges for every square \(A\) and every finite \(t\), because each entry is bounded in magnitude by the corresponding term of the convergent scalar series \(e^{\|A\|t}\).
Because this matrix carries the state from its value at one instant to its value at another, it is given a name and a symbol of its own.
\(\Phi(t)\) is an \(n\times n\) matrix of time functions. Its \(ij\)-th entry is the contribution of the initial value \(x_j(0)\) to the state \(x_i(t)\). It depends on \(A\) alone — not on \(B\), not on \(C\), and not on the input. Change the input and \(\Phi\) is unaffected; change one entry of \(A\) and every entry of \(\Phi\) generally changes.
The series definition is excellent for proofs and hopeless for computation: it is infinite, and truncating it gives only a polynomial approximation valid for small \(t\). Sections 24-4 and 24-5 provide two exact, finite methods. First, though, it pays to establish what \(\Phi(t)\) does, because several of its properties can be used to check an answer before any arithmetic is trusted.
Properties of the State Transition Matrix
Every property below follows directly from the series, and each has a physical reading. Taken together they justify the word transition: \(\Phi\) is an operator that moves the state through time, forwards or backwards, in steps that compose.
| # | Property | What it says physically |
|---|---|---|
| 1 | \(\Phi(0)=I\) | Zero elapsed time changes nothing. This is the first check on any computed \(\Phi\). |
| 2 | \(\dot{\Phi}(t)=A\Phi(t)=\Phi(t)A\) | \(\Phi\) satisfies the state equation itself; and \(\dot{\Phi}(0)=A\), which recovers \(A\) from \(\Phi\). |
| 3 | \(\Phi(t_1+t_2)=\Phi(t_1)\Phi(t_2)\) | Propagation composes: two short steps equal one long one. |
| 4 | \(\Phi^{-1}(t)=\Phi(-t)\) | \(\Phi\) is never singular, so the motion can always be run backwards to recover \(\mathbf{x}_0\). |
| 5 | \([\Phi(t)]^k=\Phi(kt)\) | Repeating a fixed step \(k\) times advances time by \(kt\) — the basis of the discrete models of Chapter 27. |
| 6 | \(\Phi(t_2-t_0)=\Phi(t_2-t_1)\Phi(t_1-t_0)\) | Only elapsed time matters, never absolute time: the system is time-invariant. |
| 7 | \(\lambda_i\!\left[\Phi(t)\right]=e^{\lambda_i t}\) | The eigenvalues of \(\Phi\) are the exponentials of the eigenvalues of \(A\), which is where stability lives. |
Property 3 deserves its proof, since it is the one that is genuinely surprising. Multiplying the two series and collecting powers of \(A\),
The binomial theorem is applied to two scalars, \(t_1\) and \(t_2\), which is why the argument works. Try the same step with two different matrices and it collapses, because \(A\) and \(B\) need not commute. That failure is important enough to state as a warning.
Matrices that do not commute have exponentials that do not combine. \(e^{At}e^{At}=e^{2At}\) is safe — a matrix always commutes with itself — but no similar shortcut exists for a sum of two different system matrices. This is the single most common error in state-space manipulation.
Property 7 connects this chapter to the whole of Part 3. If \(A\mathbf{v}=\lambda\mathbf{v}\), then \(A^k\mathbf{v}=\lambda^k\mathbf{v}\), so applying the series term by term gives \(e^{At}\mathbf{v}=e^{\lambda t}\mathbf{v}\). Every entry of \(\Phi(t)\) is therefore a combination of the terms \(e^{\lambda_i t}\), and \(\Phi(t)\to 0\) as \(t\to\infty\) precisely when every eigenvalue satisfies \(\mathrm{Re}\,\lambda_i < 0\). That is the state-space statement of the stability condition of Chapter 10, and it is the same condition, because the eigenvalues of \(A\) are the poles of the transfer function.
The Laplace Route: the Resolvent Matrix
The most systematic way to obtain \(\Phi(t)\) exactly is to transform the homogeneous equation. Chapter 3 gave \(\mathcal{L}\{\dot{x}\}=sX(s)-x(0)\), and that rule applies component by component to a vector:
The identity matrix \(I\) is essential: \(s-A\) is meaningless, since a scalar cannot be subtracted from a matrix. Comparing with \(\mathbf{x}(t)=\Phi(t)\mathbf{x}_0\) and using uniqueness of the Laplace transform identifies the transform of the transition matrix.
Every entry of \((sI-A)^{-1}\) is a strictly proper rational function whose denominator is the characteristic polynomial \(\det(sI-A)\). Invert each entry separately by partial fractions and the result is \(\Phi(t)\), exactly and in closed form.
Two consequences are worth extracting immediately. First, the common denominator \(\det(sI-A)=0\) is the characteristic equation, and its roots are the eigenvalues of \(A\). Every entry of \(\Phi(t)\) is built from the same set of exponentials \(e^{\lambda_i t}\) — the system has one shared set of natural modes regardless of which state variable is examined.
Second, expanding the resolvent as a Neumann series for large \(s\) reconciles the two definitions and gives a useful sanity check:
For a \(2\times2\) system the inverse is quick, since \(\begin{bmatrix}a&b\\c&d\end{bmatrix}^{-1}=\dfrac{1}{ad-bc}\begin{bmatrix}d&-b\\-c&a\end{bmatrix}\). For \(3\times3\) and larger the adjoint becomes laborious by hand, which is exactly the situation the next section addresses.
Cayley–Hamilton and Sylvester's Formula
An infinite series of matrix powers looks intractable, but the powers are not independent. The Cayley–Hamilton theorem states that every square matrix satisfies its own characteristic equation: if
Read the right-hand identity as a statement about \(A^n\): it equals a combination of \(I, A, \ldots, A^{n-1}\). Multiply by \(A\) and \(A^{n+1}\) is likewise reducible, and so on for every higher power. Therefore every power series in \(A\) — the exponential included — collapses to a polynomial of degree at most \(n-1\).
An \(n\)-th order system needs only \(n\) scalar time functions \(\alpha_k(t)\). The infinite series has been compressed into a finite sum without approximation.
Finding the \(\alpha_k(t)\) uses a simple observation. The reduction above is driven entirely by the characteristic polynomial, which the eigenvalues also satisfy. So whatever identity holds between \(e^{At}\) and the powers of \(A\) must hold with \(A\) replaced by any eigenvalue \(\lambda_i\). That gives \(n\) scalar equations — Sylvester's interpolation formula — in the \(n\) unknowns \(\alpha_k(t)\):
The coefficient matrix of this linear system is a Vandermonde matrix, non-singular whenever the eigenvalues are distinct, so the \(\alpha_k(t)\) are uniquely determined. When an eigenvalue \(\lambda\) is repeated \(m\) times it supplies only one equation, and the deficit is made up by differentiating the same relation with respect to \(\lambda\):
For a double root the first derivative gives \(t\,e^{\lambda t}=\alpha_1+2\alpha_2\lambda+\cdots\), which is precisely why terms of the form \(t e^{\lambda t}\) appear in the response of a critically damped system — the same \(t e^{-\zeta\omega_n t}\) that Chapter 8 produced at \(\zeta=1\).
| Method | Best when | Watch out for |
|---|---|---|
| Power series | Proving properties; numerical work with small \(t\) | Infinite — never exact if truncated |
| Laplace, \((sI-A)^{-1}\) | \(n=2\) or \(3\); when \(\Phi(s)\) is wanted anyway for the transfer function | The adjoint grows quickly with \(n\) |
| Cayley–Hamilton / Sylvester | Eigenvalues already known; \(n\ge 3\); repeated roots | Must differentiate for repeated eigenvalues |
| Diagonalisation \(Ve^{\Lambda t}V^{-1}\) | Eigenvectors already known; modal insight wanted | Fails for a defective \(A\) (needs Jordan form) |
Modes, Eigenvectors, and the Shape of the Response
The fourth method in that table earns its place not for arithmetic economy but for insight. Suppose \(A\) has \(n\) linearly independent eigenvectors \(\mathbf{v}_1,\ldots,\mathbf{v}_n\) with eigenvalues \(\lambda_1,\ldots,\lambda_n\). Collect them as columns of \(V\); then \(AV=V\Lambda\) with \(\Lambda=\operatorname{diag}(\lambda_i)\), so \(A=V\Lambda V^{-1}\) and \(A^k=V\Lambda^kV^{-1}\). Feeding that into the series gives
Writing \(\mathbf{w}_i^{T}\) for the rows of \(V^{-1}\) and expanding the product term by term turns this into a sum of rank-one pieces:
The free motion is a superposition of \(n\) modes. Mode \(i\) evolves in time as \(e^{\lambda_i t}\) and always points along the fixed direction \(\mathbf{v}_i\) in state space. The initial condition decides only how much of each mode is excited, never its shape or its speed.
Several familiar facts fall out at once. Start on an eigenvector, \(\mathbf{x}_0=\mathbf{v}_j\), and only mode \(j\) is excited: the state slides straight down that line to the origin as \(e^{\lambda_j t}\), never leaving the direction it started in. Start anywhere else and all modes are present, but the fastest ones die first; after a few time constants only the mode with the eigenvalue nearest the imaginary axis survives, so every trajectory ends up drifting into the slow eigenvector direction. That is the state-space picture of the dominant-pole idea from Chapter 8.
Complex eigenvalues \(\sigma\pm j\omega\) arrive in conjugate pairs with conjugate eigenvectors, and the two complex modes always combine into a single real oscillation built from \(e^{\sigma t}\cos\omega t\) and \(e^{\sigma t}\sin\omega t\), confined to the plane spanned by the real and imaginary parts of the eigenvector. The damping ratio and natural frequency of Chapter 8 are simply polar coordinates for that eigenvalue pair: \(\sigma=-\zeta\omega_n\) and \(\omega=\omega_n\sqrt{1-\zeta^{2}}\).
The Complete Solution: Adding the Input Back
With the homogeneous problem settled, restore the input. The trick is the matrix version of the integrating factor used for scalar first-order equations. Move \(A\mathbf{x}\) to the left and pre-multiply by \(e^{-At}\), which is legitimate because \(e^{-At}\) always exists (Property 4):
The left side collapses because \(\dfrac{d}{dt}e^{-At}=-Ae^{-At}\), so the product rule reproduces exactly the two terms in the bracket. Integrating both sides from \(0\) to \(t\), using a dummy variable \(\tau\),
where the final step multiplies through by \(e^{At}\) and uses \(e^{At}e^{-A\tau}=e^{A(t-\tau)}\), which is legal because both exponents involve the same matrix \(A\).
\[ y(t)=C\Phi(t)\mathbf{x}(0)+\int_0^{t}C\Phi(t-\tau)Bu(\tau)\,d\tau + Du(t) \]
The same \(\Phi\) appears twice. In the first term it propagates the initial state over the full interval; in the second it propagates each infinitesimal input kick \(Bu(\tau)d\tau\) over the time \(t-\tau\) that remains after it is applied. Superposition of those two effects is the entire content of the formula.
The split is not merely algebraic bookkeeping. The zero-input response is what the system does when left alone, and it depends on \(A\) and \(\mathbf{x}_0\) only. The zero-state response is what the input produces starting from rest, and it depends on \(A\), \(B\) and \(u\). The transfer function of Chapters 3 and 23 describes the second and is completely blind to the first — which is precisely why initial-condition problems cannot be attacked by transfer-function methods but yield immediately here.
Finally, close the loop with the frequency-domain description. Transform the state equation with \(\mathbf{x}(0)=\mathbf{0}\) and eliminate \(\mathbf{X}(s)\):
The convolution integral in the time domain and the product \(C\Phi(s)B\) in the \(s\)-domain are the same statement, related by the convolution theorem of Chapter 3. The matrix \(g(t)=C\Phi(t)B+D\delta(t)\) is the impulse response matrix: its \(ij\)-th entry is the response at output \(i\) to an impulse at input \(j\).
Worked Examples
Problem. Find the state transition matrix of \(A=\begin{bmatrix}0&1\\-2&-3\end{bmatrix}\).
Solution. Form \(sI-A\), invert it, and inverse-transform each entry.
The eigenvalues are \(-1\) and \(-2\), so every entry of \(\Phi(t)\) will be a combination of \(e^{-t}\) and \(e^{-2t}\). Expanding each entry in partial fractions:
Check with Property 1: at \(t=0\) the entries are \(2-1=1\), \(1-1=0\), \(-2+2=0\), \(-1+2=1\), giving \(\Phi(0)=I\). Check with Property 2: differentiating and setting \(t=0\) gives \(\begin{bmatrix}-2+2&-1+2\\2-4&1-4\end{bmatrix}=\begin{bmatrix}0&1\\-2&-3\end{bmatrix}=A\). Both checks pass.
Problem. Recompute \(e^{At}\) for \(A=\begin{bmatrix}0&1\\-2&-3\end{bmatrix}\) using Sylvester's formula, and confirm it agrees with Example 1.
Solution. The order is \(n=2\), so \(e^{At}=\alpha_0 I+\alpha_1 A\). The eigenvalues \(\lambda_1=-1\), \(\lambda_2=-2\) are distinct, so each supplies one scalar equation.
Subtracting the second equation from the first gives \(\alpha_1\) directly; back-substitution gives \(\alpha_0=e^{-t}+\alpha_1\).
The \((2,2)\) entry simplifies to \(-e^{-t}+2e^{-2t}\), so the result is identical to Example 1. Two independent routes, one answer — and for \(n\ge3\) this route is usually the shorter one, because it needs only the eigenvalues, never the adjoint.
Problem. Find \(\Phi(t)\) for \(A=\begin{bmatrix}0&1\\-1&-2\end{bmatrix}\).
Solution. The characteristic polynomial is \(\det(\lambda I-A)=\lambda(\lambda+2)+1=(\lambda+1)^2\), so \(\lambda=-1\) twice. One eigenvalue cannot supply two equations, so differentiate the interpolation relation with respect to \(\lambda\).
Verify: \(\Phi(0)=I\); and \(\dot{\Phi}(0)\) has entries \(\left.-te^{-t}\right|_0=0\), \(\left.(1-t)e^{-t}\right|_0=1\), \(\left.-(1-t)e^{-t}\right|_0=-1\), \(\left.(t-2)e^{-t}\right|_0=-2\), reproducing \(A\). The factor \(t\) multiplying the exponential is the signature of the repeated root — this is a critically damped system, \(\zeta=1\), \(\omega_n=1\) in the language of Chapter 8.
Problem. For \(A=\begin{bmatrix}0&1\\-2&-3\end{bmatrix}\), \(B=\begin{bmatrix}0\\1\end{bmatrix}\), \(\mathbf{x}(0)=\begin{bmatrix}1\\0\end{bmatrix}\) and \(u(t)\) a unit step, find \(\mathbf{x}(t)\).
Solution. Take the two parts separately. The zero-input part uses \(\Phi(t)\) from Example 1 acting on \(\mathbf{x}(0)\), which simply selects its first column:
For the zero-state part the Laplace route is faster than the integral. With \(U(s)=1/s\),
Three checks. At \(t=0\): \(x_1=\tfrac12+1-\tfrac12=1\) and \(x_2=-1+1=0\), matching \(\mathbf{x}(0)\). Differentiating, \(\dot{x}_1=-e^{-t}+e^{-2t}=x_2\), which is exactly the first row of the state equation. As \(t\to\infty\), \(x_1\to0.5\), the DC gain of \(1/(s^2+3s+2)\) — and \(x_2\to0\), since a stable system driven by a constant must end with a stationary state. These are the curves plotted in Section 24-7.
Problem. For the same \(A\), diagonalise and recompute \(e^{At}\) as \(Ve^{\Lambda t}V^{-1}\). Then with \(B=\begin{bmatrix}0\\1\end{bmatrix}\), \(C=\begin{bmatrix}1&0\end{bmatrix}\), \(D=0\), find \(G(s)\).
Solution. For \(\lambda_1=-1\), \((A-\lambda_1 I)\mathbf{v}=\begin{bmatrix}1&1\\-2&-2\end{bmatrix}\mathbf{v}=0\) gives \(\mathbf{v}_1=\begin{bmatrix}1\\-1\end{bmatrix}\). For \(\lambda_2=-2\), \(\begin{bmatrix}2&1\\-2&-1\end{bmatrix}\mathbf{v}=0\) gives \(\mathbf{v}_2=\begin{bmatrix}1\\-2\end{bmatrix}\).
The third route reproduces the same \(\Phi(t)\). It also says something the others do not: the slow mode moves the state along \(\begin{bmatrix}1&-1\end{bmatrix}^{T}\) and the fast mode along \(\begin{bmatrix}1&-2\end{bmatrix}^{T}\) — the two dashed lines in the phase-plane figure. For the transfer function,
The denominator is \(\det(sI-A)\), as it must be: the poles of the transfer function are the eigenvalues of \(A\).
Problem. A system has \(\Phi(t)=\begin{bmatrix}(1+t)e^{-t}&te^{-t}\\-te^{-t}&(1-t)e^{-t}\end{bmatrix}\). Find \(A\), find \(\Phi(-t)\) without inverting a matrix, and find \(\mathbf{x}(t)\) for \(\mathbf{x}(0)=\begin{bmatrix}1\\-1\end{bmatrix}\).
Solution. Property 2 gives \(A=\dot{\Phi}(0)\). Differentiating each entry and evaluating at zero:
Property 4 gives the inverse for free — replace \(t\) by \(-t\):
Finally, propagate the given initial state:
Every \(t e^{-t}\) term cancelled. That is no accident: \(\begin{bmatrix}1&-1\end{bmatrix}^{T}\) is the sole eigenvector of this defective matrix, and starting on an eigenvector excites a pure exponential mode with no polynomial contamination.
Chapter Summary
\(\Phi(t)=e^{At}=\sum A^kt^k/k!\), derived from the series solution of \(\dot{\mathbf{x}}=A\mathbf{x}\).
\(\Phi(0)=I\), \(\dot{\Phi}(0)=A\), \(\Phi(t_1{+}t_2)=\Phi(t_1)\Phi(t_2)\), \(\Phi^{-1}(t)=\Phi(-t)\).
\(\Phi(s)=(sI-A)^{-1}\); the denominator \(\det(sI-A)\) holds the eigenvalues.
\(e^{At}=\sum_{k=0}^{n-1}\alpha_k(t)A^{k}\); solve for \(\alpha_k\) at the eigenvalues, differentiating for repeats.
\(\mathbf{x}(t)=\sum(\mathbf{w}_i^{T}\mathbf{x}_0)e^{\lambda_i t}\mathbf{v}_i\): eigenvalue sets the rate, eigenvector the direction.
\(\mathbf{x}=\Phi(t)\mathbf{x}_0+\int_0^t\Phi(t-\tau)Bu\,d\tau\); zero-input plus zero-state.
\(G(s)=C\Phi(s)B+D\), so transfer-function poles are eigenvalues of \(A\).
\(e^{At}e^{Bt}\ne e^{(A+B)t}\) unless \(A\) and \(B\) commute.
Problems
For each problem, decide first which of the three routes is cheapest — Laplace, Sylvester, or diagonalisation — and always finish by checking \(\Phi(0)=I\) and \(\dot{\Phi}(0)=A\). Difficulty rises down the list.
- Find \(\Phi(t)\) for \(A=\begin{bmatrix}-3&0\\0&-5\end{bmatrix}\) and state why no work is needed for a diagonal matrix.
- Find \(\Phi(t)\) for \(A=\begin{bmatrix}0&1\\0&0\end{bmatrix}\) directly from the series, and explain why the series terminates.
- Find \(\Phi(t)\) for \(A=\begin{bmatrix}0&1\\-6&-5\end{bmatrix}\) by the Laplace route.
- Repeat Problem 3 using Sylvester's formula and confirm the two answers agree.
- Find \(\Phi(t)\) for \(A=\begin{bmatrix}0&1\\-4&-4\end{bmatrix}\), which has a repeated eigenvalue.
- For \(A=\begin{bmatrix}0&1\\-2&-2\end{bmatrix}\), find \(\Phi(t)\) and express the entries with \(\sin t\) and \(\cos t\) rather than complex exponentials.
- A system has \(\Phi(t)=\begin{bmatrix}e^{-2t}&0\\ e^{-2t}-e^{-3t}&e^{-3t}\end{bmatrix}\). Find \(A\) and \(\Phi(-t)\).
- For the system of Problem 3 with \(B=\begin{bmatrix}0\\1\end{bmatrix}\), \(\mathbf{x}(0)=\begin{bmatrix}0\\1\end{bmatrix}\) and a unit-step input, find \(\mathbf{x}(t)\) and its final value.
- For the system of Problem 3 with \(B=\begin{bmatrix}0\\1\end{bmatrix}\), \(C=\begin{bmatrix}1&0\end{bmatrix}\), \(D=0\), obtain \(G(s)\) and verify that its poles are the eigenvalues of \(A\).
- Show that if \(\mathbf{x}(0)\) is an eigenvector of \(A\), the free response never leaves the line through that vector, and identify the exception when \(\lambda=0\).
- Prove \(\Phi^{-1}(t)=\Phi(-t)\) from the composition property, and use it to express \(\mathbf{x}(0)\) in terms of a measurement of \(\mathbf{x}(t_1)\).
- Take \(A_1=\begin{bmatrix}0&1\\0&0\end{bmatrix}\) and \(A_2=\begin{bmatrix}0&0\\1&0\end{bmatrix}\). Compute \(e^{A_1t}e^{A_2t}\) and \(e^{(A_1+A_2)t}\) at \(t=1\) and confirm they differ.
- Starting from the complete solution, derive the exact discrete-time model \(\mathbf{x}(k{+}1)=\Phi(T)\mathbf{x}(k)+\Gamma u(k)\) for a zero-order-held input, and give \(\Gamma\) as an integral.