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