Commutation Rules in Ore Algebra
Description
Examples
Ore algebras can be defined by mixing predefined commutation types and user-defined commutation types.
Currently available predefined types are introduced by the following syntaxes.
Differential operators: diff=Dx,x, euler=Tx,x, loc_diff=Dx,x (followed by localization=u,p).
Shift and difference operators: δ=Dx,x, shift=Sx,x.
_q_-Calculus operators: qdelta=Dx,qx, qdiff=Dx,x,q, qdilat=Hx,x,q, qdilat=Dx,qx=qx, qshift=Sx,qx, shift+qshift=Sx,qx.
Dual types dual_delta, dual_diff, dual_euler, dual_qdelta, dual_qdiff, dual_qdilat, dual_qshift, dual_shift, and `dual_shift+dual_qshift` are also available.
The delta type introduces a finite difference operator Dx that commutes with the operator of multiplication by x as:
Dx⁢x=x+1⁢Dx+1
This operator acts on Maple objects as:
Dx·f⁡x=f⁡x+1−f⁡x
Correspondingly, the dual_delta type is defined by the commutation:
Dx⁢x=x−1⁢Dx−1
Dx·f⁡x=f⁡x−1−f⁡x
The diff type introduces a differential operator Dx that commutes with the operator of multiplication by x as:
Dx⁢x=Dx⁢x+1
Dx·f⁡x=ⅆⅆxf⁡x
Correspondingly, the dual_diff type is defined by the commutation:
Dx⁢x=Dx⁢x−1
Dx·f⁡x=−ⅆⅆxf⁡x
The euler type introduces an Eulerian operator, that is, x times the differential operator with respect to x, that commutes with the operator of multiplication by x as:
Tx⁢x=Tx⁢x+x
Tx·f⁡x=x⁢ⅆⅆxf⁡x
Correspondingly, the dual_euler type is defined by the commutation:
Tx⁢x=Tx⁢x−x
Tx·f⁡x=−x⁢ⅆⅆxf⁡x
The loc_diff type introduces a differential operator Dx that commutes with the operators x and u of multiplication by x and 1/p, respectively, as:
Dx⁢u=Dx⁢u−u2⁢ⅆpⅆx
Several loc_diff commutations can appear in the same algebra. However, they must all be related to the same localization option and there can be at most one such option. Not all indeterminates involved in the inverted polynomial p can appear rationally in the algebra. At least one of them must be declared polynomial by using the polynom option.
The qdelta type introduces a q-calculus operator Dx that commutes with the operator q^x of multiplication by q^x as:
Dx⁢qx=q⁢qx⁢Dx+q⁢qx−qx
Correspondingly, the dual_qdelta type is defined by the commutation:
Dx⁢qx=qx⁢Dxq−q−1⁢qxq
The qdiff type introduces a q-calculus operator Dx that commutes with the operator x of multiplication by x as:
Dx⁢x=q⁢x⁢Dx+1
Dx·f⁡x=f⁡q⁢x−f⁡xq−1⁢x
Correspondingly, the dual_qdiff type is defined by the commutation:
Dx⁢x=x⁢Dxq−1
Dx·f⁡x=q⁢f⁡xq−f⁡xq−1⁢x
With the syntax qdilat=Hx,x,q, the qdilat type introduces a q-calculus operator Hx that commutes with the operator x of multiplication by q^x as:
Hx⁢x=q⁢x⁢Hx
Hx·f⁡x=f⁡q⁢x
With the alternative syntax qdilat=Sx,qx=qx, the qdilat type introduces a q-calculus operator Sx that acts like the operator of the qshift section below, but with a notation for the operator of multiplication by qx that is the name qx instead of the power qx. This syntax is better suited to calculations with the Groebner package. The operator Sx commutes with the operator qx as:
Sx⁢qx=q⁢qx⁢Sx
Sx·f⁡x=f⁡q⁢x
while the operator qx does as:
qx·f⁡x=qx⁢f⁡x
Correspondingly, the dual_qdilat type is defined by the commutation:
Sx⁢qx=qx⁢Sxq
Sx·f⁡x=f⁡xq
The qshift type introduces a q-calculus operator Sx that commutes with the operator q^x of multiplication by q^x as:
Sx·f⁡x=f⁡x+1
Correspondingly, the dual_qshift type is defined by the commutation:
Sx·f⁡x=f⁡x−1
The shift type introduces a shift operator Sx=Dx+1 that commutes with the operator of multiplication by x as:
Sx⁢x=x+1⁢Sx
Correspondingly, the dual_shift type is defined by the commutation:
Sx⁢x=x−1⁢Sx
The related type `shift+dual_shift` introduces both operators above, namely the forward shift operator Sx and the backward shift operator Tx, which commute with the operator of multiplication by x as:
Sx⁢x=x+1⁢Sx,
Tx⁢x=x−1⁢Tx
These operators acts on Maple objects as:
Sx·f⁡x=f⁡x+1,
Tx·f⁡x=f⁡x−1
Note: In the current implementation, the rules Sx⁢Tx=1 and Sx⁢Tx=1 are not recognized.
The `shift+qshift` type introduces a q-calculus operator Sx that commutes with the operators x and q^x of multiplication by x and q^x respectively as:
Sx⁢x=x+1⁢SxandSx⁢qx=q⁢qx⁢Sx
Sx·f⁡x,qx=f⁡x+1,q⁢qx
Correspondingly, the `dual_shift+dual_qshift` type is defined by the commutations:
Sx⁢x=x−1⁢SxandSx⁢qx=qx⁢Sxq
Sx·f⁡x,qx=f⁡x−1,qxq
User-defined types are introduced by the syntax.
user=d,x,σ,δ
where d is the pseudo-differentiation operator, x is the operator of multiplication by x, and sigma and delta are functions over polynomials in x. See examples below. No action on Maple objects is predefined.
Not all combinations of commutations are supported. More specifically, the indeterminates x_i and d_i must appear in a single list l_j only, except from the parameters q used for q-calculus.
Dual commutations
Here are possible declarations of a shift operator, next of a inverse shift operator.
with⁡Ore_algebra:
A≔skew_algebra⁡shift=Sn,n:
skew_product⁡Sn,n,A
n+1⁢Sn
applyopr⁡Sn,u⁡n,A
u⁡n+1
A≔skew_algebra⁡dual_shift=Sn,n:
n−1⁢Sn
u⁡n−1
Localization
The following call introduces the algebra of linear differential operators with polynomial coefficients in x and y and an inverse u for the polynomial p=−x2−y2+1.
p≔1−x2−y2:
A≔skew_algebra⁡loc_diff=Dx,x,loc_diff=Dy,y,polynom=x,y,localization=u,p:
skew_product⁡Dx,x,A
Dx⁢x+1
skew_product⁡Dx,u,A
2⁢u2⁢x+Dx⁢u
skew_product⁡Dx,u⁢x,A
2⁢u2⁢x2+u⁢x⁢Dx+u
skew_product⁡Dy,y,A
y⁢Dy+1
skew_product⁡Dy,u,A
2⁢u2⁢y+u⁢Dy
skew_product⁡Dy,u⁢y,A
2⁢u2⁢y2+u⁢y⁢Dy+u
map⁡applyopr,x,y,u,Dx,Dy,f⁡x,y,A
x⁢f⁡x,y,y⁢f⁡x,y,f⁡x,y−x2−y2+1,∂∂xf⁡x,y,∂∂yf⁡x,y
User-defined commutations
Define an algebra of operators where Dx and y are interpreted as the differentiation operator with respect to x and as the multiplication operator by ⅇx respectively. The commutation rule reads: ⅇx⁢f⁡x'=ⅇx⁢f⁡x+ⅇx⁢f'⁡x.
A:=skew_algebra(user=[Dx,y,p->p, proc(p,n) local q; q:=p; to n do q:=y*diff(q,y) end do; q end proc]):
skew_product⁡Dx,y,A
y⁢Dx+y
skew_product⁡Dx3,y,A
y⁢Dx3+3⁢y⁢Dx2+3⁢y⁢Dx+y
skew_product⁡Dx,y5,A
y5⁢Dx+5⁢y5
Define the Mahlerian operator of order p=2. The commutation rule reads: M⁡f⁡x=f⁡x2.
A:=skew_algebra(user=[M,x,proc(p,n) subs(x=x^(2^n),p) end proc, proc(p,n) `if`(n=0,p,0) end proc]):
skew_product⁡M,x,A
x2⁢M
skew_product⁡M5,x,A
x32⁢M5
skew_product⁡M,5⁢x3+x,A
5⁢x6+x2⁢M
See Also
Ore_algebra
Ore_algebra/skew_algebra
Ore_algebra/skew_product
Ore_algebra/Weyl_algebra
Download Help Document