Hypergeometric series solutions of linear operator equationsUsage: After read the file basis.mpl, we can then use the following functions.
FindBase(L,x,n,{pars},[bas,t_par])
Search for suitable basis up to a given degree.
Parameters:
L: the linear operator defined as a function. For example,L:=proc(f,x) subs(x=x+1,f)-f end:x: the variable which the operator acts on.
n: the maximal degree of the basis polynomials to compute.
pars: parameters that we want the basis being independent of. Usually take the empty set.
Optimal parameters:
bas: the lattice x(s). For example, bas=s*(s+u)
t_par: the parameter in x(s) that need to be determined. For example, t_par={u}.
The output is a list of solutions. The first element indicate x(s). The list follows indicate the root x_k.
An example:
Wilson polynomials:
The operator (difference equation) is given by
L:=proc(f,s) local bs,ds;
bs:=(a-I*s)*(b-I*s)*(c-I*s)*(d-I*s)/(2*I*s*(2*I*s-1));
ds:=(a+I*s)*(b+I*s)*(c+I*s)*(d+I*s)/(2*I*s*(2*I*s+1));
simplify( n*(n+a+b+c+d-1)*f - (bs*subs(s=s+I,f) -(bs+ds)*f + ds*subs(s=s-I,f)) );
end proc:Now use the commond
FindBase(L,s,5,{},bas=s*(s+u),t_par={u});We get
{[1, [s^2, [-a^2, -(a+1)^2, -(a+2)^2, -(a+3)^2, -(a+4)^2]], [s^2, [-b^2, -(b+1)^2, -(b+2)^2, -(b+3)^2, -(b+4)^2]], [s^2, [-c^2, -(c+1)^2, -(c+2)^2, -(c+3)^2, -(c+4)^2]], [s^2, [-d^2, -(d+1)^2, -(d+2)^2, -(3+d)^2, -(d+4)^2]]]}which means that one suitable basis isx(s)=s^2, x_1=-a^2, x_2=-(a+1)^2, x_3=-(a+2)^2, ...Another suitable basis isx(s)=s^2, x_1=-b^2, x_2=-(b+1)^2, x_3=-(b+2)^2, ...And so on.
Discrete q-Hermite II
The operator (three term recurrece) is given by
L:=proc(f,qn) ( x*f - ( I/qn* subs(qn=qn*q,f) - I/qn*(1-qn)*subs(qn=qn/q,f) )); end proc:The command FindBase(L,qn,5,{}); returns
{[1, [qn, [0, 0, 0, 0, 0]], [qn, [1, q, q^2, q^3, q^4]]]}
Verify(L,x,bk,k,h)
Verfiy whether a sequence of polynomials is a suitable basis.
Parameters:
L: the linear operator
x: the variable
bk: the basis polynomial of degree k
k: the degree varible k
h: the depth of the recurrence L(b_k)=A b_k + B b_{k-h}
If bk is a suitable basis, then return A_k/B_{k+h}
An example: Hahn polynomials
L:=proc(f,x)
local bx,dx;
bx:=(x+alpha+1)*(x-N);
dx:=x*(x-beta-N-1);
simplify( n*(n+alpha+beta+1)*f - (bx*subs(x=x+1,f) -(bx+dx)*f + dx*subs(x=x-1,f)) );
end proc:
We want to verify x(x-1)...(x-k+1) is a suitible basis.
Verify(L,x,(-1)^k*pochhammer(-x,k),k,1);
[(k-n)*(k+n+alpha+beta+1)/(k+1)/(alpha+k+1)/(N-k)]
qVerify(L,x,bk,k,h)
The q-analogue of Verify. We need Koepf's package qsum9.mpl to simplify the expression.
Findr(alpha,beta,gamma,n)
List all candidates for r(n) (Section 5)
Parameters: alpha,beta,gamma are the coefficients in the three term recurrence relations. n is the variable.
qFindr(alpha,beta,gamma,t)
The q-ananlogue of Findr, where t=q^{-n}.