The Kalman Filter
A state you cannot measure, recovered from one you can. The Kalman filter runs a replica of the plant alongside the real thing and corrects it with the output error, using a gain that is not tuned by hand but computed in closed form from a Riccati recursion. That recursion is autonomous — it runs offline, before any measurement arrives — which means the accuracy of a software sensor can be quoted before the sensor exists.
01 · Motivation
Deleting a sensor and keeping the signal
A plant has internal states and measured outputs, and almost always — for one reason, which is that physical sensors cost money. Software sensing is the business of getting the missing signals anyway.
The states you cannot afford to measure are exactly the ones you want. They feed the control algorithm, and they feed monitoring: fault detection and predictive maintenance both need to watch quantities that no instrument is reading.
There are two ways out, and choosing between them is an economics problem before it is a control problem. Adding a physical sensor costs a fixed amount per unit produced. Developing a software sensing algorithm costs a large amount once and nothing thereafter. Break-even sits where the development cost equals times the unit hardware cost, so:
High-volume production
A city car built by the hundred thousand amortises the development cost immediately. Software sensing wins, and every unit shipped widens the margin.
Low-volume production
A supercar built by the hundred never amortises it. Installing the physical sensor is simply cheaper.
That is the clean version. In practice three things bend it. First, redundancy: safety-critical aerospace and automotive systems run both, at low volume, precisely because two independent estimates of the same quantity are worth more than either. Second, some sensors are not merely expensive but infeasible — nothing can be installed where the signal lives. Third, hardware carries costs that do not appear on the unit price: installation complexity, space and weight, energy consumption. The net trend across industry is steadily towards more software sensors and fewer physical ones.
The two questions every software-sensing design must answer
Before any algorithm, two questions decide whether the project is possible and whether it is worth doing.
- Is it feasible? Only if the state can be reconstructed from the output at all — which is exactly the observability test from chapter 01. That rank condition stops being a classification exercise here and becomes a go/no-go gate.
- How good will it be? The estimation error is the software sensor’s noise specification — the direct analogue of the noise figure printed on a physical sensor’s datasheet. §05 shows that this number is computable in advance.
What the Kalman filter is asked to deliver
The chapter’s model-based approach sets out three problems and one bonus:
| # | problem | given | wanted | status |
|---|---|---|---|---|
| 1 | -step output prediction | , | not new — MIDA1 solves it with ARMA/ARMAX | |
| 2 | -step state prediction | same, state unmeasured | new — input/output models cannot do this | |
| 3 | state filtering | same | the main motivation — this is the software sensor | |
| 4 | gray-box identification | same | model parameters | a side benefit, not the goal (chapter 07) |
Problem 2 is where input/output models run out. An ARMAX model has no state to predict; it describes the plant from the outside. Getting at requires the internal description, which is why the whole of this chapter is written in state space.
Chapter 2.3 consumes a model, it does not build one
Everything below assumes is given, typically built white-box from physics. That is a standing assumption, not an oversight: identification is chapters 02 and 03, filtering is this one. The two meet only in chapter 07, where gray-box identification uses the filter itself to pin down unknown parameters.
02 · The model
The basic system and its two noises
Everything that follows is derived for the simplest useful case — no exogenous input, linear, time-invariant — and then extended. The extensions in §06 turn out to be nearly free; the real content is here.
Building the covariances is a question in its own right
“Compute , and ” has been set 3 times for 18 marks across the archive — 04/09/2024, 04/09/2025 and 16/07/2026 — always as part (a) of Q2, and always as the gateway to the Riccati work in the rest of the question. Get it wrong and every later part inherits the error.
The setup is the same every time: the two equations share a noise source, so . That is the entire point of the question. A candidate who assumes out of habit loses the part and corrupts the DRE.
The basic system is a state-space model driven by two noises instead of an input:
with , and — once §06 restores the input — . The SISO special case is what every exam question uses, and it is worth noticing early that the general formulas below never assume it. Dropping makes the input/output pair a pure time series; §06 puts the input back at no cost.
- v₁ — process noise
Also called state noise or model noise. An -component vector white noise, . It represents internal disturbances and small modelling errors — the model is never exact, and is where that inexactness is booked.
- v₂ — measurement noise
Also called output error or sensor error. A -component vector white noise, . It models the noise on the physical sensors, which is why is usually the one you can look up.
- V₁ — process noise covariance
, symmetric, semi-definite positive (). Semi-definite is enough: some state directions may be driven by no noise at all.
- V₂ — measurement noise covariance
, symmetric, and strictly definite positive (). The strictness is not cosmetic — §03 shows it is what guarantees the filter exists.
- V₁₂ — cross-covariance
. Non-zero only at lag zero. In practice it is usually , but several formulas below are stated in the general case precisely because the exam is not.
Each noise carries the three standard white-noise properties — zero mean, the covariance above at lag zero, and zero correlation at every other lag. The cross-correlation is assumed to follow the same pattern:
Because the system is dynamic, it also needs an initial condition — and being stochastic, that condition is itself probabilistic: and . The special case says the initial state is known exactly. Finally, both noises are assumed uncorrelated with , a technical assumption that the optimality proof needs.
Reading the covariances off a system
Exam systems never hand you , and directly. They hand you a model written in terms of named scalar noises and let you assemble the matrices — and they arrange for one noise to appear in both equations, so that the cross-covariance cannot be zero.
The system as given
with , and . Note appears twice.
Identify the two noise terms
Match against the standard form: whatever is added to is , whatever is added to is .
Expand the variances, keeping the cross terms
Here kills the cross term. When the exam gives you instead, that term survives and changes the answer — which is the trap in the embedded question below.
The cross-covariance is where the shared noise shows up
Non-zero, and it had to be: drives the state and corrupts the sensor at the same instant, so the two noises are correlated by construction.
Sanity check
A cross-covariance cannot exceed the geometric mean of the two variances: . Here ✓. It is a cheap check and it catches sign and arithmetic slips before they propagate into the Riccati equation.
Three ways this part goes wrong
- Dropping the cross term when expanding . For the answer is . When the problem states that last term is not decoration — in the question below it drags from down to .
- Assuming because “in practice it is”. In practice it usually is. In the exam it usually is not, and the whole design of the question is to check whether you noticed.
- Losing the sign. makes negative while leaving positive. Squaring kills the sign in the variances but not in the cross-covariance.
03 · The recursion
The filter, and the equation that feeds it
The Kalman filter is four equations plus a recursion for a matrix. Three of the four are obvious. The fourth — the gain — is Kalman’s entire contribution, and the recursion that produces it is the only hard object in the chapter.
Two dynamic equations means two initial conditions: and — the two pieces of prior knowledge from §02, arriving exactly where they are needed.
The mnemonic that rebuilds both formulas
The gain and the DRE look unmemorable until you notice they are built from three repeated blocks, each of the shape (matrix) (matrix) (noise covariance):
| block | expression | where it comes from |
|---|---|---|
| STATE | and both belong to the state equation | |
| OUTPUT | and both belong to the output equation | |
| MIX | one of each — the state/output cross term |
Two lines instead of two formulas
Memorise the three blocks and both formulas reconstruct themselves. Note the shape of the DRE too: it is STATE minus a correction, and the correction is built from the same object that forms the gain. Uncertainty only ever goes down relative to open-loop propagation — which is what measuring something is supposed to do.
The DRE runs without data
Written that way, one thing is conspicuous: there is no input. The DRE is a non-linear matrix difference equation that is autonomous — its trajectory depends on , , , , and , and on nothing that is measured. Two consequences follow, and both matter:
- and can be computed entirely offline, before the plant is switched on. The online filter is then three cheap equations with a pre-computed gain schedule.
- The accuracy of the estimate is known in advance. §05 makes this precise.
The equation is named for Jacopo Riccati, who studied its continuous scalar ancestor in the early 1700s; Kalman rediscovered and used the matrix difference version in 1960.
Why was worth insisting on
The gain inverts , so the filter exists only if that matrix is invertible at every step. The argument is short:
- is semi-definite positive by construction, for any . On its own it may well be singular.
- is definite positive, by assumption.
- Semi-definite plus definite is definite, and definite positive matrices are invertible. ∎
That is the whole reason §02 demanded strictness for and allowed slackness for : a state direction with no noise is harmless, an output direction with no noise is not.
What the structure is doing
The block diagram is worth holding in your head, because every extension in §06 and §07 is a modification of it. The filter contains a replica of the plant — a digital twin running the same and , differing only in that it cannot see the two noises. It compares the real measurement against its own prediction , and feeds the difference back into its state equation through .
The plant’s two noise arrows are exactly what the filter lacks; the innovation feedback is what it has instead.
Feedback used for estimation, not for control
The loop looks exactly like a control loop, and it is not one. Nothing here acts on the plant; the feedback path exists to keep a simulator locked onto reality. The innovation is the only channel through which measurements enter, and it carries precisely the part of that the model failed to anticipate — which is why “innovation” is the right word for it.
This idea long predates Kalman: a replica with output-error feedback is the classical state observer. Kalman’s contribution was narrower and much deeper — a closed-form optimal choice of the correction gain. Without it you are guessing, and the failure modes are symmetric:
- too small — the filter under-exploits the information in and trusts a model it should be correcting.
- too big — the filter over-amplifies measurement noise, and can go unstable outright.
Nor can it be tuned by hand, because is not a knob. It is an matrix: for a modest , plant that is 30 numbers, all time-varying, all coupled.
The filter's real weak point is V₁
The Kalman filter needs and before it can run. is usually available — sensor datasheets quote it. is genuinely hard: it lumps together internal disturbances and modelling error, and no datasheet reports those. The current trend is to estimate from data, which quietly turns a model-based method into one that needs a training dataset — a machine-learning technique wearing a control-theory coat.
04 · The distinction that is graded
Predictor, filter, and the step between them
and both use every measurement up to time . They differ in which state they estimate — tomorrow’s or today’s — and converting between them is one multiplication. The exam asks for that conversion more often than for anything else in chapter 2.3.
7 questions, 27 marks, and every one of the last five sittings
“Predictor vs filter” is the most repeated part of Q2 in the archive: 7 questions, 27 marks, 7 of the 12 sittings — and it has appeared in every one of the last five (14/07/2025, 04/09/2025, 12/02/2026, 26/06/2026, 16/07/2026). It is worth 4 marks in six of those seven appearances.
The stem is nearly invariant. You are given , , , , , told that the DRE converges to a stated (sometimes with supplied too), and asked for the transfer function from to — with filter set in bold, because the predictor answer is the trap the question exists to catch. Assessing stability of is usually bolted on as part (a).
Everything asymptotic here — where comes from, whether the DRE converges at all — is chapter 05’s job. This section is about what you do once you have been handed , which is exactly the position the exam puts you in.
What each estimate is
The notation means: estimate of the state at time , using measurements up to time . Both objects below use the same data.
Same information, different target instant — which is why one multiplication converts between them.
Predictor — one step ahead of the data
estimates a state the data has not reached yet. This is the form the Kalman recursion produces natively, and the form §03 wrote down.
Filter — level with the data
estimates the state at the same instant as the most recent measurement. This is what a software sensor must deliver: an estimate of now, not of next.
Route A — invert
The filter’s own state equation is : to predict tomorrow from today’s best estimate, push it through the model — the noise contributes nothing because it is zero-mean. Reading that backwards gives the conversion:
One matrix inverse, applied to the whole predictor equation. That last point is where marks are lost; see the mistake callout below.
Route B — the filter form of the recursion
When is singular, route A is unavailable and the filter has to be generated directly. It has its own gain:
with and unchanged — the innovation is still built from the prediction, in both forms — and the DRE identical. Nothing about changes; only how its output is used.
The filter form carries a condition the predictor form does not
as written is valid only when . In practice almost always, so the condition is easy to forget — but exam systems are built with a shared noise source specifically to make . When it is non-zero, use route A. When is also singular, neither shortcut applies and the general derivation is needed.
The one-symbol difference
Set and put the two gains side by side:
They differ by exactly the leading , which is to say . This is not a coincidence — it is route A’s seen from the other side. It is also the single most testable line in the chapter, and a one-symbol slip changes the answer without changing its shape.
Worked example — the exam’s own format
What you are given
Scalar, as the exam always is. is handed over; chapter 05 explains where it came from.
Compute the asymptotic gain
Using the MIX and OUTPUT blocks with :
Check stability before going further
, so the filter is asymptotically stable. Do this first: an unstable means the transfer function you are about to write is not a usable one, and part (a) of the real questions asks for it explicitly.
Write the predictor as a closed-loop recursion
Substitute into the state equation to eliminate :
The pole of everything that follows is , and is the input gain.
Transfer functions of the predictor
Reading the recursion in the domain:
The two differ by one factor of — one step of shift, which is all “predictor” means.
Convert to the filter — the graded step
is invertible, so apply to the entire predictor transfer function:
Cross-check with route B
The filter gain is , and indeed ✓. Running the filter recursion instead of converting gives the same transfer function — worth doing once, so that you trust the shortcut afterwards.
Where marks actually go missing
- Applying to the gain only. The conversion multiplies the whole equation, both the memory term and the input term. Halving just one of them gives a wrong pole and a plausible-looking answer.
- Answering with the predictor. The questions bold the word filter because this is the standard slip. Read the target of the transfer function before computing anything.
- Expecting the filter to be dynamic. When the recursion has no memory term at all and the “transfer function” collapses to a constant. That is a deadbeat filter, not an error — and it is exactly what the 04/09/2024 paper below serves up.
Deep dive Why the filter and the predictor always share their pole
Route A converts by scaling, so it cannot move a pole. Route B builds a different recursion, and it is not obvious that the two agree. Substituting into the filter form:
so the filter’s pole is . In the scalar case that is immediately, since and everything commutes — the same pole as the predictor.
In the matrix case the two poles are for the predictor and for the filter, which are not the same matrix. They do, however, have the same eigenvalues: and always share their non-zero spectrum, and when is invertible the two are outright similar via . So the stability verdict from transfers to the filter unchanged, which is why the exam is content to ask for stability once and reuse it for both forms.
A system has a singular state matrix F and a non-zero cross-covariance between its two noises. You need the filtered state estimate. Which route works?
05 · What you get for free
An accuracy figure you can compute before any data
The Riccati recursion was introduced as machinery for producing the gain. Its solution turns out to be the answer to the question §01 said every software-sensing project must answer second.
is the covariance matrix of the one-step state prediction error — , symmetric, semi-definite positive. Its diagonal entries are the variances of the individual state estimates; its off-diagonal entries say how those errors are correlated.
Now combine that with the fact from §03 that the DRE is autonomous:
A datasheet for a sensor that does not exist yet
The DRE takes no measurements as input. So — the accuracy of the software sensor — can be computed from , , , , and before the plant is switched on, before any data is collected, before the algorithm is deployed.
That is what makes the design decision in §01 tractable. You can quote the software sensor’s noise figure and compare it against a hardware sensor’s datasheet at design time, and decide whether to buy the instrument — without building either.
The output prediction error variance
measures the error on the state. The exam sometimes wants the error on the output, which is not the same thing and is a three-line derivation away.
One question, 3 marks, and no new machinery
Set once, on 26/07/2024, for 3 marks: given , , the covariances and a stated , compute . It is the cheapest item in Q2 and it is pure bookkeeping — but only if you remember that the output error carries on top of the state error. The supplied is a decoy: it never enters the calculation.
Subtract the two output equations
and , so
Argue the two terms are uncorrelated
is built from measurements up to ; is fresh noise at time . For a white they cannot be correlated, so the variances simply add.
Read off the result
Which is the OUTPUT block from §03’s mnemonic — the same object that sits in the denominator of the Kalman gain. It was never an arbitrary grouping; it is the variance of the innovation.
Forgetting the sensor noise
Asked for , the tempting answer is . It is wrong by exactly : the output error contains the measurement noise on top of the propagated state error. And the Kalman gain is not needed anywhere in this calculation — it enters only through , which the question already gives you.
06 · Extensions 1, 3 and 4
Many steps ahead, a known input, a drifting plant
The basic case was deliberately stripped down. Putting the missing pieces back costs almost nothing — which is a statement about the structure of the derivation, not about luck.
The lecture numbers five extensions. Extension 2 — the filter — was promoted to §04 because it carries the exam weight, and extension 5 — the nonlinear case — is deferred to chapter 07, where the Extended Kalman Filter is the machinery behind gray-box identification. The remaining three are here.
Extension 1 — prediction steps ahead
Once is available, going further needs no new data, so it needs no new correction: just iterate the model.
The exponent is k − 1, not k
Reaching from takes applications of , not — the Kalman recursion already spent one step getting you to . Writing is a classic slip, and it is silent: the answer has the right shape and the wrong value. Check it against , where the formula must reduce to itself, i.e. .
Extension 3 — an exogenous input
The estimate equations pick up the input term in the obvious place, and then:
K(t) and P(t) are completely unchanged
Adding changes neither the gain nor the Riccati equation. The reason is worth internalising because it explains what the DRE is actually tracking: adds no uncertainty. It is the perfectly known, deterministic part of the system. The Riccati recursion propagates uncertainty, and a signal you already know carries none — so the prediction error, and its covariance, are identical with or without it.
Extension 4 — a time-varying plant
For with , the Kalman equations are exactly the same — replace , , by , , wherever they appear. The typical physical cause is ageing: plant dynamics that drift slowly over the equipment’s life.
This extension is also the door to the Extended Kalman Filter in chapter 07, whose whole strategy is to approximate a nonlinear time-invariant system by a linear time-varying one — precisely so that this extension applies.
The uncomfortable corollary
Even with a time-invariant plant, the Kalman filter is a time-varying system, because varies. That single observation is what chapter 05 is about: it makes stability hard to certify and forces a matrix inversion at every sampling instant, and the fix is to stop using and use its limit instead.
07 · When the assumption fails
Coloured noise and the model-extension trick
Every formula so far assumed and are white. Real disturbances frequently are not — a sensor’s own noise is often visibly correlated in time. The repair does not modify the filter; it modifies the model until the filter applies again.
Asked as theory, with a worked example demanded
Set on 16/07/2026 as a 3-mark theory question: how do you handle a non-white , described with an example of a simple first-order system. The second half of that instruction is the marking scheme — a full-credit answer names the trick, gives the recipe, and then actually carries out an extension on a concrete first-order plant. Prose alone will not score it.
Why whiteness was load-bearing
The Kalman derivation assumes the innovation is white. If is correlated in time, then part of “the part the model failed to anticipate” was in fact predictable from past innovations — the orthogonality argument behind the DRE fails, and the filter systematically mis-weights the model against the measurement. It still runs; it is simply no longer optimal, and worse, no longer reports the true error covariance, so its own accuracy claim becomes a lie.
The trick
A coloured noise is, by definition, white noise pushed through a filter. So model that filter explicitly, append its state to the plant’s, and the augmented system is driven by white noise once more. The standard Kalman filter then applies to the extended model unchanged — you are including the noise dynamics into the system dynamics.
Identify the shaping filter
Write the coloured noise as with white. The shaping filter is whatever colours it.
Put the shaping filter in state space
Convert to a state-space realisation — chapter 01’s job, and the reason this chapter needs that one as a prerequisite.
Stack the states
Form the extended state , with the plant on top and the shaping filter underneath.
Build the extended matrices
Assemble , and the new covariances , , for the augmented system.
Run the ordinary Kalman filter
Apply the standard equations to , then read the physical estimate off the first block of . The appended components estimate the noise itself — a by-product, occasionally a useful one, but not the goal.
The first-order example the question asks for
Take a first-order plant whose process noise is an AR(1) process:
with , and . The Kalman formulas cannot be applied as they stand, because is not white.
Expand the noise model back into the time domain: . Define , which is still white with the same variance, and the shaping filter becomes a first-order state equation, .
Now promote to a state. With and :
which in standard form is
The driving noise is white again, so the standard Kalman filter applies. Note where the coupling went: the in the top-right corner of is the coloured noise entering the plant, now a perfectly ordinary state interaction.
Two things this costs, and one shortcut that does not work
- is singular. Only the shaping-filter channel is driven by noise, so the top-left block is zero — semi-definite, not definite. Chapter 05’s second asymptotic theorem asks for reachability from the noise, and on an extended model that condition has to be checked rather than assumed.
- The state dimension grows by the order of the shaping filter, and the Riccati recursion is cubic in . The shaping filter also has to be identified from data before any of this can start.
- Inflating instead does not work. Enlarging accounts for the noise’s magnitude and says nothing about its time correlation. The filter stays sub-optimal and still misreports the error.
The same construction handles a coloured measurement noise, and — with unknown model parameters appended as extra states instead of a noise filter — it is exactly the mechanism behind gray-box identification in chapter 07. Learning the trick once pays three times.
08 · In practice
The Kalman filter in MATLAB
Two functions cover the whole chapter: kalman for the filter and idare for
the steady-state Riccati solution. Both are stated in a different parameterisation from the course’s,
and both have a trap in the translation.
No archived question has yet asked specifically for kalman or idare. But MATLAB questions appear
in 8 of the last 9 papers (see the exam analysis), the lecturer states in the exercise sessions
that the exam will contain simple MATLAB questions, and these are the only two functions in the
course that touch chapter 2.3 — so the cost of learning them is three lines and the downside of not
is a whole question.
The two parameterisations
MATLAB does not write the noises the way the course does. It routes a single process noise through matrices into both equations:
| course | MATLAB | |
|---|---|---|
| state | ||
| output | ||
| covariances | , , | , , |
Matching and gives the general translation:
Nobody wants to compute that. The trick is to choose the routing matrices so it collapses: set and , and the three equivalences become simply , , — the course’s covariances pass straight through.
That choice is implemented by declaring the noise as an extra bank of inputs:
% dt = sampling TIME; n states, p outputs
SYS = ss(F, [G eye(n)], H, [D zeros(p,n)], dt);
[KALMAN_SYS, K, P] = kalman(SYS, V1, V2, V12, 'current'); % 'current' -> FILTER
% 'delayed' -> PREDICTORSYS and KALMAN_SYS are both state-space objects; K and P are the asymptotic gain and Riccati
solution.
The flag that decides what you built
'current' returns the filter and 'delayed' returns the predictor
. Neither word is the one the course uses, both are plausible for either object, and
the two results differ by exactly the factor from §04. Getting this backwards produces a
correctly-sized, fully-functional, wrong answer — which is precisely what a short MATLAB exam
question is built to detect.
The algebraic Riccati equation — idare
For the steady-state solution of chapter 05, MATLAB provides the implicit discrete algebraic Riccati equation solver. It is stated for the dual control problem, so the plant matrices go in transposed:
[P, Ktilde, EIGS] = idare(F', H', V1, V2, V12, eye(n));
K = Ktilde'; % <-- transpose back
% EIGS already contains eig(F - K*H)Two transposes, and the second one is silent
Transposing and on the way in is easy to remember, because forgetting it usually errors out
on dimensions. Transposing the returned gain is not: Ktilde has the right size to be used directly
in a scalar or square problem, so omitting Ktilde' yields a wrong gain that runs cleanly. The
returned EIGS is the eigenvalues of , which hands you the stability check of §04 for free —
use it as a consistency test on the gain you think you computed.
Load-bearing ideas
- Software sensing is an economics decision first: fixed development cost against variable hardware cost, break-even at units, redundancy and installability bending the result. Then two technical gates — observability (feasible?) and (good enough?).
- The model: is process noise with ; is measurement noise with strictly, and that strictness is what makes the gain’s inverse exist. whenever the two equations share a noise source — which is how every exam builds them.
- The block mnemonic rebuilds both hard formulas: STATE , OUTPUT , MIX , then and .
- The DRE is autonomous — no data enters it. So and are computable offline, and the software sensor’s accuracy can be quoted before the sensor is built.
- , the state prediction error covariance; the output prediction error variance is — the OUTPUT block, which is no coincidence.
- Predictor to filter: when is invertible; otherwise the filter form with , valid only when . The two gains differ by exactly the leading : . Same DRE, same pole, different scaling.
- Extensions are nearly free: (not ) for multi-step; a known input changes nothing in or because it carries no uncertainty; a time-varying plant just gets time-varying matrices.
- Coloured noise is repaired in the model, not the filter — realise the shaping filter, stack its state, re-run the standard Kalman filter, read the answer off the first block. The extended comes out singular, which matters in chapter 05.
- MATLAB: , makes the covariances pass through unchanged;
'current'= filter,'delayed'= predictor;idaretakes , and returns a gain you must transpose back.
Exam radar. Two things in this chapter carry real marks. First, §04, predictor vs filter — 7 questions, 27 marks, every one of the last five sittings. Be able to go from plus a supplied to , to , to the closed-loop recursion, to the transfer function, and finally to apply to all of it — in five minutes, without notes. Second, §02, building the covariances — 3 questions, 18 marks, and always part (a), so an error there propagates through the rest of Q2. Expand every square in full and keep the cross terms.
Behind both sits §03: if you can write the three blocks from memory, you can rebuild the gain and the DRE under pressure, and neither question can strand you. §07 is a 3-mark theory item that wants a worked first-order extension, not a description — practise writing that from scratch.