1% test file for ztrans package
2%
3operator f;
4operator g;
5operator h;
6
7% Examples for Z transformation
8ztrans(1,n,z);
9ztrans(a,n,z);
10ztrans((-1)^n,n,z);
11ztrans(n,n,z);
12ztrans(n^2,n,z);
13ztrans(n^k,n,z);
14% should be output=input
15ztrans((-1)^n*n^2,n,z);
16ztrans(binomial(n,m),n,z);
17ztrans((-1)^n*binomial(n,m),n,z);
18ztrans(binomial(n+k,m),n,z);
19ztrans(a^n,n,z);
20ztrans(a^(n-1),n,z);
21ztrans(a^(n+k),n,z);
22ztrans((-1)^n*a^n,n,z);
23ztrans(1-a^n,n,z);
24ztrans(n*a^n,n,z);
25ztrans(n^3*a^n,n,z);
26ztrans(binomial(n,m)*a^n,n,z);
27ztrans(1/(n+1),n,z);
28ztrans(1/(n+2),n,z);
29ztrans((-1)^(n)/(n+1),n,z);
30ztrans((-1)^(n)/(n+2),n,z);
31ztrans(a^(n-1)/(n+1),n,z);
32ztrans(a^(n+k)/(n+1),n,z);
33ztrans(a^n/factorial(n),n,z);
34ztrans((n+1)*a^n/factorial(n),n,z);
35ztrans(1/factorial(n-1),n,z);
36% ERROR message o.k.
37ztrans((-1)^n/factorial(2*n+1),n,z);
38ztrans((-1)^n/factorial(2*n),n,z);
39ztrans(1/factorial(2*n+1),n,z);
40ztrans(1/factorial(2*n-1),n,z);
41ztrans(1/factorial(2*n+3),n,z);
42ztrans(1/factorial(2*n),n,z);
43ztrans(1/factorial(2*n+2),n,z);
44ztrans(a^n/factorial(2*n+1),n,z);
45ztrans(a^n/factorial(2*n),n,z);
46ztrans(e^(a*n),n,z);
47ztrans(e^(a*(n+k)),n,z);
48ztrans(sinh(a*n),n,z);
49ztrans(cosh(a*n),n,z);
50ztrans(sinh(a*n+p),n,z);
51ztrans(cosh(a*n+p),n,z);
52ztrans(a^n*sinh(a*n),n,z);
53ztrans(a^n*cosh(a*n),n,z);
54ztrans(n*sinh(a*n),n,z);
55ztrans(n*cosh(a*n),n,z);
56ztrans(n^2*a^n*sinh(b*n),n,z);
57ztrans(sin(b*n),n,z);
58ztrans(cos(b*n),n,z);
59ztrans(sin(b*n+p),n,z);
60ztrans(cos(b*n+p),n,z);
61ztrans(e^(a*n)*sin(b*n),n,z);
62ztrans(e^(a*n)*cos(b*n),n,z);
63ztrans((-1)^n*e^(a*n)*sin(b*n),n,z);
64ztrans((-1)^n*e^(a*n)*cos(b*n),n,z);
65ztrans(n*sin(b*n),n,z);
66ztrans(n*cos(b*n),n,z);
67ztrans(n^2*a^n*sin(b*n),n,z);
68ztrans(cos(b*(n+1))/(n+1),n,z);
69ztrans(sin(b*(n+1))/(n+1),n,z);
70ztrans(cos(b*(n+2))/(n+2),n,z);
71ztrans((-1)^(n)*cos(b*(n+1))/(n+1),n,z);
72ztrans((-1)^(n)*sin(b*(n+1))/(n+1),n,z);
73ztrans(cos(b*n)/factorial(n),n,z);
74ztrans(sin(b*n)/factorial(n),n,z);
75ztrans(a*f(n)+b*g(n)+c*h(n),n,z);
76ztrans(sum(f(k)*g(n-k),k,0,n),n,z);
77ztrans(sum(f(k),k,0,n),n,z);
78ztrans(sum(f(k),k,-2,n),n,z);
79ztrans(sum(f(k),k,3,n),n,z);
80ztrans(sum(f(k),k,0,n+2),n,z);
81ztrans(sum(f(k),k,0,n-3),n,z);
82ztrans(sum(f(k),k,-2,n+3),n,z);
83ztrans(sum(1/factorial(k),k,0,n),n,z);
84ztrans(sum(1/factorial(k+2),k,0,n),n,z);
85ztrans(n^2*sum(1/factorial(k),k,0,n),n,z);
86ztrans(sum(n^2/factorial(k),k,0,n),n,z);
87ztrans(sum(1/k,k,0,n),n,z);
88% ERROR o.k.
89ztrans(sum(1/(k+1),k,0,n),n,z);
90ztrans(sum(1/(k+3),k,0,n),n,z);
91ztrans(f(n+k),n,z);
92% output=input
93ztrans(f(n+2),n,z);
94ztrans(f(n-k),n,z);
95% output=input
96ztrans(f(n-3),n,z);
97% output=input
98ztrans(a^n*f(n),n,z);
99ztrans(n*f(n),n,z);
100ztrans(1/a^n,n,z);
101ztrans(1/a^(n+1),n,z);
102ztrans(1/a^(n-1),n,z);
103ztrans(2*n+n^2-3/4*n^3,n,x);
104ztrans(n^2*cos(n*x),n,z);
105ztrans((1+n)^2*f(n),n,z);
106ztrans(n^2*f(n),n,z);
107ztrans(n/factorial(n),n,z);
108ztrans(n^2/factorial(n),n,z);
109ztrans(a^n/factorial(n),n,z);
110ztrans(1/(a^n*factorial(n)),n,z);
111ztrans(sum(f(k)*g(n-k),k,0,n),n,z);
112ztrans(sum(f(k),k,0,n-1),n,z);
113ztrans(sum(f(k),k,0,n),n,z);
114ztrans(sum(1/factorial(k),k,0,n),n,z);
115ztrans(sum(k/factorial(k),k,0,n),n,z);
116ztrans(sum(a^k*k^2/factorial(k),k,0,n),n,z);
117ztrans(a^n*f(n),n,z);
118ztrans(binomial(n,k),n,z);
119ztrans(1/(n+1),n,z);
120ztrans(n/factorial(2*n+1),n,z);
121ztrans(a^n*sin(n*x+y),n,z);
122ztrans(n^3*sin(n*x+y),n,z);
123ztrans((n+1)/factorial(n),n,z);
124ztrans(factorial(n)/(factorial(k)*factorial(n-k)),n,z);
125
126% Examples for inverse Z transformation
127invztrans(z/(z-1),z,n);
128invztrans(z/(z+1),z,n);
129invztrans(z/(z-1)^2,z,n);
130invztrans(z*(z+1)/(z-1)^3,z,n);
131invztrans(z/(z-1)^m,z,n);
132% invztrans(z/(z-1)^(m+1),z,n);
133% not yet supported
134invztrans(z/(z-1)^4,z,n);
135invztrans((-1)^m*z/(z+1)^m,z,n);
136% not yet supported
137invztrans(z/(z+1)^4,z,n);
138% invztrans(z^(k+1)/(z-1)^(m+1),z,n);
139% not yet supported
140invztrans(z^4/(z-1)^m,z,n);
141% invztrans(z^4/(z-1)^(m+1),z,n);
142% not yet supported
143% invztrans(z^4/(z-1)^m,z,n);
144% not yet supported
145% invztrans(z^(k+1)/(z-1)^5,z,n);
146% not yet supported
147invztrans(z^3/(z-a)^4,z,n);
148invztrans(z/(z-a),z,n);
149invztrans(z/(z+a),z,n);
150invztrans(z*(1-a)/((z-1)*(z-a)),z,n);
151invztrans(z*a/(z-a)^2,z,n);
152invztrans(z*3/(z-3)^2,z,n);
153% invztrans(a^m*z/(z-a)^(m+1),z,n);
154% not yet supported
155% invztrans(a^m*z/(z-a)^m,z,n);
156% not yet supported
157% invztrans(4^m*z/(z-4)^(m+1),z,n);
158% not yet supported
159invztrans(a^3*z/(z-a)^5,z,n);
160invztrans(z*log(z/(z-1)),z,n);
161invztrans(z*log(1+1/z),z,n);
162invztrans(z*log(z/(z-a)),z,n);
163invztrans(e^(a/z),z,n);
164invztrans(e^(1/(a*z)),z,n);
165invztrans((1+a/z)*e^(a/z),z,n);
166invztrans(e^(a/z)*(a+z)/z,z,n);
167invztrans(sqrt(z)*sin(1/sqrt(z)),z,n);
168invztrans(cos(1/sqrt(z)),z,n);
169invztrans(sqrt(z)*sinh(1/sqrt(z)),z,n);
170invztrans(cosh(1/sqrt(z)),z,n);
171invztrans(sqrt(z/a)*sinh(sqrt(a/z)),z,n);
172invztrans(cosh(sqrt(a/z)),z,n);
173invztrans(z/(z-e^a),z,n);
174invztrans(z*sinh(a)/(z^2-2*z*cosh(a)+1),z,n);
175invztrans(z*(z-cosh(a))/(z^2-2*z*cosh(a)+1),z,n);
176invztrans(z*(z*sinh(p)+sinh(a-p))/(z^2-2*z*cosh(a)+1),z,n);
177% trigsimp(ws);
178% trigsimp(ws,combine);
179invztrans(z*(z*cosh(p)-cosh(a-p))/(z^2-2*z*cosh(a)+1),z,n);
180% trigsimp(ws);
181% trigsimp(ws,combine);
182invztrans(a*z*sinh(a)/(z^2-2*a*z*cosh(a)+a^2),z,n);
183invztrans(z*(z-a*cosh(a))/(z^2-2*a*z*cosh(a)+a^2),z,n);
184invztrans(z*(z^2-1)*sinh(a)/(z^2-2*z*cosh(a)+1)^2,z,n);
185% trigsimp(ws);
186invztrans(z*((z^2+1)*cosh(a)-2*z)/(z^2-2*z*cosh(a)+1)^2,z,n);
187invztrans(z*sin(b)/(z^2-2*z*cos(b)+1),z,n);
188invztrans(z*(z-cos(b))/(z^2-2*z*cos(b)+1),z,n);
189invztrans(z*(z*sin(p)+sin(b-p))/(z^2-2*z*cos(b)+1),z,n);
190% trigsimp(ws);
191% trigsimp(ws,combine);
192invztrans(z*(z*cos(p)-cos(b-p))/(z^2-2*z*cos(b)+1),z,n);
193% trigsimp(ws);
194% trigsimp(ws,combine);
195invztrans(z*e^(a)*sin(b)/(z^2-2*z*e^a*cos(b)+e^(2*a)),z,n);
196invztrans(z*(z-e^a*cos(b))/(z^2-2*z*e^a*cos(b)+e^(2*a)),z,n);
197invztrans(-z*e^a*sin(b)/(z^2+2*z*e^a*cos(b)+e^(2*a)),z,n);
198invztrans(z*(z+e^a*cos(b))/(z^2+2*z*e^a*cos(b)+e^(2*a)),z,n);
199invztrans(z*(z^2-1)*sin(b)/(z^2-2*z*cos(b)+1)^2,z,n);
200% trigsimp(ws,expon);
201% trigsimp(ws,trig);
202invztrans(z*((z^2+1)*cos(b)-2*z)/(z^2-2*z*cos(b)+1)^2,z,n);
203% trigsimp(ws,expon);
204% trigsimp(ws,trig);
205invztrans(z*log(z/sqrt(z^2-2*z*cos(b)+1)),z,n);
206invztrans(z*atan(sin(b)/(z-cos(b))),z,n);
207invztrans(z*log(sqrt(z^2+2*z*cos(b)+1)/z),z,n);
208invztrans(z*atan(sin(b)/(z+cos(b))),z,n);
209invztrans(cos(sin(b)/z)*e^(cos(b)/z),z,n);
210invztrans(sin(sin(b)/z)*e^(cos(b)/z),z,n);
211invztrans((f+a*z+b*z^2)/(c+d*z+e*z^2),z,n);
212
213% Example 1 in Bronstein/Semendjajew, p. 651
214
215f(0):=0;
216f(1):=0;
217f(2):=9;
218f(3):=-2;
219f(4):=23;
220equation:=ztrans(f(n+5)-2*f(n+3)+2*f(n+2)-3*f(n+1)+2*f(n),n,z);
221ztransresult:=solve(equation,ztrans(f(n),n,z));
222result:=invztrans(part(first(ztransresult),2),z,n);
223
224% Example 2 in Bronstein/Semendjajew, p. 651
225
226clear(f);
227operator f;
228f(0):=0;
229f(1):=1;
230equation:=ztrans(f(n+2)-4*f(n+1)+3*f(n)-1,n,z);
231ztransresult:=solve(equation,ztrans(f(n),n,z));
232result:=invztrans(part(first(ztransresult),2),z,n);
233
234% Other example:
235
236clear(f);
237operator f;
238f(0):=1;
239f(1):=1;
240operator tmp;
241equation:=ztrans((n+1)*f(n+1)-f(n),n,z);
242equation:=sub(ztrans(f(n),n,z)=tmp(z),equation);
243load_package odesolve;
244oderesult:=odesolve(equation,tmp(z),z);
245preresult:=invztrans(part(first(oderesult),2),z,n);
246solveresult:=
247solve({sub(n=0,preresult)=f(0),sub(n=1,preresult)=f(1)},arbconst(1));
248result:=preresult where solveresult;
249
250end;
251