| Up | Prev | PrevTail | Tail |
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
The \(Z\)-Transform of a sequence \(\{f_n\}\) is the discrete analogue of the Laplace Transform, and
SYNTAX: ztrans(\(f_n\), n, z) | where \(f_n\) is an expression, and \(n\),\(z\) |
| are identifiers. |
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|> \rho \) then \(\exists \) a sequence {\(f_n\)} with \({\cal Z} \{f_n\}=F(z)\) given by
| SYNTAX: invztrans(\(F(z)\), z, n) | where \(F(z)\) is an expression, |
| and \(z\),\(n\) are identifiers. |
This package can compute the \(Z\)-Transforms of the following list of functions \(f_n\), and certain combinations thereof.
| \(1\) | \(e^{\alpha n}\) | \(\frac {1}{(n+k)}\) |
| \(\frac {1}{n!}\) | \(\frac {1}{(2n)!}\) | \(\frac {1}{(2n+1)!}\) |
| \(\frac {\sin (\beta n)}{n!}\) | \(\sin (\alpha n+\phi )\) | \(e^{\alpha n} \sin (\beta n)\) |
| \(\frac {\cos (\beta n)}{n!}\) | \(\cos (\alpha n+\phi )\) | \(e^{\alpha n} \cos (\beta n)\) |
| \(\frac {\sin (\beta (n+1))}{n+1}\) | \(\sinh (\alpha n+\phi )\) | \(\frac {\cos (\beta (n+1))}{n+1}\) |
| \(\cosh (\alpha n+\phi )\) | \(\binom {n+k}{m}\) |
Other Combinations
| Linearity | \({\cal Z} \{a f_n+b g_n \} = a{\cal Z} \{f_n\}+b{\cal Z}\{g_n\}\) |
| Multiplication by \(n\) | \({\cal Z} \{n^k \cdot f_n\} = -z \frac {d}{dz} \left ({\cal Z}\{n^{k-1} \cdot f_n,n,z\} \right )\) |
| Multiplication by \(\lambda ^n\) | \({\cal Z} \{\lambda ^n \cdot f_n\}=F \left (\frac {z}{\lambda }\right )\) |
| Shift Equation | \({\cal Z} \{f_{n+k}\} = z^k \left (F(z) - \sum \limits ^{k-1}_{j=0} f_j z^{-j}\right )\) |
| Symbolic Sums | \({\cal Z} \left \{ \sum \limits _{k=0}^{n} f_k \right \} = \frac {z}{z-1} \cdot {\cal Z} \{f_n\}\) |
| \({\cal Z} \left \{ \sum \limits _{k=p}^{n+q} f_k \right \}\) combination of the above | |
where \(k,\lambda \in \mathbf {N} \setminus \{0\}\); and \(a,b\) are variables or fractions; and \(p,q \in \mathbf {Z}\) or are functions of \(n\); and \(\alpha ,\beta \) and \(\phi \) are angles in radians.
This package can compute the Inverse \(Z\)-Transforms of any rational function, whose denominator can be factored over \(\mathbf {Q}\), in addition to the following list of \(F(z)\).
where \(k,\lambda \in \mathbf {N} \setminus \{0\}\) and \(A,B\) are fractions or variables (\(B>0\)) and \(\alpha ,\beta \), and \(\phi \) are angles in radians.
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
with initial conditions \(f_0 = h_0\), \(f_1 = h_1\), \(\ldots \), \(f_{k-1} = h_{k-1}\) (where \(h_j\) are given), it is possible to solve it in the following
way. If the coefficients \(a_1, \ldots , a_k\) are constants, then the \(Z\)-Transform of (\ref {eq:1}) can be calculated using
the shift equation, and results in a solvable linear equation for \({\cal Z} \{f_n\}\). Application of the Inverse
\(Z\)-Transform then results in the solution of (\ref {eq:1}).
If the coefficients \(a_1, \ldots , a_k\) are polynomials in \(n\) then the \(Z\)-Transform of (\ref {eq:1}) constitutes a differential
equation for \({\cal Z} \{f_n\}\). If this differential equation can be solved then the Inverse \(Z\)-Transform once
again yields the solution of (\ref {eq:1}). Some examples of these methods of solution can be found
in \(\S \)20.72.6.
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
(e
sin(b) sin(b)
*(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
(See [BS81], p. 651, Example 1).
Consider the homogeneous linear difference equation
1: operator f;
2: f(0):=0$ f(1):=0$ f(2):=9$ f(3):=-2$ f(4):=23$
7: equation :=
ztrans(f(n+5)-2*f(n+3)+2*f(n+2)-3*f(n+1)+2*f(n),n,z);
5
equation := ztrans(f(n),n,z)*z
3
- 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
8: ztransresult:=solve(equation,ztrans(f(n),n,z));
ztransresult :=
2
z*(9*z - 2*z + 5)
{ztrans(f(n),n,z)=----------------------------}
5 3 2
z - 2*z + 2*z - 3*z + 2
9: result:=invztrans(part(first(ztransresult),2),z,n);
result :=
n n n n n
- i *( - 1) + 2*( - 1) *2 - i + 4*n
-----------------------------------------
2
(See [BS81], p. 651, Example 2).
Consider the inhomogeneous difference equation:
The Inverse \(Z\)-Transform results in the solution
10: clear(f)$ operator f$ f(0):=0$ f(1):=1$
14: equation:=ztrans(f(n+2)-4*f(n+1)+3*f(n)-1,n,z);
3
equation := (ztrans(f(n),n,z)*z
2
- 5*ztrans(f(n),n,z)*z
+ 7*ztrans(f(n),n,z)*z
2
- 3*ztrans(f(n),n,z) - z )/(z - 1)
15: ztransresult:=solve(equation,ztrans(f(n),n,z));
ztransresult :=
2
z
{ztrans(f(n),n,z)=---------------------}
3 2
z - 5*z + 7*z - 3
16: result:=invztrans(part(first(ztransresult),2),z,n);
n
3*3 - 2*n - 3
result := ----------------
4
Consider the following difference equation, which has a differential equation for \({\cal Z}\{f_n\}\).
17: clear(f)$ operator f$ f(0):=1$ f(1):=1$
21: equation:=ztrans((n+1)*f(n+1)-f(n),n,z);
equation :=
2
- (df(ztrans(f(n),n,z),z)*z + ztrans(f(n),n,z))
22: operator tmp;
23: equation:=sub(ztrans(f(n),n,z)=tmp(z),equation);
2
equation := - (df(tmp(z),z)*z + tmp(z))
24: load_package(odesolve);
25: 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)
| Up | Prev | PrevTail | Front |