Macaulay2 » Documentation
Packages » HolonomicSystems > Canonical Series Tutorial
next | previous | forward | backward | up | index | toc

Canonical Series Tutorial -- Computing series solutions to regular holonomic systems

If D/I is a regular holonomic D-module, the solutions of the system of differential equations I can be written as Nilsson series (Puiseux series with logarithms). The constructive version of this result is the canonical series method [SST, Sections 2.5, 2.6]. In this tutorial, we illustrate an implementation of this method.

If the input ideal I is not regular, this method is not guaranteed to produce convergent series, or even holonomicRank(I) formal power series solutions of I. There currently exists no computational method to verify whether D/I is a regular holonomic D-module. In the case of GKZ systems, regularity has been characterized in terms of the input matrix.

Contains the following functions:

Currently, this contains the computation of exponents with respect to a weight vector. Completing the canonical series computation is in the future. To compute the exponents for a D-ideal I with respect to w, do as follows. Compute the initial ideal of I with respect to w. Introduce the subring of D consisting of polynomials in $\theta_1 = x_1 \partial_1, ... , \theta_n= x_n \partial_n$. This is a commutative polynomial subring of D, referred to here as thetaRing. The indicial ideal of I with respect to w is produced by extending the initial ideal to the ring of differential operators with rational function coefficients, and contract to thetaRing. The exponents of I with respect to w are the roots of the indicial ideal, counted with multiplicities.

i1 : R1 = QQ[z]

o1 = R1

o1 : PolynomialRing
i2 : W1 = makeWA R1

o2 = W1

o2 : PolynomialRing, 1 differential variable(s)
i3 : a=1/2

     1
o3 = -
     2

o3 : QQ
i4 : b=3

o4 = 3
i5 : c=5/3

     5
o5 = -
     3

o5 : QQ
i6 : J = ideal(z*(1-z)*dz^2+(c-(a+b+1)*z)*dz-a*b) -- the Gauss hypergeometric equation, exponents 0, 1-c

              2  2       2   9       5     3
o6 = ideal(- z dz  + z*dz  - -z*dz + -dz - -)
                             2       3     2

o6 : Ideal of W1
i7 : cssExpts(J,{1})

              2
o7 = {{0}, {- -}}
              3

o7 : List
i8 : inw(J,{-1,1})

                2
o8 = ideal(6z*dz  + 10dz)

o8 : Ideal of W1
i9 : distraction(oo,QQ[s])

             2
o9 = ideal(6s  + 4s)

o9 : Ideal of QQ[s]
i10 : factor oo_0

o10 = (s)(3s + 2)(2)

o10 : Expression of class Product
i11 : c=1  -- Now we have a single exponent of multiplicity 2

o11 = 1
i12 : J = ideal(z*(1-z)*dz^2+(c-(a+b+1)*z)*dz-a*b)

               2  2       2   9            3
o12 = ideal(- z dz  + z*dz  - -z*dz + dz - -)
                              2            2

o12 : Ideal of W1
i13 : cssExpts(J,{1})

o13 = {{0}}

o13 : List
i14 : cssExptsMult(J,{1})

o14 = {{2, {0}}}

o14 : List

The first step is to rewrite elements of the initial ideal in a terms of the thetaRing, in a way that will allow us to easily extend and contract see [SST]

i15 : R2 = QQ[x_1..x_3]

o15 = R2

o15 : PolynomialRing
i16 : W2 = makeWA R2

o16 = W2

o16 : PolynomialRing, 3 differential variable(s)
i17 : gens W2

o17 = {x , x , x , dx , dx , dx }
        1   2   3    1    2    3

o17 : List
i18 : thetaRing = QQ[t_1,t_2,t_3] -- sets variable names t_i = x_i\dx_i

o18 = thetaRing

o18 : PolynomialRing
i19 : f1= x_1*dx_1 -- this element already belongs to thetaRing

o19 = x dx
       1  1

o19 : W2
i20 : distraction(f1,thetaRing)  -- checks out

o20 = t
       1

o20 : thetaRing
i21 : f2 = x_1^3*dx_1^3 -- this is a descending factorial in the theta variables

       3  3
o21 = x dx
       1  1

o21 : W2
i22 : distraction(f2,thetaRing)

       3     2
o22 = t  - 3t  + 2t
       1     1     1

o22 : thetaRing
i23 : factor oo	  -- now it looks like a descending factorial

o23 = (t )(t  - 2)(t  - 1)
        1   1       1

o23 : Expression of class Product
i24 : f = x_1^2*x_2^2*x_3*dx_1*dx_2^2*dx_3^2

       2 2       2  2
o24 = x x x dx dx dx
       1 2 3  1  2  3

o24 : W2
i25 : distraction(f,thetaRing)

         2 2      2          2
o25 = t t t  - t t t  - t t t  + t t t
       1 2 3    1 2 3    1 2 3    1 2 3

o25 : thetaRing

Here is an example that can be continued when more functions are implemented. This is worked out as [page 138, ex 3.5.3, SST].

i26 : A = matrix{{1,1,1},{0,1,2}}

o26 = | 1 1 1 |
      | 0 1 2 |

               2       3
o26 : Matrix ZZ  <-- ZZ
i27 : I = gkz(A,{10,8})

                                                           2
o27 = ideal (x D  + x D  + x D  - 10, x D  + 2x D  - 8, - D  + D D )
              1 1    2 2    3 3        2 2     3 3         2    1 3

o27 : Ideal of QQ[x ..x , D ..D ]
                   1   3   1   3
i28 : holonomicRank(I)

o28 = 2
i29 : cssExpts(I,{1,0,0})

o29 = {{2, 8, 0}, {0, 12, -2}}

o29 : List

In this case, the series corresponding to the exponent (2,8,0) is logarithm-free (actually, this is a hypergeometric polynomial), while the series corresponding to (0,12,-2) has logarithms. [SST, page 138] has the polynomial, and four terms of the logarithmic series.

Menu