VIEW THIS AS

Auto mode follows the Route Engine until you choose a viewpoint.

YOU ARE HERE

ROUTE CHECK

CONNECTED TO

WHAT NEXT

Use the canonical route for this room, or HELP if you are unsure.

The Gold Standard of Z-Transform | Preserving Initial Conditions in Unilateral Shift Calculations

A unilateral Z-transform starts its sum at a chosen index. When you shift a sequence, samples can cross that starting boundary. Those samples do not disappear: they become explicit terms in the transformed equation. Dropping them silently changes the initial-value problem.

The short answer is to write the first few shifted samples before using a shift formula. This guide derives the boundary terms, solves an original second-order recurrence and restarts it halfway through a record. It also distinguishes a zero-state transfer function from the complete response when earlier inputs or stored outputs are nonzero. All numerical examples are teaching models, not measurements of a device.

Read alongside The Gold Standard of Z-Transform, learning that transfers into life and the How X Works hub.

eduKateSG · Z-Transform

Find your next learning step

ROUTE 1 · CHAPTERS 1–3

Understand the boundary

Derive delay and advance formulas from the first samples.

ROUTE 2 · CHAPTERS 4–7

Solve the complete recurrence

Retain output history, input prehistory and new forcing.

ROUTE 3 · CHAPTERS 8–10

Transfer the calculation

Separate the system from its startup and restart a record.

ROUTE 4 · CHAPTERS 11–15

Check implementation

Audit duplicated history, software state, truncation and residuals.

ROUTE 5 · CHAPTERS 16–19

Verify and report

Use equivalent forcing, series coefficients and missing-state checks.

Full chapter contents · Questions readers ask · Related learning routes

Chapter contents

Understand the boundary · Chapters 1–3

1. Choose the starting index before transforming

2. Derive a one-sample delay from its first terms

3. Derive advances without losing the first sample

Solve the complete recurrence · Chapters 4–7

4. State a complete second-order problem

5. Carry each boundary term into the equation

6. Invert the transform and check three samples

7. Separate new input, earlier input and stored output history

Transfer the calculation · Chapters 8–10

8. Explain what the transfer function actually specifies

9. Use a general delay formula only after understanding it

10. Restart the same trajectory at a later index

Check implementation · Chapters 11–15

11. Avoid counting the same past twice

12. Translate histories into software state carefully

13. Distinguish finite observation from an infinite sequence

14. Change the coefficient and the timing convention

15. Locate an error through the recurrence residual

Verify and report · Chapters 16–19

16. Represent a boundary polynomial as an equivalent forcing

17. Recover startup coefficients from a large-z expansion

18. Know what a missing history leaves undetermined

19. Report the boundary as part of the answer

CHAPTER 1 OF 19 · Understand the boundary

1. Choose the starting index before transforming

Back to contents

We use Y(z) = Σ from n = 0 to infinity of y[n]z⁻ⁿ. The first terms are y[0] + y[1]z⁻¹ + y[2]z⁻². This unilateral transform describes the sequence from index zero onward. It does not contain y[−1] or y[−2], even if those values are needed by a recurrence that begins at zero.

That omission is deliberate, not an assertion that earlier samples were zero. They are separate boundary data. For example, an experiment may begin recording at zero while a filter already contains a stored state. The transform of the recorded input does not automatically describe everything that happened before the recording began.

Throughout this article, a recurrence stated for n ≥ 0 is required only at those indices. Specified negative-index samples initialise it. We do not demand that the same recurrence explain their entire earlier history unless the problem says so. This convention lets us solve a well-defined forward problem without inventing an unobserved past.

For compact algebra, write q = z⁻¹. Then Y = y[0] + y[1]q + y[2]q² + … . The powers of q are a useful bookkeeping aid: the constant term is the first sample, the coefficient of q is the next, and so on. We return to z when discussing convergence or poles. Neither notation changes which index is called zero.

Contents · Next chapter

CHAPTER 2 OF 19 · Understand the boundary

2. Derive a one-sample delay from its first terms

Back to contents

Transform y[n−1] over n ≥ 0 directly. Its series begins y[−1] + y[0]q + y[1]q² + … . Everything after the first term is qY. Therefore U{y[n−1]} = qY + y[−1], where U denotes our unilateral transform.

The boundary term is not multiplied by q because y[n−1] equals y[−1] at n = 0. That observation is the quickest way to catch a common indexing error. If an expression places y[−1] beside q, its constant coefficient is wrong before any complicated algebra begins.

For a two-sample delay, the series begins y[−2] + y[−1]q + y[0]q² + … . Hence U{y[n−2]} = q²Y + y[−1]q + y[−2]. Each earlier value has a different position. The more recent y[−1] appears one step later in this shifted sequence than y[−2].

These identities follow from writing the sum, so there is no need to memorise them as unrelated rules. Check them with a tiny list: if y[−2] = 8, y[−1] = 4 and y[0] = 2, the delayed-by-two sequence begins 8, 4, 2. Its transform must begin 8 + 4q + 2q². A proposed formula that fails this test cannot represent the stated delayed sequence.

Contents · Previous chapter · Next chapter

CHAPTER 3 OF 19 · Understand the boundary

3. Derive advances without losing the first sample

Back to contents

An advance behaves differently. The transform of y[n+1] starts y[1] + y[2]q + … . Subtract y[0] from Y, then divide by q. Thus U{y[n+1]} = zY − zy[0]. The removed initial sample appears with a minus sign because it was part of Y but is absent from the advanced sequence.

For an advance of two, remove y[0] + y[1]q and divide by q². The result is z²Y − z²y[0] − zy[1]. M. J. Roberts’s University of Tennessee notes set out the unilateral advance property; both formulas here follow by explicit reindexing.

Do not mix an advance formula that expects y[0] with a delay formula that expects y[−1]. Both can solve the same physical recurrence after its timing is translated consistently, but their boundary data refer to different moments. A change in notation is not permission to substitute the same number for both samples.

For example, if y[n+1] = 0.4y[n] and y[0] = 5, the transformed equation is zY − 5z = 0.4Y. It gives Y = 5z/(z−0.4) and y[n] = 5(0.4)ⁿ. Omitting the term 5z would instead produce a homogeneous algebraic equation with no record of the specified startup value. The transform did not fail; the initial condition was removed before the problem was solved.

Contents · Previous chapter · Next chapter

CHAPTER 4 OF 19 · Solve the complete recurrence

4. State a complete second-order problem

Back to contents

Consider the recurrence y[n] − 0.75y[n−1] + 0.125y[n−2] = x[n] + 0.25x[n−1], applied for n ≥ 0. Supply y[−1] = 4, y[−2] = 8 and x[−1] = 2. From zero onward, the new input is an impulse: x[0] = 1 and x[n] = 0 for every n ≥ 1.

The input prehistory matters because x[n−1] appears in the equation. At n = 0, that term reads x[−1], which the new-input transform X = 1 does not contain. Setting X to one is correct; setting x[−1] to zero without instruction would be a separate, incorrect change.

Before transforming, compute the first output directly. Rearrangement gives y[0] = 0.75 × 4 − 0.125 × 8 + 1 + 0.25 × 2 = 3.5. At n = 1, y[1] = 0.75 × 3.5 − 0.125 × 4 + 0 + 0.25 × 1 = 2.375. These two numbers will audit the later symbolic answer.

The model has fixed coefficients and exact arithmetic. We are not rounding the stored state, fitting uncertain coefficients or testing a hidden higher-order realization. Existing specialist articles address those distinct questions. Here we keep the recurrence fixed so that every difference between solutions can be traced to input history, output history or an indexing mistake.

Contents · Previous chapter · Next chapter

CHAPTER 5 OF 19 · Solve the complete recurrence

5. Carry each boundary term into the equation

Back to contents

Apply the delay identities separately to each term. The left side becomes Y − 0.75(qY + 4) + 0.125(q²Y + 4q + 8). The right side becomes X + 0.25(qX + 2). Do this line before collecting terms; it preserves the origin of every constant and power.

Collecting the Y terms gives (1 − 0.75q + 0.125q²)Y. The remaining left-side terms are −3 + 0.5q + 1 = −2 + 0.5q. Moving them to the right changes their signs. Hence (1 − 0.75q + 0.125q²)Y = (1 + 0.25q)X + 2.5 − 0.5q.

With X = 1, the complete numerator is 3.5 − 0.25q. The denominator factors as (1 − 0.5q)(1 − 0.25q). The full result is therefore Y = (3.5 − 0.25q)/[(1 − 0.5q)(1 − 0.25q)]. Taking q = 0 gives 3.5, matching the first direct sample.

Notice how the numerator differs from the zero-state input numerator 1 + 0.25q. The denominator records the fixed recurrence, while the numerator also records how this particular trajectory starts. A transfer function alone cannot supply that startup information. Saving the uncollected line makes a sign error easier to locate than inspecting the final rational expression after its boundary terms have been hidden.

Contents · Previous chapter · Next chapter

CHAPTER 6 OF 19 · Solve the complete recurrence

6. Invert the transform and check three samples

Back to contents

Write Y = A/(1 − 0.5q) + B/(1 − 0.25q). Matching the constant and q coefficients gives A + B = 3.5 and 0.25A + 0.5B = 0.25. Solving yields A = 6 and B = −2.5.

The forward sequence is y[n] = 6(0.5)ⁿ − 2.5(0.25)ⁿ for n ≥ 0. At n = 0 it is 3.5. At n = 1 it is 3 − 0.625 = 2.375. At n = 2 it is 1.5 − 0.15625 = 1.34375. Direct recurrence calculation gives 0.75 × 2.375 − 0.125 × 3.5 = 1.34375, agreeing with the third value.

The transform series converges for |z| > 0.5 because the surviving exponential with largest magnitude has base 0.5. The chosen unilateral sequence is forward in time; an alternative bilateral region of convergence is not being selected implicitly. Its rational fraction and its declared timing belong together.

There are now three checks on the solution: the collected transformed equation, the first direct samples and the reconstructed exponential sequence. None alone proves that a real device obeys the teaching model, but together they strongly check that the stated mathematical problem was solved consistently. If a software output disagrees, start by comparing its first sample and initial-state convention rather than assuming the partial-fraction result is wrong.

Contents · Previous chapter · Next chapter

CHAPTER 7 OF 19 · Solve the complete recurrence

7. Separate new input, earlier input and stored output history

Back to contents

The complete numerator can be decomposed by cause. New input contributes 1 + 0.25q. Stored output history contributes 2 − 0.5q. The earlier input x[−1] contributes 0.5. Dividing each by the same denominator and adding recovers the complete Y.

The new-input contribution is 3/(1 − 0.5q) − 2/(1 − 0.25q), giving 3(0.5)ⁿ − 2(0.25)ⁿ. The stored-output contribution simplifies to 2/(1 − 0.5q), giving 2(0.5)ⁿ. The input-prehistory contribution is 1/(1 − 0.5q) − 0.5/(1 − 0.25q), giving (0.5)ⁿ − 0.5(0.25)ⁿ.

At zero, these three contributions are 1, 2 and 0.5. Their sum is 3.5. At one they are 1, 1 and 0.375, summing to 2.375. This decomposition makes it possible to identify exactly which part disappears if an implementation assumes a different history.

Terminology needs care. A zero-input response means external input is zero for the relevant calculation; an earlier input retained in a delay register can still influence the first computed output. Rather than loosely calling every boundary contribution “zero-input,” we have labelled output history and input prehistory separately. In a full state-space realization, both can be encoded in the state at the boundary. The important point is that their effects are retained once, not omitted or counted twice.

IndexNew inputOutput historyInput prehistoryTotal
0120.53.5
1110.3752.375
20.6250.50.218751.34375
Original recurrence: independent contributions sum to the complete output.

Contents · Previous chapter · Next chapter

CHAPTER 8 OF 19 · Transfer the calculation

8. Explain what the transfer function actually specifies

Back to contents

For the recurrence, the zero-state transfer function is H(z) = (1 + 0.25q)/(1 − 0.75q + 0.125q²). It describes the output due to the input when the required histories are zero. With nonzero boundary data, the complete relation is Y = HX + B/D, where D is the denominator and B collects the boundary terms.

Dividing the complete output transform by the particular new input X can be misleading. In our impulse example X = 1, so Y/X equals the complete Y, including history. That ratio is not the zero-state transfer function of the recurrence. A different startup would change it even though the system coefficients stayed fixed.

Use an easy contrast. Repeat the same impulse with all three supplied histories set to zero. The first output becomes one, not 3.5. The recurrence is unchanged and H is unchanged. Only the trajectory changed. Any definition of the system that treats those two complete outputs as two different transfer functions has mixed system description with experiment-specific initialization.

This distinction also helps when comparing measured records. A startup transient can contain evidence about the stored state, not just the current input-output map. Before fitting a transform ratio, establish whether the recording begins from rest or whether initial-state effects need modelling. The algebra can carry those effects cleanly once the boundary has been stated; it cannot infer a missing startup history from a convenient zero-state assumption.

Contents · Previous chapter · Next chapter

CHAPTER 9 OF 19 · Transfer the calculation

9. Use a general delay formula only after understanding it

Back to contents

For a positive integer k, the unilateral transform of y[n−k] is qᵏY plus the k boundary terms Σ from r = 1 to k of y[−r]qᵏ⁻ʳ. Setting k to one gives y[−1]. Setting k to two gives y[−1]q + y[−2], agreeing with our direct derivations.

The formula is easiest to remember by checking the endpoints. At n = 0, the delayed sequence begins y[−k], so that value must appear as a constant. The most recent earlier value y[−1] appears at n = k−1, so it carries qᵏ⁻¹. Everything from y[0] onward begins at n = k and contributes qᵏY.

For a three-sample delay with earlier values y[−3] = 9, y[−2] = −2 and y[−1] = 5, the boundary polynomial is 9 − 2q + 5q². This is a useful changed-context check because the mixed signs expose mistakes that a list of all-positive equal values might conceal.

Longer recurrences can be transformed term by term with this formula. Keep a separate row for every delay, its coefficient and its boundary polynomial. Only then collect powers. The table is not unnecessary paperwork: it prevents a value such as y[−2] from being accidentally attached to the one-step delay or receiving the wrong sign when terms cross the equality. A compact final formula should be the result of transparent bookkeeping, not its replacement.

Contents · Previous chapter · Next chapter

CHAPTER 10 OF 19 · Transfer the calculation

10. Restart the same trajectory at a later index

Back to contents

Suppose the original computation has reached n = 2, and we want to process the remaining record as a new block. Define v[m] = y[m+2] and w[m] = x[m+2] for m ≥ 0. The new local index zero refers to the old index two. This relabelling changes which samples are boundary data.

The required histories are v[−1] = y[1] = 2.375, v[−2] = y[0] = 3.5 and w[−1] = x[1] = 0. The future input w is zero. Therefore the new boundary numerator is 0.75 × 2.375 − 0.125 × 3.5 − 0.125 × 2.375q, or 1.34375 − 0.296875q.

Dividing by the same denominator gives V = 1.5/(1 − 0.5q) − 0.15625/(1 − 0.25q). Hence v[m] = 1.5(0.5)ᵐ − 0.15625(0.25)ᵐ. This equals the original formula evaluated at n = m+2, as a correct restart should.

Resetting the histories to zero would instead produce zero output forever because the new input block is all zero. That would erase the remaining transient. A blocked implementation should carry the state across the boundary, even when the next input block looks empty. Relabelling time does not physically discharge the memory represented by the recurrence.

Contents · Previous chapter · Next chapter

CHAPTER 11 OF 19 · Check implementation

11. Avoid counting the same past twice

Back to contents

There are two coherent ways to process a known earlier input. One is to start the simulation earlier, from a declared state, and run through that input. The other is to begin later and supply the resulting boundary state or required histories. Combining both without adjustment can count the earlier excitation twice.

In the teaching problem, x[−1] = 2 is supplied explicitly because its delayed term appears at the first computed index. If a realization’s initial state has already been constructed to include that same delayed-input contribution, adding another separate impulse intended to represent x[−1] may duplicate it. The correct procedure depends on the realization’s state definition.

A useful audit is to compute y[0] directly from the declared recurrence and histories. It must be 3.5 in our example. If a program returns four, investigate whether the 0.5 contribution from 0.25x[−1] was included twice. If it returns three, investigate whether that contribution was omitted. These numbers identify a specific missing or duplicated term rather than merely flagging disagreement.

Do not repair the first output by adding an unexplained constant after filtering. That can hide the initial mismatch while leaving subsequent states wrong. Repair the representation of the past, then recompute the trajectory. The fact that a boundary effect may be concentrated at the first transformed equation does not mean its consequences vanish after the first output; the recurrence can propagate that effect indefinitely.

Contents · Previous chapter · Next chapter

CHAPTER 12 OF 19 · Check implementation

12. Translate histories into software state carefully

Back to contents

A filter implementation may store internal delay variables rather than the raw list y[−1], y[−2], x[−1]. Those internal quantities depend on the chosen realization. A state array accepted by a function is therefore not automatically a place to paste the earlier output values in chronological order.

SciPy’s lfiltic documentation explicitly distinguishes input/output histories from the initial state vector used by lfilter. It lists output history in the order y[−1], y[−2], and so on, and input history beginning with x[−1]. That provides a useful example of why documentation must be checked before translating mathematical boundary data into a software call.

For our recurrence, the coefficient lists in the usual denominator convention are a = [1, −0.75, 0.125] and b = [1, 0.25]. The histories are y = [4, 8] and x = [2], with newest earlier samples first. A check should compare the resulting first outputs against 3.5, 2.375 and 1.34375, not merely confirm that the function returned an array.

For block processing, an implementation may return a final internal state that can be supplied directly to the next block of the same realization. That is different from reconstructing state from selected past outputs. Do not mix the two representations without the documented conversion. Mathematical equivalence between realizations does not mean their state coordinates have identical numerical values.

Contents · Previous chapter · Next chapter

CHAPTER 13 OF 19 · Check implementation

13. Distinguish finite observation from an infinite sequence

Back to contents

The unilateral transform in this lesson sums an infinite future sequence. A finite recorded block is not automatically the entire sequence. If a recurrence continues after the last stored sample, its later output can remain nonzero even after the external input has stopped, as our original decaying response demonstrates.

Transforming a finite array with all later values declared zero describes a truncated sequence. That may be exactly the intended data object, but it differs from the complete recurrence solution. Its boundary at the end can introduce additional terms when a shifted finite sum is used. Those terminal terms should not be mistaken for the initial terms derived for an infinite forward sum.

For example, keep only y[0] and y[1] from our solution. The finite polynomial is 3.5 + 2.375q. It has no infinite exponential tail. Multiplying it by D does not produce only 3.5 − 0.25q; additional high powers remain because the recurrence’s later samples were omitted. That algebraic discrepancy is expected for the truncated record.

When checking a transform-based solution against data, distinguish three objects: the full model trajectory, the observed finite portion and any padded sequence used for computation. A finite record can verify its available samples and constrain a model. It does not establish the unobserved future merely because a transform routine accepts the array. Keeping these objects separate prevents end-of-record effects from being misdiagnosed as a failure of the startup calculation.

Contents · Previous chapter · Next chapter

CHAPTER 14 OF 19 · Check implementation

14. Change the coefficient and the timing convention

Back to contents

Try a new recurrence u[n] − 0.3u[n−1] = r[n], for n ≥ 0, with u[−1] = −2 and r[n] = 1 for every n ≥ 0. The input is now a step rather than an impulse. Its unilateral transform is R = 1/(1−q), valid for |z| > 1.

Transforming gives (1−0.3q)U = R − 0.6. The constant equilibrium is 1/(1−0.3) = 10/7. The first sample is u[0] = 0.3(−2)+1 = 0.4. Therefore u[n] = 10/7 − (36/35)(0.3)ⁿ. Substitution at zero gives 0.4, and at one gives 1.12, agreeing with the recurrence.

Now write the update as u[n+1] = 0.3u[n] + 1 for n ≥ 0, with u[0] = 0.4. The advance transform yields zU − 0.4z = 0.3U + 1/(1−q). It produces the same forward sequence. The supplied initial value changed from u[−1] to u[0] because the equation’s starting index changed.

This is a stronger transfer check than repeating the original coefficients. It changes the forcing, uses a negative earlier state and compares delay and advance forms. A correct solution explains why the two forms agree after translation. Reusing −2 as the initial value in the advanced version would define a different trajectory, not an alternative notation for the same one.

Contents · Previous chapter · Next chapter

CHAPTER 15 OF 19 · Check implementation

15. Locate an error through the recurrence residual

Back to contents

Given a proposed output sequence, define its residual at n as y[n] − 0.75y[n−1] + 0.125y[n−2] − x[n] − 0.25x[n−1]. For an exact solution of our stated problem, every residual for n ≥ 0 is zero when the declared histories are used.

Suppose someone supplies the zero-state impulse response instead of the complete answer. Its first two values are one and one. At n = 0, using the actual histories, the residual is 1 − 3 + 1 − 1 − 0.5 = −2.5. At n = 1 it is 1 − 0.75 + 0.5 − 0 − 0.25 = 0.5. The missing boundary polynomial is visible in those early mismatches.

Later residuals can vanish even though the trajectory remains wrong. Once both sequences obey the same homogeneous recurrence after the input ends, their difference can persist as a decaying mode. Checking only a late interior segment therefore misses an initialization error that changed the whole solution.

A good audit combines early residuals with the supplied boundary values and, where available, a closed-form solution. If floating-point arithmetic is used, choose a numerical tolerance appropriate to the magnitudes and operations, and distinguish a small rounding residual from a different initial-value problem. Tolerance should not be enlarged until an omitted boundary contribution appears acceptable; that would conceal the modelling error the residual was meant to reveal.

Contents · Previous chapter · Next chapter

CHAPTER 16 OF 19 · Verify and report

16. Represent a boundary polynomial as an equivalent forcing

Back to contents

The history contribution in our transformed equation is B = 2.5 − 0.5q. Since a constant transform represents an impulse at zero and q represents an impulse at one, B corresponds to an equivalent forcing of 2.5δ[n] − 0.5δ[n−1] applied to the denominator recurrence with zero histories.

This construction reproduces the future effect of the declared histories. It does not claim that those two impulses were physically applied to the original system. They are an alternative mathematical representation after the original boundary has been absorbed into a forcing term. Their values come from the collected equation, including the earlier input contribution.

To verify, solve D times the history-only output using zero histories and this two-sample forcing. At zero the output is 2.5. At one it is 0.75 × 2.5 − 0.5 = 1.375. These are exactly the total history contributions found earlier. Add the new-input response to recover 3.5 and 2.375.

The example also exposes double counting. If the equivalent forcing is added while the original nonzero histories remain active, both representations inject the same history effect. Choose one representation and document the conversion. Equivalent forcing is especially useful for algebraic checks because its short support makes the boundary visible, but it should not be confused with a reconstruction of the actual earlier external input.

Contents · Previous chapter · Next chapter

CHAPTER 17 OF 19 · Verify and report

17. Recover startup coefficients from a large-z expansion

Back to contents

The unilateral series begins Y = y[0] + y[1]q + y[2]q² + …, with q = z⁻¹ approaching zero as z grows. This makes its first coefficients available without a complete partial-fraction expansion. Multiply that series by D and match powers against the known numerator.

For the original result, the constant coefficient gives y[0] = 3.5. The coefficient of q gives y[1] − 0.75y[0] = −0.25, hence y[1] = 2.375. The coefficient of q² gives y[2] − 0.75y[1] + 0.125y[0] = 0, hence y[2] = 1.34375. This independently reconstructs the first samples directly from the rational transform.

Taking only the limit as z tends to infinity recovers y[0]. It does not recover all initial-state information, and it should not be confused with a theorem about the long-run value. Here it is simply the constant coefficient of a convergent expansion near q = 0. Higher coefficients carry later samples.

This check is valuable when a symbolic tool presents a rational expression in unfamiliar form. Normalise the denominator so its constant term in q is one, then compare the first few coefficients. An algebraically equivalent form gives the same values. An expression with a missing boundary term usually fails immediately, allowing the mistake to be located before any long simulation or interpretation of poles.

Contents · Previous chapter · Next chapter

CHAPTER 18 OF 19 · Verify and report

18. Know what a missing history leaves undetermined

Back to contents

Suppose the same second-order recurrence and future impulse are given, but only y[−1] = 4 is known. Let the missing y[−2] be c while x[−1] remains two. Then y[0] = 3 + 1 + 0.5 − 0.125c = 4.5 − 0.125c. Different values of c give different valid future trajectories.

The transform should preserve that free parameter rather than silently assigning c = 0. Its complete numerator becomes 4.5 − 0.125c − 0.25q. A measured first output could determine c within this exact model: if y[0] = 3.5, then c = 8. But that inference depends on the correctness of the recurrence and the other supplied quantities.

If the first output has an error of magnitude ε while everything else is exact, the inferred c has error magnitude 8ε. This simple sensitivity calculation follows from c = 8(4.5 − y[0]). It is not a full statistical uncertainty model, but it shows why recovering a missing state from output can amplify measurement error.

There is no contradiction between having a well-defined transform method and an underdetermined problem. The method expresses the family of solutions that the available information allows. An extra boundary measurement, a justified prior condition or an independent physical constraint is needed to choose one. Naming that missing information is more useful than producing a falsely precise trajectory by defaulting every absent history to zero.

Contents · Previous chapter · Next chapter

CHAPTER 19 OF 19 · Verify and report

19. Report the boundary as part of the answer

Back to contents

A complete result names the recurrence, its range of application, the input from the starting index onward and every earlier sample needed by its delays. It then gives the transformed equation before cancellation, the resulting sequence and at least a few direct sample checks. Those details make the answer reusable.

For the original example, the sentence “the poles are 0.5 and 0.25” is not a complete solution. Many trajectories share those decay factors. The coefficients six and minus 2.5 depend on the stated boundary data and new input. Losing them loses the particular experiment even while retaining the general recurrence.

Likewise, a restart report should state the new time origin and the transferred state or histories. The same integer label zero can refer to different physical moments in different blocks. A clear index mapping prevents a correct internal calculation from being attached to the wrong timestamp when results are joined.

For practice, change only x[−1] while preserving the other histories and future input. Predict the extra response from the boundary numerator before recomputing everything. Then move the starting index and reconstruct the new histories from the original solution. These exercises test whether the method survives a change in available information. The essential habit is simple: every sample crossing the transform’s starting boundary needs an explicit place in the equation.

Contents · Previous chapter · Continue to questions

Frequently asked questions

Does a unilateral transform assume the past is zero?

No. Its sum starts at the chosen origin, so earlier samples are absent from that sum. A recurrence may still require them as boundary data. Zero prehistory is one possible condition, but it must be stated or justified. The delay formulas show exactly where nonzero earlier values enter.

Why is the one-step delay term y[−1] not multiplied by z⁻¹?

At n = 0, the shifted sequence y[n−1] equals y[−1]. The first sample of a unilateral transform is its constant term. The later samples y[0], y[1] and so on begin one position later and form z⁻¹Y. Writing the first three terms resolves the indexing without memorisation.

Can I use a transfer function when the state is nonzero?

Yes, as the zero-state part of a complete description. Add the response produced by the specified boundary state. The system’s zero-state transfer function does not change merely because a different initial condition is chosen, while the complete output generally does.

How many earlier samples must I provide?

For the stated direct recurrence, supply the earlier output and input samples needed by its largest delays, unless equivalent internal-state data are supplied instead. A second-order output recurrence usually needs two output histories. Input delays can require their own histories. The particular realization determines how those values are encoded in software.

Is a correct first output enough to verify initialization?

No. Different internal histories can produce the same first output and different later values. Check enough subsequent samples to expose the delayed terms, then verify the recurrence and boundary conditions. In the worked example, two direct startup samples and a third independent recurrence check support the full transformed solution.

Contents · Continue to related reading

Sources and calculation conventions

M. J. Roberts, University of Tennessee — The z Transform.

SciPy — Converting input and output histories into filter state.

The sources establish the definitions, theorem conditions or software conventions identified in the text. The numerical examples, comparisons, derivations and changed-context exercises in this guide are original teaching calculations. Their assumptions are stated beside the results.

Return to contents · Return to Z-Transform