Univariate Skew PolynomialΒΆ

Skew or Ore polynomial rings provide a unified framework to compute with differential and difference equations.

In the following, let A be an integral domain, equipped with two endomorphisms sigma and delta where:

\sigma: A -> A is an injective ring endomorphism
\delta: A -> A, the pseudo-derivation with respect to \sigma,
        is an additive endomorphism with

    \delta(ab) = \sigma(a)\delta(b) + \delta(a)b

        for all a,b in A

Note that in the domains and categories below, these properties are not checked.

The skew polynomial ring [Delta;sigma,delta] is the ring of polynomials in Delta with coefficients in A, with the usual addition, while the product is given by

\Delta a = \sigma(a)\Delta + \delta(a) for a in A

The two most important examples of skew polynomial rings are:

K(x)[D,1,\delta], where 1 is the identity on K and \delta is
                  the usual derviative, is the ring of differential
                  polynomials

K [E,n,\mapsto n+1,0] is the ring of linear recurrence operators
 n                    with polynomial coefficients

For example,

The UnivariateSkewPolynomialCategory (OREPCAT) provides a unified framework for polynomial rings in a non-central indeterminate over some coefficient ring R. The commutation relations between the indeterminate x and the coefficient t is given by

x r = \sigma(r) x + \delta(r)

where sigma is a ring endomorphism of R and delta is a sigma-derivation of R which is an additive map from R to R such that

\delta(rs) = \sigma(r) \delta(s) + \delta(r) s

In case sigma is the identity map on R, a sigma-derivation of R is just called a derivation. Here are some examples

We start with a linear ordinary differential operator. First, we define the coefficient ring to be expressions in one variable x with fractional coefficients:

F:=EXPR(FRAC(INT))

Define Dx to be a derivative d/dx:

Dx:F->F:=f+->D(f,['x])

Define a skew polynomial ring over F with identity endomorphism as sigma and derivation d/dx as delta:

D0:=OREUP('d,F,1,Dx)

u:D0:=(operator 'u)(x)

d:D0:='d

a:D0:=u^3*d^3+u^2*d^2+u*d+1

         3 3       2 2
     u(x) d  + u(x) d  + u(x)d + 1

b:D0:=(u+1)*d^2+2*d

                2
     (u(x) + 1)d  + 2d

r:=rightDivide(a,b)

                              3 ,          3       2
                 3      - u(x) u (x) - u(x)  + u(x)
             u(x)
[quotient= -------- d + ----------------------------,
           u(x) + 1               2
                              u(x)  + 2u(x) + 1
                 3 ,           3
            2u(x) u (x) + 3u(x)  + u(x)

 remainder= --------------------------- d + 1]
                     2
                 u(x)  + 2u(x) + 1


r.quotient

                        3 ,          3       2
           3      - u(x) u (x) - u(x)  + u(x)
       u(x)
     -------- d + ----------------------------
     u(x) + 1               2
                        u(x)  + 2u(x) + 1


r.remainder

           3 ,           3
      2u(x) u (x) + 3u(x)  + u(x)

      --------------------------- d + 1
               2
           u(x)  + 2u(x) + 1

)clear all

As a second example, we consider the so-called Weyl algebra.

Define the coefficient ring to be an ordinary polynomial over integers in one variable t

R:=UP('t,INT)

Define a skew polynomial ring over R with identity map as sigma and derivation d/dt as delta. The resulting algebra is then called a Weyl algebra. This is a simple ring over a division ring that is non-commutative, similar to the ring of matrices.

W:=OREUP('x,R,1,D)

t:W:='t

x:W:='x

Let

a:W:=(t-1)*x^4+(t^3+3*t+1)*x^2+2*t*x+t^3

             4     3           2           3
     (t - 1)x  + (t  + 3t + 1)x  + 2t x + t

b:W:=(6*t^4+2*t^2)*x^3+3*t^2*x^2

        4     2  3     2 2
     (6t  + 2t )x  + 3t x

Then

a*b
        5     4     3     2  7       4      3      2        6
     (6t  - 6t  + 2t  - 2t )x  + (96t  - 93t  + 13t  - 16t)x
   +
        7      5     4       3       2       5
     (6t  + 20t  + 6t  + 438t  - 406t  - 24)x
   +
         6      5       4      3       2              4
     (48t  + 15t  + 152t  + 61t  + 603t  - 532t - 36)x
   +
        7      5      4       3       2               3
     (6t  + 74t  + 60t  + 226t  + 116t  + 168t - 140)x
   +
        5     3      2            2
     (3t  + 6t  + 12t  + 18t + 6)x

a^3
      3     2           12      5     4      3      2           10
    (t  - 3t  + 3t - 1)x   + (3t  - 6t  + 12t  - 15t  + 3t + 3)x
  +
       3      2       9      7     6      5      4      3     2            8
    (6t  - 12t  + 6t)x  + (3t  - 3t  + 21t  - 18t  + 24t  - 9t  - 15t - 3)x
  +
        5      4      3      2        7
    (12t  - 12t  + 36t  - 24t  - 12t)x
  +
      9      7     6      5     4      3      2           6
    (t  + 15t  - 3t  + 45t  + 6t  + 36t  + 15t  + 9t + 1)x
  +
       7      5      3      2       5
    (6t  + 48t  + 54t  + 36t  + 6t)x
  +
       9      7     6      5      4      3      2  4
    (3t  + 21t  + 3t  + 39t  + 18t  + 39t  + 12t )x
  +
        7      5      4     3  3      9     7     6      5  2     7     9
    (12t  + 36t  + 12t  + 8t )x  + (3t  + 9t  + 3t  + 12t )x  + 6t x + t

)clear all

As a third example, we construct a difference operator algebra over the ring of EXPR(INT) by using an automorphism S defined by a “shift” operation S:EXPR(INT) -> EXPR(INT)

s(e)(n) = e(n+1)

and an S-derivation defined by DF:EXPR(INT) -> EXPR(INT) as

DF(e)(n) = e(n+1)-e(n)

Define S to be a “shift” operator, which acts on expressions with the discrete variable n:

S:EXPR(INT)->EXPR(INT):=e+->eval(e,[n],[n+1])

Define DF to be a “difference” operator, which acts on expressions with a discrete variable n:

DF:EXPR(INT)->EXPR(INT):=e+->eval(e,[n],[n+1])-e

Then define the difference operator algebra D0:

D0:=OREUP('D,EXPR(INT),morphism S,DF)

u:=(operator 'u)[n]

L:D0:='D+u

     D + u(n)

L^2

      2                2
     D  + 2u(n)D + u(n)

)clear all

As a fourth example, we construct a skew polynomial ring by using an inner derivation delta induced by a fixed y in R:

\delta(r) = yr - ry

First we should expose the constructor SquareMatrix so it is visible in the interpreter:

)set expose add constructor SquareMatrix

Define R to be the square matrix with integer entries:

R:=SQMATRIX(2,INT)

y:R:=matrix [[1,1],[0,1]]
     +1  1+
     |    |
     +0  1+

Define the inner derivative delta:

delta:R->R:=r+->y*r-r*y

Define S to be a skew polynomial determined by sigma = 1 and delta as an inner derivative:

S:=OREUP('x,R,1,delta)

x:S:='x

a:S:=matrix [[2,3],[1,1]]
     +2  3+
     |    |
     +1  1+

x^2*a
     +2  3+ 2   +2  - 2+    +0  - 2+
     |    |x  + |      |x + |      |
     +1  1+     +0  - 2+    +0   0 +

See Also:

  • )show UnivariateSkewPolynomial
  • )show UnivariateSkewPolynomialCategory
  • )show SquareMatrix

Table Of Contents

This Page