The QDifferenceEquations package provides tools for studying equations of the form:
and their solutions
, where
are polynomials in the indeterminates
and
. The indeterminate
is considered to be a constant.
is the associated q-difference operator of order
, where
represents the q-shift operator
.
For example, the solutions of the first order q-difference equation
, where
, are given by:
,
where
is an arbitrary constant that is allowed to depend on
but not on
.
In Maple 18, two new commands were added to this package:
- Closure computes the closure in the ring of linear q-difference operators with polynomial coefficients.
- Desingularize computes a multiple of a given q-difference operator with fewer singularities.
As an example, let's look at the operator
from above.
> |
 |
> |
 |
This operator has singularities at
, where its leading coefficient vanishes. However, the solutions
satisfying
are non-singular at both points, so
are two apparent singularities. It is possible to remove such apparent singularities by finding a higher order operator
that has the same solutions as
, plus some additional ones. This is what the command Desingularize does.
> |
 |
Let us verify that
is actually a solution of
.
> |
 |
> |
![A := SetOreRing([x, q], qshift); -1](/products/maple/new_features/images18/QDifferenceEquations_36.gif) |
> |
 |
> |
 |
> |
 |
The closure of an operator
consists of all left "pseudo"-multiples of
, i.e., all operators
for which there exists an operator,
(in
) and a polynomial
(in
only), such that the following torsion relation holds true:
Basically, this means that
is a genuine left multiple of
of which one can factor out the content
. Both
and
have exactly the same solutions, which include all solutions of
. In particular, the desingularizing operator
from above is an element of the closure of
.
The command Closure computes a basis of the closure.
> |
 |
We see that, trivially,
itself belongs to its closure. In addition, the basis contains two second order operators, both of which have fewer and different singularities than
itself, namely,
and
, respectively. Since these two singularities are different, the two leading coefficients are coprime as polynomials in
, and we can find a linear combination that is monic:
> |
![gcdex(lcoeff(C[2], Q), lcoeff(C[3], Q), x, 's', 't'), s, t; 1](/products/maple/new_features/images18/QDifferenceEquations_66.gif) |
> |
![collect(`+`(`*`(s, `*`(C[2])), `*`(t, `*`(C[3]))), Q, normal)](/products/maple/new_features/images18/QDifferenceEquations_68.gif) |
This, in fact, is exactly the desingularizing operator from above.