>
>
(1.8) (1.8)
>
>
>
>
(1.7) (1.7) (1.6) (1.6)
>
>
>
>
>
>
(1.5) (1.5)
>
>
>
>
>
>
(1.2) (1.2)
>
>
>
>
(1.3) (1.3)
>
>
(1.1) (1.1)
(1.4) (1.4) restart;
read "qFPS.mpl":
with(qFPS):
Example 1
Computation of 2-fold q-hypergeometric solutions of a linear q-recurrence equation m:=2;
m:= 2 r:=(q+1)*q^7*(x-1)/(q^2-2)/(x-q)/x^4;
r:= qC1 q7 xK1 q2K2 xKq x4
RE1:=denom(r)*qshift(f(x),[x$m],q)-numer(r)*f(x)=0;
RE1:= q2K2 KxCq x4 Sqx,x f x C qC1 q7 xK1 f x = 0
RE2:=x^2*qshift(f(x),[x$2],q)-(q-1)*qshift(f(x),x,q)+q*(x-2)*f(x)
=0;
RE2:=x2 Sqx,x f x K qK1 Sqx f x Cq xK2 f x = 0 RE:=qNormal(qMultiplyRE(RE2,RE1,f(x)),f(x)):
qLocalTypesCandidates(RE,f(x),q,mhypersol=m);
q7 qC1
q2K2 , 4 , K1
q7 , 1 , q6 qC1
q2K2 ,K4 , xK2, 0, 1 , xK1, 0, 1 , xKq, K1, 0
st:=time():
qHypergeomSolveRE(RE,f(x),method=qPetkovsek,mhypersol=m);
time()-st;
K qC1 q7 xK1 q2K2 KxCq x4
0.265 st:=time():
qHypergeomSolveRE(RE,f(x),method=modqPetkovsek,mhypersol=m);
time()-st;
K qC1 q7 xK1 q2K2 KxCq x4
0.048 st:=time():
qHypergeomSolveRE(RE,f(x),method=qVanHoeij,mhypersol=m);
time()-st;
K qC1 q7 xK1 q2K2 KxCq x4
0.754
Example 2
(2.8) (2.8)
>
>
(2.2) (2.2)
>
>
>
>
>
>
>
>
>
>
>
>
(2.5) (2.5)
>
>
>
>
(2.4) (2.4)
>
>
(2.3) (2.3)
(2.7) (2.7)
(3.1) (3.1)
>
>
(3.2) (3.2) (2.6) (2.6) (2.1) (2.1) Computation of 3-fold q-hypergeometric solutions of a linear q-recurrence equation
m:=3;
m:= 3 r:=sqrt(2)*q*(q-1)*x/(x-1);
r:= 2 q qK1 x xK1
RE1:=denom(r)*qshift(f(x),[x$m],q)-numer(r)*f(x)=0;
RE1:= xK1 Sqx,x,x f x K 2 q qK1 x f x = 0
RE2:=(3*x-1)*x*qshift(f(x),[x$2],q)-(q-1)*x*qshift(f(x),x,q)-q^2*
(x-q)*f(x)=0;
RE2:= 3 xK1 x Sqx,x f x K qK1 x Sqx f x Kq2 xKq f x = 0 RE:=qNormal(qMultiplyRE(RE2,RE1,f(x)),f(x)):
qLocalTypesCandidates(RE,f(x),q,mhypersol=m);
2 qK1 q, 0 , K 2 qK1 q, 1 , xK1, K1, 0 , xKq, 0, 1 , x K 1
3 q2, K1, 0 st:=time():
qHypergeomSolveRE(RE,f(x),method=qPetkovsek,mhypersol=m);
time()-st;
2 q qK1 x xK1 0.139 st:=time():
qHypergeomSolveRE(RE,f(x),method=modqPetkovsek,mhypersol=m);
time()-st;
2 q qK1 x xK1 0.034 st:=time():
qHypergeomSolveRE(RE,f(x),method=qVanHoeij,mhypersol=m);
time()-st;
2 q qK1 x xK1 8.588
Example 3
Computation of 2-fold q-hypergeometric solutions of a linear q-recurrence equation with two solutions
m:=2;
m:= 2 r1:=(x+2*q)^2/(x-q);
>
>
>
>
(4.2) (4.2) (3.9) (3.9)
>
>
(3.6) (3.6) (3.4) (3.4) (3.3) (3.3)
(3.8) (3.8)
>
>
>
>
(3.5) (3.5)
>
>
>
>
(3.7) (3.7)
(4.1) (4.1) (3.2) (3.2)
>
>
>
>
>
>
r1:= xC2 q 2 xKq
RE1:=denom(r1)*qshift(f(x),[x$m],q)-numer(r1)*f(x)=0;
RE1:= KxCq Sqx,x f x C xC2 q 2 f x = 0 r2:=(x-q)^2/(x-2);
r2:= xKq 2 xK2
RE2:=denom(r2)*qshift(f(x),[x$m],q)-numer(r2)*f(x)=0;
RE2:= xK2 Sqx,x f x K KxCq 2 f x = 0 RE:=qNormal(qLCM(RE2,RE1,f(x)),f(x)):
qLocalTypesCandidates(RE,f(x),q,mhypersol=m);
1,K1 , 1
q2 ,K1 , K4 q, 0 , K1
2 q2, 0 , q7Cq4 xK8 q6C7 q x2K8 q3 xK2 x2
7 qK2 , K1, 1 , xK2, K1, 0 , xKq,
K1, 2 , xC2 q, 0, 2 st:=time():
qHypergeomSolveRE(RE,f(x),method=qPetkovsek,mhypersol=m);
time()-st;
KxCq 2
xK2 ,K xC2 q 2 KxCq 1.964
st:=time():
qHypergeomSolveRE(RE,f(x),method=modqPetkovsek,mhypersol=m);
time()-st;
KxCq 2
xK2 ,K xC2 q 2 KxCq 0.156
st:=time():
qHypergeomSolveRE(RE,f(x),method=qVanHoeij,mhypersol=m);
time()-st;
KxCq 2
xK2 ,K xC2 q 2 KxCq 0.813
Example 4
Computation of all m-fold q-hypergeometric solutions of a linear q-recurrence equation m1:=2;
m1:= 2 r1:=sqrt(2)*q*(q-1)*x/(x-1);
(4.2) (4.2)
(4.4) (4.4)
(4.7) (4.7)
>
>
(4.6) (4.6)
>
>
>
>
>
>
(4.3) (4.3)
>
>
(5.4) (5.4) (4.5) (4.5)
>
>
>
>
>
>
>
>
>
>
>
>
>
>
(5.1) (5.1)
(5.3) (5.3)
(5.5) (5.5) (5.2) (5.2) (3.2) (3.2)
r1:= 2 q qK1 x xK1
RE1:=denom(r1)*qshift(f(x),[x$m1],q)-numer(r1)*f(x)=0;
RE1:= xK1 Sqx,x f x K 2 q qK1 x f x = 0 m2:=3;
m2:= 3 r2:=(q-1)*(x-3)^2/(x-q);
r2:= qK1 xK3 2 xKq
RE2:=denom(r2)*qshift(f(x),[x$m2],q)-numer(r2)*f(x)=0;
RE2:= KxCq Sqx,x,x f x C qK1 xK3 2 f x = 0 RE:=qNormal(qLCM(RE2,RE1,f(x)),f(x)):
st:=time():
qHypergeomSolveRE(RE,f(x),mhypersol=0);
time()-st;
2, 2 q qK1 x
xK1 , 3, K qK1 xK3 2 KxCq 57.867
Example 5
Computation of q-hypergeometric solutions of a linear q-recurrence equation showing additionally Newton polygon
r1:=q*(q-1)*x/(x-1);
r1:= q qK1 x xK1
L1:=denom(r1)*qshift(f(x),x,q)-numer(r1)*f(x);
L1:= xK1 Sqx f x Kq qK1 x f x
r2:=q/(x-q)^2;
r2:= q xKq 2
L2:=denom(r2)*qshift(f(x),x,q)-numer(r2)*f(x);
L2:= KxCq 2 Sqx f x Kq f x L:=qNormal(qLCM(L1,L2,f(x)),f(x));
L:=q qK1 x K2 q4 x2Cq4 xCq4 x3C2 q3 x2Kq3 xKq3 x3Kq xC1 f x K x K1 1K3 q5 x3Kq xCq5 x5K2 q4 x5Cq3 x5C3 q5 x4Cx3 q7Kq7 x2
C2 q4 x3K2 q6 x4Kq5 x2C2 x2 q6Kx4 q3 Sqx f x C xK1 2 q q xK1 1 KxKq2 xCq3 xC2 q x2K2 q2 x2Kx3Cx3 q Sqx,x f x = 0
qPlotNewtonPolygon(L,f(x),q,v=((a,x)->ldegree(a,x)));
>
>
(3.2) (3.2)
(4.2) (4.2)
0 0.5 1 1.5 2
0 0.2 0.4 0.6 0.8 1
qPlotNewtonPolygon(L,f(x),q,v=((a,x)->-degree(a,x)));
(4.2) (4.2)
(5.7) (5.7)
>
>
>
>
>
>
(5.8) (5.8) (5.6) (5.6) (3.2) (3.2)
0 0.5 1 1.5 2
K6 K5.5 K5 K4.5 K4
st:=time():
qHypergeomSolveRE(L,f(x),method=qPetkovsek);
time()-st;
q
KxCq 2 , q qK1 x xK1 0.237 st:=time():
qHypergeomSolveRE(L,f(x),method=qVanHoeij);
time()-st;
q
KxCq 2 , q qK1 x xK1 0.257 st:=time():
qHypergeomSolveRE(L,f(x),method=modqPetkovsek);
time()-st;
q
KxCq 2 , q qK1 x xK1 0.055
(6.1.3) (6.1.3)
>
>
>
>
(4.2) (4.2)
>
>
>
>
>
>
(6.2.2) (6.2.2) (6.1.4) (6.1.4)
>
>
(6.2.3) (6.2.3) (6.2.1) (6.2.1) (6.1.2) (6.1.2)
>
>
>
>
>
>
(3.2) (3.2)
(6.1.1) (6.1.1)
>
>
Example 6 (Timings)
J:=8:
Example Operator (3.2)
L1:=mul(x+i*q^i,i=1..floor((J-1)/2))*qshift(F(x),[x$2],q)+mul (x-i*q^i,i=1..floor(J/2))*F(x):
L1:=qNormal(qMultiplyRE(L1,qshift(F(x),[x],q)-x*F(x),F(x)),F (x));
L1:= xCq xC2 q2 xC3 q3 Sqx,x,x F x K xCq xC2 q2 x C3 q3 q2 x Sqx,x F x C KxCq KxC2 q2 KxC3 q3 Kx
C4 q4 Sqx F x K KxCq KxC2 q2 KxC3 q3 KxC4 q4 x F x
= 0
st:=time():
qHypergeomSolveRE(L1,F(x),method=qPetkovsek);
time()-st;
x 2.573 st:=time():
qHypergeomSolveRE(L1,F(x),method=qVanHoeij);
time()-st;
x 1.106 st:=time():
qHypergeomSolveRE(L1,F(x),method=modqPetkovsek);
time()-st;
x 0.128
Example Operator (3.3)
L2:=mul(x-q^i,i=1..floor((J-1)/2))*qshift(F(x),[x$2],q)+mul(x- i*q^i,i=1..floor(J/2))*F(x):
L2:=qNormal(qMultiplyRE(L2,qshift(F(x),[x],q)-x*F(x),F(x)),F (x));
L2:=x KxC3 q3 KxC4 q4 KxC2 q2 F x K KxC3 q3 KxC4 q4 Kx C2 q2 Sqx F x Kq2 x KxCq2 KxCq3 Sqx,x F x C KxCq2 Kx
Cq3 Sqx,x,x F x = 0 st:=time():
qHypergeomSolveRE(L2,F(x),method=qPetkovsek);
time()-st;
x 0.583 st:=time():
qHypergeomSolveRE(L2,F(x),method=qVanHoeij);
time()-st;
>
>
(4.2) (4.2)
>
>
>
>
(7.1) (7.1)
>
>
>
>
>
>
(7.10) (7.10) (7.7) (7.7) (6.2.3) (6.2.3)
(6.2.4) (6.2.4)
(7.8) (7.8) (7.3) (7.3)
>
>
(7.5) (7.5) (7.6) (7.6)
(7.9) (7.9) (7.4) (7.4)
>
>
>
>
>
>
(7.2) (7.2)
>
>
>
>
(3.2) (3.2)
x 0.314 st:=time():
qHypergeomSolveRE(L2,F(x),method=modqPetkovsek);
time()-st;
x 0.054
Example 7 (Example of 2 and 3-fold q-hypergeometric solutions)
m1:=2;
m1:= 2 cert1:=q*(q-1)*x/(x-1);
cert1:= q qK1 x xK1
RE1:=denom(cert1)*qshift(f(x),[x$m1],q)-numer(cert1)*f(x)=0;
RE1:= xK1 Sqx,x f x Kq qK1 x f x = 0 m2:=3;
m2:= 3 cert2:=(q-1)*(x-3)^2/(x-q);
cert2:= qK1 xK3 2 xKq
RE2:=denom(cert2)*qshift(f(x),[x$m2],q)-numer(cert2)*f(x)=0;
RE2:= KxCq Sqx,x,x f x C qK1 xK3 2 f x = 0 RE:=qNormal(qLCM(RE2,RE1,f(x)),f(x)):
qOrder(RE,f(x));
5 st:=time():
qHypergeomSolveRE(RE,f(x),method=qVanHoeij,mhypersol=2);
time()-st;
q qK1 x xK1 9.878 st:=time():
qHypergeomSolveRE(RE,f(x),method=qPetkovsek,mhypersol=2);
time()-st;
q qK1 x xK1 2.128 st:=time():
qHypergeomSolveRE(RE,f(x),method=modqPetkovsek,mhypersol=2);
time()-st;
q qK1 x xK1
>
>
(7.11) (7.11) (4.2) (4.2)
(7.12) (7.12)
>
>
>
>
>
>
(7.10) (7.10)
(8.3) (8.3)
>
>
(6.2.3) (6.2.3)
(8.1) (8.1) (7.14) (7.14)
(8.2) (8.2) (7.13) (7.13)
>
>
>
>
(3.2) (3.2)
0.241 st:=time():
qHypergeomSolveRE(RE,f(x),method=qVanHoeij,mhypersol=3);
time()-st;
K xK3 2 qK1 KxCq 17.025 st:=time():
qHypergeomSolveRE(RE,f(x),method=qPetkovsek,mhypersol=3);
time()-st;
K xK3 2 qK1 KxCq 2.211 st:=time():
qHypergeomSolveRE(RE,f(x),method=modqPetkovsek,mhypersol=3);
time()-st;
K xK3 2 qK1 KxCq 0.924 st:=time():
qHypergeomSolveRE(RE,f(x),mhypersol=0);
time()-st;
2, q qK1 x
xK1 , 3, K xK3 2 qK1 KxCq 2.020
Example 8 (Example of computation of 2-fold q-
hypergeometric series expansion of small q-sine function)
Computation of series cofficients of small q-sine function qDE:=qHolonomicDE(qsin(y,q),F(y));
qDE:=F y C qK1 2 Dqy,y F y = 0
RE:=qDEtoRE(qDE,F(y),c(j),base=qpower,expansionpt=a);
RE:=c j Cq a qj qC1 c jC1 C Kqj qKqj q2C qj 2 q3Cq4 qj 2 a2 C1 c jC2 Cq a qj qC1 qj q3K1 qj q2K1 c jC3
Cq4 qj 2 a2 qj q4K1 qj q3K1 c jC4 = 0 qHypergeomSolveRE(RE,c(j),mhypersol=2);
A251 K1 j
qpochhammer q,q, 2 j , A252 qK1 K1 j
qj 2 qK1 qpochhammer q,q, 2 j