---
title: "ZTransform"
language: "en"
type: "Symbol"
summary: "ZTransform[expr, n, z] gives the Z transform of expr. ZTransform[expr, {n1, ..., nm}, {z1, ..., z m}] gives the multidimensional Z transform of expr."
keywords: 
- chirp Z transform
- control theory
- Dirichlet series
- discrete Laplace transform
- formal power series
- generating functions
- Laplace transform
- power series
- signal processing
- ztrans
canonical_url: "https://reference.wolfram.com/language/ref/ZTransform.html"
source: "Wolfram Language Documentation"
related_guides: 
  - 
    title: "Summation Transforms"
    link: "https://reference.wolfram.com/language/guide/SummationTransforms.en.md"
  - 
    title: "Signal Transforms"
    link: "https://reference.wolfram.com/language/guide/SignalTransforms.en.md"
  - 
    title: "Discrete Calculus"
    link: "https://reference.wolfram.com/language/guide/DiscreteCalculus.en.md"
  - 
    title: "Fourier Analysis"
    link: "https://reference.wolfram.com/language/guide/FourierAnalysis.en.md"
  - 
    title: "Discrete Mathematics"
    link: "https://reference.wolfram.com/language/guide/DiscreteMathematics.en.md"
  - 
    title: "Integral Transforms"
    link: "https://reference.wolfram.com/language/guide/IntegralTransforms.en.md"
related_functions: 
  - 
    title: "InverseZTransform"
    link: "https://reference.wolfram.com/language/ref/InverseZTransform.en.md"
  - 
    title: "BilateralZTransform"
    link: "https://reference.wolfram.com/language/ref/BilateralZTransform.en.md"
  - 
    title: "GeneratingFunction"
    link: "https://reference.wolfram.com/language/ref/GeneratingFunction.en.md"
  - 
    title: "LaplaceTransform"
    link: "https://reference.wolfram.com/language/ref/LaplaceTransform.en.md"
  - 
    title: "Sum"
    link: "https://reference.wolfram.com/language/ref/Sum.en.md"
  - 
    title: "Series"
    link: "https://reference.wolfram.com/language/ref/Series.en.md"
  - 
    title: "RSolve"
    link: "https://reference.wolfram.com/language/ref/RSolve.en.md"
  - 
    title: "FourierSequenceTransform"
    link: "https://reference.wolfram.com/language/ref/FourierSequenceTransform.en.md"
  - 
    title: "DiscreteConvolve"
    link: "https://reference.wolfram.com/language/ref/DiscreteConvolve.en.md"
  - 
    title: "TransferFunctionModel"
    link: "https://reference.wolfram.com/language/ref/TransferFunctionModel.en.md"
related_tutorials: 
  - 
    title: "Integral Transforms and Related Operations"
    link: "https://reference.wolfram.com/language/tutorial/Calculus.en.md#26017"
---
# ZTransform

ZTransform[expr, n, z] gives the Z transform of expr. 

ZTransform[expr, {n1, …, nm}, {z1, …, z*m*}] gives the multidimensional Z transform of expr.

## Details and Options

* The Z transform for a discrete function $f(n)$ is given by $\sum _{n=0}^{\infty } f(n)z^{-n}$.

* The multidimensional Z transform is given by $\sum _{n_1=0}^{\infty } \cdots \sum _{n_m=0}^{\infty }  f\left(n_1,\ldots ,n_m\right) z_1{}^{-n_1} \cdots  z_m{}^{-n_m} \ldots$.

* The following options can be given:

|                     |               |                                                                   |
| ------------------- | ------------- | ----------------------------------------------------------------- |
| Assumptions         | \$Assumptions | assumptions to make about parameters                              |
| GenerateConditions  | False         | whether to generate answers that involve conditions on parameters |
| Method              | Automatic     | method to use                                                     |
| VerifyConvergence   | True          | whether to verify convergence                                     |

* In ``TraditionalForm``, ``ZTransform`` is output using \[ScriptCapitalZ].

---

## Examples (41)

### Basic Examples (3)

Transform a sequence:

```wl
In[1]:= ZTransform[n ^ 2 2 ^ (-n), n, z]

Out[1]= (2 z (1 + 2 z)/(-1 + 2 z)^3)

In[2]:= InverseZTransform[%, z, n]

Out[2]= 2^-n n^2
```

---

Transform a multivariate sequence:

```wl
In[1]:= ZTransform[a ^ n  m ^ 3, {n, m}, {u, v}]

Out[1]= (u v (1 + 4 v + v^2)/(-a + u) (-1 + v)^4)

In[2]:= InverseZTransform[%, {u, v}, {n, m}]

Out[2]= a^n m^3
```

---

Transform a symbolic sequence:

```wl
In[1]:= ZTransform[f[n + 1], n, z]

Out[1]= -z f[0] + z ZTransform[f[n], n, z]
```

### Scope (25)

#### Basic Uses (7)

Transform a univariate sequence:

```wl
In[1]:= ZTransform[a ^ n, n, z]

Out[1]= (z/-a + z)
```

Transform a multivariate sequence:

```wl
In[2]:= ZTransform[a ^ (n + m), {n, m}, {z, w}]

Out[2]= (w z/(a - w) (a - z))
```

---

Compute a typical transform:

```wl
In[1]:= F = ZTransform[n (n + 1)(-1 / 2) ^ n, n, z]

Out[1]= -(8 z^2/(1 + 2 z)^3)
```

Plot the magnitude using ``Plot3D``, ``ContourPlot``, or ``DensityPlot``:

```wl
In[2]:= Block[{z = u + I v}, Table[plot[Abs[F], {u, -2, 2}, {v, -2, 2}], {plot, {Plot3D, ContourPlot, DensityPlot}}]]

Out[2]= [image]
```

Plot the complex phase:

```wl
In[3]:= Block[{z = u + I v}, Table[plot[Arg[F], {u, -2, 2}, {v, -2, 2}], {plot, {Plot3D, ContourPlot, DensityPlot}}]]

Out[3]= [image]
```

---

Generate conditions for the region of convergence:

```wl
In[1]:= ZTransform[a ^ n, n, z, GenerateConditions -> True]

Out[1]= ConditionalExpression[-(z/(a - z)), Abs[z] > Abs[a]]
```

Plot the region for $a=\frac{1}{2}$:

```wl
In[2]:= With[{z = u + I v}, RegionPlot[Abs[z] > 1 / 2, {u, -1, 1}, {v, -1, 1}]]

Out[2]= [image]
```

---

Evaluate the transform at a point:

```wl
In[1]:= F = ZTransform[Sin[n 2Pi / 3](2 / 3) ^ n, n, Exp[I ω]]

Out[1]= (3 Sqrt[3] E^I ω/4 + 6 E^I ω + 9 E^2 I ω)
```

Plot the spectrum:

```wl
In[2]:= LogPlot[Abs[F] ^ 2, {ω, 0, 2π}, Ticks -> {{0, π, 2π}, Automatic}]

Out[2]= [image]
```

The phase:

```wl
In[3]:= Plot[Arg[F], {ω, 0, 2π}, Ticks -> {{0, π, 2π}, Automatic}]

Out[3]= [image]
```

Plot both the spectrum and the plot phase using color:

```wl
In[4]:= LogPlot[Abs[F] ^ 2, {ω, 0, 2π}, Ticks -> {{0, π, 2π}, Automatic}, ColorFunction -> Function[ω, Evaluate@Hue[Arg[F] / (2Pi) + 1 / 2]], ColorFunctionScaling -> False, Filling -> Axis]

Out[4]= [image]
```

Plot the spectrum in the complex plane using ``ParametricPlot3D`` :

```wl
In[5]:= ParametricPlot3D[{Cos[ω], Sin[ω], Log[10, Abs[F] ^ 2]}, {ω, 0, 2π}, BoxRatios -> {1, 1, 1}]

Out[5]= [image]
```

---

``ZTransform`` will use several properties including linearity:

```wl
In[1]:= ZTransform[a f[n] + b g[n], n, z]

Out[1]= a ZTransform[f[n], n, z] + b ZTransform[g[n], n, z]
```

Shifts:

```wl
In[2]:= {ZTransform[f[n + 1], n, z], ZTransform[f[n - 1], n, z]}

Out[2]= {-z f[0] + z ZTransform[f[n], n, z], f[-1] + (ZTransform[f[n], n, z]/z)}
```

Multiplication by exponentials:

```wl
In[3]:= {ZTransform[a ^ n f[n], n, z], ZTransform[b ^ (-n)f[n], n, z]}

Out[3]= {ZTransform[f[n], n, (z/a)], ZTransform[f[n], n, b z]}

In[4]:= ZTransform[Exp[I ω n]f[n], n, z]

Out[4]= ZTransform[f[n], n, E^-I ω z]
```

Multiplication by polynomials:

```wl
In[5]:= {ZTransform[ n f[n], n, z], ZTransform[n(n + 1) f[n], n, z]}

Out[5]= {-z ZTransform^(0, 0, 1)[f[n], n, z], z^2 ZTransform^(0, 0, 2)[f[n], n, z]}
```

Conjugate:

```wl
In[6]:= ZTransform[Conjugate[f[n]], n, z]

Out[6]= Conjugate[ZTransform[f[n], n, Conjugate[z]]]
```

---

``ZTransform`` automatically threads over lists:

```wl
In[1]:= ZTransform[{a ^ n, b ^ n}, n, z]

Out[1]= {(z/-a + z), (z/-b + z)}

In[2]:= ZTransform[{{a ^ n, b ^ n}, {n, n ^ 2}}, n, z]

Out[2]= {{(z/-a + z), (z/-b + z)}, {(z/(-1 + z)^2), (z (1 + z)/(-1 + z)^3)}}
```

Equations:

```wl
In[3]:= ZTransform[a ^ n == f[n], n, z]

Out[3]= (z/-a + z) == ZTransform[f[n], n, z]
```

Rules:

```wl
In[4]:= ZTransform[f[n] -> a ^ n, n, z]

Out[4]= ZTransform[f[n], n, z] -> (z/-a + z)
```

---

``TraditionalForm`` typesetting:

```wl
In[1]:= ZTransform[f[n], n, z]//TraditionalForm

Out[1]//TraditionalForm= $$\mathcal{Z}_n[f(n)](z)$$
```

#### Special Sequences (13)

Discrete impulses:

```wl
In[1]:= {ZTransform[DiscreteDelta[n], n, z], ZTransform[DiscreteDelta[n - 5], n, z]}

Out[1]= {1, (1/z^5)}

In[2]:= Table[DiscretePlot[f, {n, -10, 10}, PlotStyle -> PointSize[Medium]], {f, {DiscreteDelta[n], DiscreteDelta[n - 5]}}]

Out[2]= {[image], [image]}
```

Discrete unit steps:

```wl
In[3]:= {ZTransform[UnitStep[n], n, z], ZTransform[UnitStep[n - 3], n, z]}

Out[3]= {(z/-1 + z), (1/(-1 + z) z^2)}

In[4]:= Table[DiscretePlot[f, {n, -10, 10}], {f, {UnitStep[n], UnitStep[n - 3]}}]

Out[4]= {[image], [image]}
```

Discrete ramps:

```wl
In[5]:= {ZTransform[n UnitStep[n], n, z], ZTransform[(n - 3)UnitStep[n - 3], n, z]}

Out[5]= {(z/(-1 + z)^2), (1/(-1 + z)^2 z^2)}

In[6]:= Table[DiscretePlot[f, {n, -10, 10}], {f, {n UnitStep[n], (n - 3)UnitStep[n - 3]}}]

Out[6]= {[image], [image]}
```

---

Polynomials result in rational transforms:

```wl
In[1]:= {ZTransform[n, n, z], ZTransform[n ^ 2, n, z]}

Out[1]= {(z/(-1 + z)^2), (z (1 + z)/(-1 + z)^3)}
```

Factorial polynomials:

```wl
In[2]:= ZTransform[Pochhammer[n, Range[0, 3]], n, z]

Out[2]= {(z/-1 + z), (z/(-1 + z)^2), (2 z^2/(-1 + z)^3), (6 z^3/(-1 + z)^4)}

In[3]:= ZTransform[FactorialPower[n, Range[0, 3]], n, z]

Out[3]= {(z/-1 + z), (z/(-1 + z)^2), (2 z/(-1 + z)^3), (6 z/(-1 + z)^4)}
```

---

Exponential functions:

```wl
In[1]:= ZTransform[a ^ n, n, z]

Out[1]= (z/-a + z)
```

Exponential polynomials:

```wl
In[2]:= {ZTransform[n a ^ n, n, z], ZTransform[n ^ 2 a ^ n, n, z]}

Out[2]= {(a z/(a - z)^2), (a z (a + z)/(-a + z)^3)}

In[3]:= Table[DiscretePlot[f, {n, 0, 40}], {f, {n (10 / 12) ^ n, n ^ 2 (10 / 12) ^ n}}]

Out[3]= {[image], [image]}
```

Factorial exponential polynomials:

```wl
In[4]:= ZTransform[Pochhammer[n, Range[0, 3]] a ^ n, n, z]

Out[4]= {(z/-a + z), (a z/(a - z)^2), -(2 a z^2/(a - z)^3), (6 a z^3/(a - z)^4)}

In[5]:= ZTransform[FactorialPower[n, Range[0, 3]] a ^ n, n, z]

Out[5]= {(z/-a + z), (a z/(a - z)^2), -(2 a^2 z/(a - z)^3), (6 a^3 z/(a - z)^4)}
```

---

Trigonometric functions:

```wl
In[1]:= {ZTransform[Sin[ω n + ϕ], n, z], ZTransform[Cos[ω n + ϕ], n, z]}

Out[1]= {(z (z Sin[ϕ] - Sin[ϕ - ω])/1 + z^2 - 2 z Cos[ω]), (z (z Cos[ϕ] - Cos[ϕ - ω])/1 + z^2 - 2 z Cos[ω])}

In[2]:= Table[DiscretePlot[f, {n, -20, 20}], {f, {Sin[2π / 10 n], Cos[2π / 10 n]}}]

Out[2]= {[image], [image]}
```

Trigonometric, exponential and polynomial:

```wl
In[3]:= {ZTransform[(5 / 6) ^ n Sin[ω n], n, z], ZTransform[n (5 / 6) ^ n Sin[ω n], n, z]}

Out[3]= {(30 z Sin[ω]/25 + 36 z^2 - 60 z Cos[ω]), (30 z (-25 + 36 z^2) Sin[ω]/(25 + 36 z^2 - 60 z Cos[ω])^2)}

In[4]:= Table[DiscretePlot[f, {n, 0, 20}], {f, {(5 / 6) ^ n Sin[2π / 10 n], n (5 / 6) ^ n Sin[2π / 10 n]}}]

Out[4]= {[image], [image]}
```

---

Combinations of the previous input will also generate rational transforms:

```wl
In[1]:= ZTransform[n ^ 2 a ^ n + b ^ n Sin[ω n] UnitStep[n + 20], n, z]

Out[1]= (a z (a + z)/(-a + z)^3) + (I b (-1 + E^2 I ω) z/2 (b E^I ω - z) (-b + E^I ω z))

In[2]:= DiscretePlot[n ^ 2 (5 / 6) ^ n  + (11 / 12) ^ n 20Sin[2Pi / 10 n]UnitStep[n - 20], {n, 0, 50}]

Out[2]= [image]
```

---

Different ways of expressing piecewise defined signals:

```wl
In[1]:= ZTransform[n (UnitStep[n] - UnitStep[n - 6]) + a ^ n UnitStep[n - 6], n, z]

Out[1]= (5 - (a^6/a - z) + 4 z + 3 z^2 + 2 z^3 + z^4/z^5)

In[2]:= ZTransform[Piecewise[{{n, n ≤ 5}, {a ^ n, True}}], n, z]

Out[2]= -(a^6 - a (5 + 4 z + 3 z^2 + 2 z^3 + z^4) + z (5 + 4 z + 3 z^2 + 2 z^3 + z^4)/(a - z) z^5)

In[3]:= Simplify[%% - %]

Out[3]= 0
```

---

Rational functions:

```wl
In[1]:= ZTransform[1 / (n + 1), n, z]

Out[1]= -z Log[1 - (1/z)]

In[2]:= ZTransform[(n^2 + n + 1) / (n + 1) ^ 2, n, z]//Simplify

Out[2]= z ((1/-1 + z) + Log[(-1 + z/z)] + PolyLog[2, (1/z)])

In[3]:= ZTransform[FactorialPower[n, -2], n, z]//Simplify

Out[3]= z + (-1 + z) z Log[(-1 + z/z)]
```

Rational exponential functions:

```wl
In[4]:= ZTransform[a ^ n / (n + 1) ^ 2, n, z]

Out[4]= (z PolyLog[2, (a/z)]/a)

In[5]:= ZTransform[a ^ n FactorialPower[n, -2], n, z]//Simplify

Out[5]= (z (a + (-a + z) Log[1 - (a/z)])/a^2)
```

---

Hypergeometric term sequences:

```wl
In[1]:= ZTransform[1 / n!, n, z]

Out[1]= E^(1/z)
```

The ``DiscreteRatio`` is rational for all hypergeometric term sequences:

```wl
In[2]:= DiscreteRatio[1 / n!, n]

Out[2]= (1/1 + n)
```

Many functions give hypergeometric terms:

```wl
In[3]:= hl = {a ^ n, n!, Gamma[n], Pochhammer[a, n], FactorialPower[a, n], Binomial[n, a], Binomial[b, n], CatalanNumber[n]};

In[4]:= DiscreteRatio[hl, n]

Out[4]= {a, 1 + n, n, a + n, a - n, (1 + n/1 - a + n), (b - n/1 + n), (2 (1 + 2 n)/2 + n)}
```

Any products are hypergeometric terms:

```wl
In[5]:= DiscreteRatio[Times@@RandomChoice[hl, 3], n]

Out[5]= -(a^2 (1 + n)/-1 + a - n)
```

Transforms of hypergeometric terms:

```wl
In[6]:= ZTransform[(2^-2 + n/Gamma[(1/2) + n]), n, z]

Out[6]= (1 + E^2 / z Sqrt[2 π] Sqrt[(1/z)] Erf[Sqrt[2] Sqrt[(1/z)]]/4 Sqrt[π])

In[7]:= ZTransform[n / Binomial[2n, n], n, z]

Out[7]= (2 Sqrt[z] (3 Sqrt[z] Sqrt[(-1 + 4 z/z)] + 2 ArcSin[(1/2 Sqrt[z])] + 4 z ArcSin[(1/2 Sqrt[z])])/(-1 + 4 z)^2 Sqrt[(-1 + 4 z/z)])

In[8]:= ZTransform[CatalanNumber[n] / Binomial[2n, n], n, z]

Out[8]= -z Log[(-1 + z/z)]

In[9]:= ZTransform[(FactorialPower[a1, n]/FactorialPower[b1, n]FactorialPower[b2, n]), n, z]

Out[9]= HypergeometricPFQ[{1, -a1}, {-b1, -b2}, -(1/z)]
```

---

Holonomic sequences:

```wl
In[1]:= ZTransform[LegendreP[n, a], n, z]

Out[1]= (z/Sqrt[1 - 2 a z + z^2])
```

A holonomic sequence is defined by a linear difference equation:

```wl
In[2]:= DifferenceRootReduce[LegendreP[n, a], n]

Out[2]=
DifferenceRoot[Function[{\[FormalY], \[FormalN]}, 
  {(1 + \[FormalN])*\[FormalY][\[FormalN]] + (-3*a - (2*\[FormalN])*a)*\[FormalY][1 + \[FormalN]] + (2 + \[FormalN])*\[FormalY][2 + \[FormalN]] == 0, 
   \[FormalY][-1] == 1, \[FormalY][0] == 1}]][n]
```

Many special function are holonomic sequences in their index:

```wl
In[3]:= ZTransform[ChebyshevT[n, x], n, z]

Out[3]= (z (-x + z)/1 - 2 x z + z^2)

In[4]:= ZTransform[ChebyshevU[2n, x] ^ 2, n, z]

Out[4]= (z (1 + (-2 + 8 x^2) z + z^2)/(-1 + z) (1 - 2 (1 - 8 x^2 + 8 x^4) z + z^2))
```

---

Special sequences:

```wl
In[1]:= ZTransform[BernoulliB[n] / n!, n, z]

Out[1]= (1/(-1 + E^(1/z)) z)

In[2]:= ZTransform[EulerE[n] / n!, n, z]

Out[2]= Sech[(1/z)]
```

---

Periodic sequences:

```wl
In[1]:= ZTransform[Mod[n, 3], n, z]

Out[1]= (z (2 + z)/-1 + z^3)

In[2]:= ZTransform[Exp[n 2π I / 7], n, z]

Out[2]= -(z/(-1)^2 / 7 - z)
```

---

Multivariate transforms:

```wl
In[1]:= ZTransform[a^n + m, {n, m}, {u, v}]

Out[1]= (u v/(a - u) (a - v))

In[2]:= ZTransform[n ^ 2 m ^ 3, {n, m}, {u, v}]

Out[2]= (u (1 + u) v (1 + 4 v + v^2)/(-1 + u)^3 (-1 + v)^4)

In[3]:= ZTransform[a^n + mn ^ 2 m ^ 3, {n, m}, {u, v}]

Out[3]= (-a^5 u v - a^4 u^2 v - 4 a^4 u v^2 - 4 a^3 u^2 v^2 - a^3 u v^3 - a^2 u^2 v^3/(a - u)^3 (a - v)^4)

In[4]:= ZTransform[Sin[n + m]a ^ n, {n, m}, {u, v}]

Out[4]= -(u^2 v Sin[1] + a u v^2 Sin[1] - 2 a u v Cos[1] Sin[1]/(a^2 + u^2 - 2 a u Cos[1]) (-1 - v^2 + 2 v Cos[1]))

In[5]:= ZTransform[m / (n + 1), {n, m}, {u, v}]

Out[5]= -(u v Log[(-1 + u/u)]/(-1 + v)^2)
```

---

Multivariate periodic sequences:

```wl
In[1]:= ZTransform[Mod[n + m, 3], {n, m}, {u, v}]

Out[1]= (u v + 2 u^3 v + 2 u^2 v^2 + u^3 v^2 + 2 u v^3 + u^2 v^3/(-1 + u^3) (-1 + v^3))

In[2]:= DiscretePlot3D[Mod[n + m, 3], {n, 0, 12}, {m, 0, 12}]

Out[2]= [image]
```

#### Special Operators (5)

Linearity:

```wl
In[1]:= ZTransform[a f[n] + b g[n], n, z]

Out[1]= a ZTransform[f[n], n, z] + b ZTransform[g[n], n, z]

In[2]:= ZTransform[f[n + 1], n, z]

Out[2]= -z f[0] + z ZTransform[f[n], n, z]
```

---

There are several relations to the ``InverseZTransform``:

```wl
In[1]:= ZTransform[InverseZTransform[F[z], z, n], n, z]

Out[1]= F[z]
```

Shifts:

```wl
In[2]:= ZTransform[InverseZTransform[F[z], z, n + 1], n, z]

Out[2]= z F[z] - z InverseZTransform[F[z], z, 0]
```

Polynomial multiplication:

```wl
In[3]:= ZTransform[n InverseZTransform[F[z], z, n], n, z]

Out[3]= -z Derivative[1][F][z]

In[4]:= ZTransform[n ^ 2 InverseZTransform[F[z], z, n], n, z]

Out[4]= z (Derivative[1][F][z] + z Derivative[2][F][z])
```

Exponential multiplication:

```wl
In[5]:= ZTransform[a ^ n InverseZTransform[F[z], z, n], n, z]

Out[5]= F[(z/a)]

In[6]:= ZTransform[n a ^ n InverseZTransform[F[z], z, n], n, z]

Out[6]= -(z Derivative[1][F][(z/a)]/a)
```

---

Differences and shifts:

```wl
In[1]:= ZTransform[DifferenceDelta[f[n], n], n, z]

Out[1]= -z f[0] - ZTransform[f[n], n, z] + z ZTransform[f[n], n, z]

In[2]:= ZTransform[DiscreteShift[f[n], n], n, z]

Out[2]= -z f[0] + z ZTransform[f[n], n, z]
```

---

Sums:

```wl
In[1]:= ZTransform[Sum[f[m], {m, 0, n}], n, z]

Out[1]= (z ZTransform[f[n], n, z]/-1 + z)

In[2]:= ZTransform[Sum[f[m], {m, a, n}], n, z, Assumptions -> a > 0 && a∈Integers]

Out[2]= -(z Underoverscript[∑, m = 0, -1 + a]f[m]/-1 + z) + (z ZTransform[f[n], n, z]/-1 + z)
```

---

Integrals:

```wl
In[1]:= ZTransform[Integrate[f[x, n], {x, a, b}], n, z]

Out[1]= Subsuperscript[∫, a, b]ZTransform[f[x, n], n, z]\[DifferentialD]x
```

### Options (4)

#### Assumptions (1)

Without assumptions, typically a general formula will be produced:

```wl
In[1]:= ZTransform[FactorialPower[n, k], n, z]

Out[1]= FactorialPower[0, k] Hypergeometric2F1[1, 1, 1 - k, (1/z)]
```

Use ``Assumptions`` to obtain the expression on a given range:

```wl
In[2]:= ZTransform[FactorialPower[n, k], n, z, Assumptions -> (k∈Integers && k > 0)]

Out[2]= (-1 + z)^-1 - k z k!
```

#### GenerateConditions (1)

Set ``GenerateConditions`` to ``True`` to get the region of convergence:

```wl
In[1]:= ZTransform[a ^ n, n, z, GenerateConditions -> True]

Out[1]= ConditionalExpression[z/(-a + z), Abs[z] > Abs[a]]
```

#### Method (1)

Different methods may produce different results:

```wl
In[1]:= ZTransform[n, n, z]

Out[1]= (z/(-1 + z)^2)

In[2]:= ZTransform[n, n, z, Method -> "Holonomic"]

Out[2]=
DifferentialRoot[Function[{\[FormalY], \[FormalX]}, 
  {(1 + \[FormalX])*\[FormalY][\[FormalX]] + ((-1 + \[FormalX])*\[FormalX])*Derivative[1][\[FormalY]][\[FormalX]] == 0, \[FormalY][0] == 0}]][(1/z)]
```

#### VerifyConvergence (1)

By default, convergence testing is performed:

```wl
In[1]:= ZTransform[(n + 1)!, n, z]
```

ZTransform::div: The Z transform ZTransform[(1+n)!,n,z] does not converge.

```wl
Out[1]= ZTransform[(1 + n)!, n, z]
```

Setting ``VerifyConvergence -> False`` will avoid the verification step:

```wl
In[2]:= ZTransform[(n + 1)!, n, z, VerifyConvergence -> False]

Out[2]= -z + z ZTransform[n!, n, z]
```

### Applications (1)

Solving difference equations:

```wl
In[1]:= ZTransform[y[n + 2] + 2 y[n + 1] - 3 y[n] == 0, n, z]

Out[1]= -z^2 y[0] - z y[1] - 3 ZTransform[y[n], n, z] + z^2 ZTransform[y[n], n, z] + 2 (-z y[0] + z ZTransform[y[n], n, z]) == 0

In[2]:= Solve[% /. {y[0] -> 0, y[1] -> 2}, ZTransform[y[n], n, z]]

Out[2]= {{ZTransform[y[n], n, z] -> (2 z/-3 + 2 z + z^2)}}

In[3]:= InverseZTransform[ZTransform[y[n], n, z] /. First[%], z, n]

Out[3]= (1/2) (1 - (-3)^n)

In[4]:= RSolve[{y[n + 2] + 2 y[n + 1] - 3 y[n] == 0, y[0] == 0, y[1] == 2}, y[n], n]

Out[4]= {{y[n] -> (1/2) (1 - (-3)^n)}}
```

### Properties & Relations (6)

``ZTransform`` is closely related to ``GeneratingFunction``:

```wl
In[1]:= {GeneratingFunction[n, n, z], ZTransform[n, n, 1 / z]}//Simplify

Out[1]= {(z/(-1 + z)^2), (z/(-1 + z)^2)}
```

``ExponentialGeneratingFunction`` :

```wl
In[2]:= {ExponentialGeneratingFunction[n, n, z], ZTransform[n / n!, n, 1 / z]}

Out[2]= {E^z z, E^z z}
```

``FourierSequenceTransform`` :

```wl
In[3]:= {FourierSequenceTransform[n UnitStep[n], n, ω], ZTransform[n, n, Exp[-I * ω]]}//Simplify

Out[3]= {(E^I ω/(-1 + E^I ω)^2), (E^I ω/(-1 + E^I ω)^2)}
```

---

Use ``InverseZTransform`` to get the sequence from its transform:

```wl
In[1]:= InverseZTransform[ZTransform[f[n], n, z], z, n]

Out[1]= f[n]

In[2]:= ZTransform[InverseZTransform[F[z], z, n], n, z]

Out[2]= F[z]

In[3]:= ZTransform[a ^ n, n, z]

Out[3]= (z/-a + z)

In[4]:= InverseZTransform[%, z, n]

Out[4]= a^n
```

---

``ZTransform`` effectively computes an infinite sum:

```wl
In[1]:= ZTransform[n ^ 2, n, z]

Out[1]= (z (1 + z)/(-1 + z)^3)

In[2]:= Sum[n ^ 2 z ^ (-n), {n, 0, Infinity}]

Out[2]= (z (1 + z)/(-1 + z)^3)
```

---

Linearity:

```wl
In[1]:= ZTransform[a f[n] + b g[n], n, z]

Out[1]= a ZTransform[f[n], n, z] + b ZTransform[g[n], n, z]
```

Shifting:

```wl
In[2]:= ZTransform[f[n + 2], n, z]

Out[2]= -z^2 f[0] - z f[1] + z^2 ZTransform[f[n], n, z]
```

Convolution:

```wl
In[3]:= ZTransform[Sum[f[k]g[k - n], {k, 0, n}], n, z]

Out[3]= ZTransform[f[n], n, z] ZTransform[g[-n], n, z]
```

Derivative:

```wl
In[4]:= ZTransform[n f[n], n, z]

Out[4]= -z Subscript[∂, z]ZTransform[f[n], n, z]
```

---

Initial value property:

```wl
In[1]:= ZTransform[(n ^ 2 + 1)2 ^ (-n), n, z]

Out[1]= (4 z (1 - z + 2 z^2)/(-1 + 2 z)^3)

In[2]:= Limit[(n ^ 2 + 1)2 ^ (-n), n -> 0] == Limit[%, z -> Infinity]

Out[2]= True
```

---

Final value property:

```wl
In[1]:= ZTransform[(n ^ 2 + 1)2 ^ (-n), n, z]

Out[1]= (4 z (1 - z + 2 z^2)/(-1 + 2 z)^3)

In[2]:= Limit[(n ^ 2 + 1)2 ^ (-n), n -> Infinity] == Limit[%, z -> 0]

Out[2]= True
```

### Possible Issues (1)

A ``ZTransform`` may not converge for all values of parameters:

```wl
In[1]:= {Sum[2 ^ n 1 ^ (-n), {n, 0, ∞}], ZTransform[2 ^ n, n, 1]}
```

Sum::div: Sum does not converge.

```wl
Out[1]= {Underoverscript[∑, n = 0, ∞]2^n, -1}

In[2]:= ZTransform[a ^ n, n, z]

Out[2]= (z/-a + z)
```

Use ``GenerateConditions`` to get the region of convergence:

```wl
In[3]:= ZTransform[a ^ n, n, z, GenerateConditions -> True]

Out[3]= ConditionalExpression[z/(-a + z), Abs[z] > Abs[a]]
```

### Neat Examples (1)

Create a gallery of Z transforms:

```wl
In[1]:= flist = {{UnitStep[n], n, z}, {E ^ (-α n), n, z}, {Sin[α n], n, z}, {n ^ 3 + 3n + 1, n, z}, {n ^ k, n, z}, {ChebyshevU[n, x], n, z}, {a ^ n Cos[Pi n], n, z}, {(m + 1)(n - m), {m, n}, {u, v}}, {a ^ n  m ^ 3, {m, n}, {u, v}}};

In[2]:= Grid[Prepend[{#[[1]], ZTransform@@#}& /@ flist, {f, "Z-Transform"}], IconizedObject[«Grid options»]]//TraditionalForm

Out[2]//TraditionalForm=
$$\begin{array}{cc}
 f & \text{Z-Transform} \\
 \theta (n) & \frac{z}{z-1} \\
 e^{\alpha  (-n)} & \frac{e^{\alpha } z}{e^{\alpha } z-1} \\
 \sin (\alpha  n) & \frac{z \sin (\alpha )}{z^2-2 z \cos (\alpha )+1} \\
 n^3+3 n+1 & \frac{z \left(z^3+z^2+z ... eft(\frac{1}{z},-k,0\right) \\
 U_n(x) & \frac{z^2}{-2 x z+z^2+1} \\
 a^n \cos (\pi  n) & \frac{z}{a+z} \\
 (m+1) (n-m) & \frac{u^3 v-2 u^2 v^2+u^2 v}{(u-1)^3 (v-1)^2} \\
 m^3 a^n & \frac{u \left(u^2+4 u+1\right) v}{(u-1)^4 (v-a)} \\
\end{array}$$
```

## See Also

* [`InverseZTransform`](https://reference.wolfram.com/language/ref/InverseZTransform.en.md)
* [`BilateralZTransform`](https://reference.wolfram.com/language/ref/BilateralZTransform.en.md)
* [`GeneratingFunction`](https://reference.wolfram.com/language/ref/GeneratingFunction.en.md)
* [`LaplaceTransform`](https://reference.wolfram.com/language/ref/LaplaceTransform.en.md)
* [`Sum`](https://reference.wolfram.com/language/ref/Sum.en.md)
* [`Series`](https://reference.wolfram.com/language/ref/Series.en.md)
* [`RSolve`](https://reference.wolfram.com/language/ref/RSolve.en.md)
* [`FourierSequenceTransform`](https://reference.wolfram.com/language/ref/FourierSequenceTransform.en.md)
* [`DiscreteConvolve`](https://reference.wolfram.com/language/ref/DiscreteConvolve.en.md)
* [`TransferFunctionModel`](https://reference.wolfram.com/language/ref/TransferFunctionModel.en.md)

## Tech Notes

* [Integral Transforms and Related Operations](https://reference.wolfram.com/language/tutorial/Calculus.en.md#26017)

## Related Guides

* [Summation Transforms](https://reference.wolfram.com/language/guide/SummationTransforms.en.md)
* [Signal Transforms](https://reference.wolfram.com/language/guide/SignalTransforms.en.md)
* [Discrete Calculus](https://reference.wolfram.com/language/guide/DiscreteCalculus.en.md)
* [Fourier Analysis](https://reference.wolfram.com/language/guide/FourierAnalysis.en.md)
* [Discrete Mathematics](https://reference.wolfram.com/language/guide/DiscreteMathematics.en.md)
* [Integral Transforms](https://reference.wolfram.com/language/guide/IntegralTransforms.en.md)

## Related Links

* [MathWorld](https://mathworld.wolfram.com/Z-Transform.html)

## History

* Introduced in 1999 (4.0) \| [Updated in 2008 (7.0)](https://reference.wolfram.com/language/guide/SummaryOfNewFeaturesIn70.en.md)