Up Prev PrevTail Tail

### 16.78 ZTRANS: Z-transform package

This package is an implementation of the Z-transform of a sequence. This is the discrete analogue of the Laplace Transform.

Authors: Wolfram Koepf and Lisa Temme.

#### 16.78.1 Z-Transform

The Z-Transform of a sequence {fn} is the discrete analogue of the Laplace Transform, and

This series converges in the region outside the circle |z| = |z0| = limsup n→∞.

 SYNTAX:  ztrans(fn, n, z) where fn is an expression, and n,z

 are identifiers.

#### 16.78.2 Inverse Z-Transform

The calculation of the Laurent coefficients of a regular function results in the following inverse formula for the Z-Transform:
If F(z) is a regular function in the region |z| > ρ then a sequence {fn} with {fn} = F(z) given by

 SYNTAX:  invztrans(F(z), z, n) where F(z) is an expression,

 and z,n are identifiers.

#### 16.78.3 Input for the Z-Transform

 This pack age can compute the Z-Transforms of the following list of fn, and

 certain combinations thereof.

 1 eαn

 sin(αn + ϕ) eαn sin(βn)

 cos(αn + ϕ) eαn cos(βn)

 sinh(αn + ϕ)

 cosh(αn + ϕ) (n+k m )

 Other Combinations

 Linearity {afn + bgn} = a{fn} + b{gn}

 Multiplication by n {nk ⋅ f n} = -z

 Multiplication by λn {λn ⋅ f n} = F

 Shift Equation {fn+k} = zk

 Symbolic Sums = ⋅{fn}

 combination of the above

 where k,λ ∈ N-{0}; and a,b are variables or fractions; and p,q ∈ Z or

 are functions of n; and α, β & ϕ are angles in radians.

#### 16.78.4 Input for the Inverse Z-Transform

 This package can compute the Inverse Z-Transforms of any rational function,

 whose denominator can be factored over Q, in addition to the following list

 of F(z).

 sin e cos e

 sin cos

 sinh cosh

 z  log z  log

 arctan

where k,λ N-{0} and A,B are fractions or variables (B > 0) and α,β, & ϕ are angles in radians.

#### 16.78.5 Application of the Z-Transform

Solution of difference equations

In the same way that a Laplace Transform can be used to solve differential equations, so Z-Transforms can be used to solve difference equations.

Given a linear difference equation of k-th order

 (16.97)

with initial conditions f0 = h0, f1 = h1, , fk-1 = hk-1 (where hj are given), it is possible to solve it in the following way. If the coefficients a1,,ak are constants, then the Z-Transform of (16.97) can be calculated using the shift equation, and results in a solvable linear equation for {fn}. Application of the Inverse Z-Transform then results in the solution of  (16.97).
If the coefficients a1,,ak are polynomials in n then the Z-Transform of (16.97) constitutes a differential equation for {fn}. If this differential equation can be solved then the Inverse Z-Transform once again yields the solution of (16.97). Some examples of these methods of solution can be found in §16.78.6.

#### 16.78.6 EXAMPLES

Here are some examples for the Z-Transform

1: ztrans((-1)^n*n^2,n,z);

z*( - z + 1)
---------------------
3      2
z  + 3*z  + 3*z + 1

2: ztrans(cos(n*omega*t),n,z);

z*(cos(omega*t) - z)
---------------------------
2
2*cos(omega*t)*z - z  - 1

3: ztrans(cos(b*(n+2))/(n+2),n,z);

z
z*( - cos(b) + log(------------------------------)*z)
2
sqrt( - 2*cos(b)*z + z  + 1)

4: ztrans(n*cos(b*n)/factorial(n),n,z);

cos(b)/z       sin(b)                 sin(b)
e        *(cos(--------)*cos(b) - sin(--------)*sin(b))
z                      z
---------------------------------------------------------
z
5: ztrans(sum(1/factorial(k),k,0,n),n,z);

1/z
e   *z
--------
z - 1

6: operator f\$

7: ztrans((1+n)^2*f(n),n,z);

2
df(ztrans(f(n),n,z),z,2)*z  - df(ztrans(f(n),n,z),z)*z
+ ztrans(f(n),n,z)

Here are some examples for the Inverse Z-Transform

8: invztrans((z^2-2*z)/(z^2-4*z+1),z,n);

n       n                n
(sqrt(3) - 2) *( - 1)  + (sqrt(3) + 2)
-----------------------------------------
2

9: invztrans(z/((z-a)*(z-b)),z,n);

n    n
a  - b
---------
a - b

10: invztrans(z/((z-a)*(z-b)*(z-c)),z,n);

n      n      n      n      n      n
a *b - a *c - b *a + b *c + c *a - c *b
-----------------------------------------
2      2        2      2    2        2
a *b - a *c - a*b  + a*c  + b *c - b*c

11: invztrans(z*log(z/(z-a)),z,n);

n
a *a
-------
n + 1

12: invztrans(e^(1/(a*z)),z,n);

1
-----------------
n
a *factorial(n)

13: invztrans(z*(z-cosh(a))/(z^2-2*z*cosh(a)+1),z,n);

cosh(a*n)

Examples: Solutions of Difference Equations

 I (See [?], p. 651, Example 1).

 Consider the homogeneous linear difference equation

 fn+5 - 2fn+3 + 2fn+2 - 3fn+1 + 2fn = 0

 with  initial conditions  f0 = 0, f1 = 0, f2 = 9, f3 = -2, f4 = 23.  The

 Z-Transform of the left hand side can be written as F(z) = P(z)∕Q(z)

 where  P(z) = 9z3 - 2z2 + 5z  and  Q(z) = z5 - 2z3 + 2z2 - 3z + 2  =

 (z - 1)2(z + 2)(z2 + 1),  which can be inverted to give

 fn = 2n + (-2)n - cos n.

 The following REDUCE session shows how the present package can

 be used to solve the above problem.

14: operator f\$ f(0):=0\$ f(1):=0\$ f(2):=9\$ f(3):=-2\$ f(4):=23\$

20: equation:=ztrans(f(n+5)-2*f(n+3)+2*f(n+2)-3*f(n+1)+2*f(n),n,z);

5                       3
equation := ztrans(f(n),n,z)*z  - 2*ztrans(f(n),n,z)*z

2
+ 2*ztrans(f(n),n,z)*z  - 3*ztrans(f(n),n,z)*z

3      2
+ 2*ztrans(f(n),n,z) - 9*z  + 2*z  - 5*z

21: ztransresult:=solve(equation,ztrans(f(n),n,z));

2
z*(9*z  - 2*z + 5)
ztransresult := {ztrans(f(n),n,z)=----------------------------}
5      3      2
z  - 2*z  + 2*z  - 3*z + 2

22: result:=invztrans(part(first(ztransresult),2),z,n);

n    n       n    n
2*( - 2)  - i *( - 1)  - i  + 4*n
result := -----------------------------------
2

 II (See [?], p. 651, Example 2).

 Consider the inhom ogeneous difference equation:

 fn+2 - 4fn+1 + 3fn = 1

 with initial conditions f0 = 0, f1 = 1. Giving

 F(z) = {1}

 = .

 The Inverse Z-Transform results in the solution

 fn = .

 The following REDUCE session shows how the present package can

 be used to solve the above problem.

23: clear(f)\$ operator f\$ f(0):=0\$ f(1):=1\$

27: equation:=ztrans(f(n+2)-4*f(n+1)+3*f(n)-1,n,z);

3                       2
equation := (ztrans(f(n),n,z)*z  - 5*ztrans(f(n),n,z)*z

2
+ 7*ztrans(f(n),n,z)*z - 3*ztrans(f(n),n,z) - z )/(z - 1)

28: ztransresult:=solve(equation,ztrans(f(n),n,z));

2
z
result := {ztrans(f(n),n,z)=---------------------}
3      2
z  - 5*z  + 7*z - 3

29: result:=invztrans(part(first(ztransresult),2),z,n);

n
3*3  - 2*n - 3
result := ----------------
4

 III Consider the following difference equation, which has a differential

 equation for {fn}.

 (n + 1) ⋅ fn+1 - fn = 0

 with initial conditions f0 = 1, f1 = 1. It can be solved in REDUCE

 using the present package in the following way.

30: clear(f)\$ operator f\$ f(0):=1\$ f(1):=1\$

34: equation:=ztrans((n+1)*f(n+1)-f(n),n,z);

2
equation :=  - (df(ztrans(f(n),n,z),z)*z  + ztrans(f(n),n,z))

35: operator tmp;

36: equation:=sub(ztrans(f(n),n,z)=tmp(z),equation);

2
equation :=  - (df(tmp(z),z)*z  + tmp(z))

38: ztransresult:=odesolve(equation,tmp(z),z);

1/z
ztransresult := {tmp(z)=e   *arbconst(1)}

39: preresult:=invztrans(part(first(ztransresult),2),z,n);

arbconst(1)
preresult := --------------
factorial(n)

40: solve({sub(n=0,preresult)=f(0),sub(n=1,preresult)=f(1)},
arbconst(1));

{arbconst(1)=1}

41: result:=preresult where ws;

1
result := --------------
factorial(n)

#### Bibliography

[1]   Bronstein, I.N. and Semedjajew, K.A., Taschenbuch der Mathematik, Verlag Harri Deutsch, Thun und Frankfurt(Main), 1981.
ISBN 3 87144 492 8.

 Up Prev PrevTail Front