dual_algebra - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Mozilla Firefox.

Online Help

All Products    Maple    MapleSim


Ore_algebra

  

dual_algebra

  

return the dual algebra of an Ore algebra, that is, its opposite ring

  

dual_polynomial

  

map a skew polynomial of an Ore algebra to the dual algebra

  

reverse_algebra

  

return an Ore algebra with opposite normal forms

  

reverse_polynomial

  

change normal form of a skew polynomial in an Ore algebra

 

Calling Sequence

Parameters

Description

Examples

Calling Sequence

dual_algebra(A, x_set)

dual_polynomial(p, A, x_set)

reverse_algebra(A, x_set)

reverse_polynomial(p, A, x_set)

Parameters

A

-

Ore algebra

x_set

-

subset of the (polynomial) indeterminates of the algebra, or the string fully to denote all indeterminates

p

-

skew polynomial

Description

• 

The dual_algebra(A, x_set)  function returns an Ore algebra A`*` that is isomorphic to the opposite algebra Aop of A, that is, where the product p⁢q is defined as the value of the product p⁢q in A.

• 

The dual_polynomial(p, A, x_set) function maps the polynomial p from A to a polynomial p`*` in A`*` so as to make the operator `*` an anti-isomorphism.  In other words, this operator follows the rule p⁢q`*`=q`*`⁢p`*`.

  

Both commands are useful to compute left gcds and to perform other calculations based on left skew Euclidean division (see examples below and skew_gcdex).

• 

Skew polynomials of an Ore algebra A in the indeterminates x1,`...`,xr,d1,`...`,dr (see skew_algebra) are represented under the normal form where all the x[i]s stand on the left of the monomials and all the d[i]s on the right.

• 

The reverse_polynomial(p, A, x_set) function changes the representation of a skew polynomial p in A by moving all the d[i]s in x_set to the left of monomials, and the corresponding x[i]s to the right.

• 

Correspondingly, the reverse_algebra(A, x_set) function returns an Ore algebra in which calculations with the new normal forms (returned by reverse_polynomial take place.

• 

These functions are part of the Ore_algebra package, and so can be used in the form dual_algebra(..), dual_polynomial(..), reverse_algebra(..) or reverse_polynomial(..) only after performing the command with(Ore_algebra) or with(Ore_algebra,<function>). The functions can always be accessed in the long form Ore_algebra[dual_algebra](..), Ore_algebra[dual_polynomial](..), Ore_algebra[reverse_algebra](..) and Ore_algebra[reverse_polynomial](..).

Examples

> 

with⁡Ore_algebra&colon;

Differential operators

> 

A≔skew_algebra⁡diff=Dx&comma;x&colon;

Dual and reverse polynomials look similar, but the dual polynomial is a polynomial in Dx with coefficients in x while the reverse polynomial is a polynomial in x with coefficients in Dx.

> 

dual_polynomial⁡x&comma;A&comma;Dx=reverse_polynomial⁡x&comma;A&comma;Dx

x=x

(1)
> 

dual_polynomial⁡Dx&comma;A&comma;Dx=reverse_polynomial⁡Dx&comma;A&comma;Dx

Dx=Dx

(2)
> 

p≔rand_skew_poly⁡x&comma;Dx&comma;A

p≔−10⁢Dx4+−83⁢x2−73⁢Dx2−4⁢x3⁢Dx+97⁢x2−62⁢x

(3)
> 

dual_polynomial⁡p&comma;A&comma;Dx

109⁢x2−62⁢x−166−10⁢Dx4+−83⁢x2−73⁢Dx2+−4⁢x3+332⁢x⁢Dx

(4)
> 

reverse_polynomial⁡p&comma;A&comma;Dx

−10⁢Dx4−73⁢Dx2−166−4⁢x3⁢Dx+−83⁢Dx2+109⁢x2+332⁢Dx−62⁢x

(5)

Shift operators

> 

A≔skew_algebra⁡shift=Sn&comma;n&colon;

Dual and reverse polynomials look similar, but the dual polynomial is a polynomial in Sn with coefficients in n while the reverse polynomial is a polynomial in n with coefficients in Sn.

> 

dual_polynomial⁡n&comma;A&comma;Sn=reverse_polynomial⁡n&comma;A&comma;Sn

n=n

(6)
> 

dual_polynomial⁡Sn&comma;A&comma;Sn=reverse_polynomial⁡Sn&comma;A&comma;Sn

Sn=Sn

(7)
> 

p≔rand_skew_poly⁡n&comma;Sn&comma;A

p≔74⁢n⁢Sn4+6⁢n2+75⁢n⁢Sn3−92⁢n3⁢Sn2+23⁢n4−50⁢n

(8)
> 

dual_polynomial⁡p&comma;A&comma;Sn

23⁢n4−50⁢n+74⁢n−296⁢Sn4+6⁢n2+39⁢n−171⁢Sn3+−92⁢n3+552⁢n2−1104⁢n+736⁢Sn2

(9)
> 

reverse_polynomial⁡p&comma;A&comma;Sn

−296⁢Sn4−171⁢Sn3+736⁢Sn2+23⁢n4−92⁢n3⁢Sn2+6⁢Sn3+552⁢Sn2⁢n2+74⁢Sn4+39⁢Sn3−1104⁢Sn2−50⁢n

(10)

Eulerian operators

> 

A≔skew_algebra⁡euler=Tx&comma;x&colon;

Dual and reverse polynomials look similar, but the dual polynomial is a polynomial in Tx with coefficients in x while the reverse polynomial is a polynomial in x with coefficients in Tx.

> 

dual_polynomial⁡x&comma;A&comma;Tx=reverse_polynomial⁡x&comma;A&comma;Tx

x=x

(11)
> 

dual_polynomial⁡Tx&comma;A&comma;Tx=reverse_polynomial⁡Tx&comma;A&comma;Tx

Tx=Tx

(12)
> 

p≔rand_skew_poly⁡x&comma;Tx&comma;A

p≔−29⁢x2−61⁢x+10⁢Tx2−8⁢x3⁢Tx+95⁢x5−23

(13)
> 

dual_polynomial⁡p&comma;A&comma;Tx

95⁢x5+24⁢x3−116⁢x2−61⁢x−23+−29⁢x2−61⁢x+10⁢Tx2+−8⁢x3+116⁢x2+122⁢x⁢Tx

(14)
> 

reverse_polynomial⁡p&comma;A&comma;Tx

95⁢x5+−8⁢Tx+24⁢x3+−29⁢Tx2+116⁢Tx−116⁢x2+−61⁢Tx2+122⁢Tx−61⁢x+10⁢Tx2−23

(15)

`q`-Shift operators

> 

A≔skew_algebra⁡qshift=Sn&comma;qn&colon;

Only dual polynomials are available.

> 

dual_polynomial⁡qn&comma;A&comma;Sn

qn

(16)
> 

reverse_polynomial⁡qn&comma;A&comma;Sn

Error, (in `index/Ore_algebra/should_not_be_used`) reverse not available for q-calculus algebras

> 

dual_polynomial⁡Sn&comma;A&comma;Sn

Sn

(17)
> 

reverse_polynomial⁡Sn&comma;A&comma;Sn

Error, (in `index/Ore_algebra/should_not_be_used`) reverse not available for q-calculus algebras

> 

p≔rand_skew_poly⁡qn&comma;Sn&comma;A

p≔Sn5+77⁢Sn4+qn⁢95⁢qn−51⁢Sn3+qn2⁢31⁢qn−10⁢Sn

(18)
> 

dual_polynomial⁡p&comma;A&comma;Sn

Sn5+77⁢Sn4+qn⁢−51⁢q3+95⁢qn⁢Sn3q6+qn2⁢31⁢qn−10⁢q⁢Snq3

(19)

Computation of left gcds and left lcms

The function Ore_algebra[skew_gcdex] inputs two polynomials p and q and computes a list g&comma;a&comma;b&comma;u&comma;v such that u⁢p+v⁢q=0 and a⁢p+b⁢q=g.  The polynomial g is a right gcd of p and q.  Applying the dualization operator `*` yields a list g`*`&comma;a`*`&comma;b`*`&comma;u`*`&comma;v`*` such that p`*`⁢u`*`+q`*`⁢v`*`=0 and p`*`⁢a`*`+q`*`⁢b`*`=g`*`, where g`*` is a left gcd of p`*` and q`*`.  The following method to compute left gcds is based on this idea.

> 

A≔diff_algebra⁡Dx&comma;x&colon;

Define two polynomials P and Q that share a left common divisor.

> 

p≔rand_skew_poly⁡x&comma;Dx&comma;degree=2&comma;A

p≔−27⁢Dx2+30⁢x−28⁢Dx+16⁢x2+55⁢x+1

(20)
> 

q≔rand_skew_poly⁡x&comma;Dx&comma;degree=2&comma;A

q≔47⁢Dx2+−87⁢x−96⁢Dx+72⁢x2−59⁢x−15

(21)
> 

r≔rand_skew_poly⁡x&comma;Dx&comma;degree=2&comma;A

r≔−48⁢Dx2+−88⁢x+92⁢Dx−91⁢x2+43⁢x−90

(22)
> 

P≔skew_product⁡r&comma;p&comma;A

P≔1296⁢Dx4+936⁢x−1140⁢Dx3+−951⁢x2+1423⁢x−3074⁢Dx2+−4138⁢x3+470⁢x2−4644⁢x+92⁢Dx−1456⁢x4−4317⁢x3−1982⁢x2−6803⁢x+3434

(23)
> 

Q≔skew_product⁡r&comma;q&comma;A

Q≔−2256⁢Dx4+40⁢x+8932⁢Dx3+−77⁢x2+5297⁢x−3990⁢Dx2+1581⁢x3+16811⁢x2−6574⁢x+4920⁢Dx−6552⁢x4+8465⁢x3−20324⁢x2+23105⁢x−10990

(24)

Introduce their dual polynomials and compute their right gcd in the dual algebra, corresponding to the left gcd of the original polynomials in the original algebra.

> 

dP≔dual_polynomial⁡P&comma;A&comma;fully

dP≔−1456⁢x4−4317⁢x3+10432⁢x2−7743⁢x+6176+936⁢x−1140⁢Dx3+1296⁢Dx4+−951⁢x2+1423⁢x−5882⁢Dx2+−4138⁢x3+470⁢x2−840⁢x−2754⁢Dx

(25)
> 

dQ≔dual_polynomial⁡Q&comma;A&comma;fully

dQ≔−6552⁢x4+8465⁢x3−25067⁢x2−10517⁢x−4570+40⁢x+8932⁢Dx3−2256⁢Dx4+−77⁢x2+5297⁢x−4110⁢Dx2+1581⁢x3+16811⁢x2−6266⁢x−5674⁢Dx

(26)
> 

dA≔dual_algebra⁡A&comma;fully&colon;

> 

dGCD≔skew_gcdex⁡dP&comma;dQ&comma;Dx&comma;dA

dGCD≔−8873046528⁢Dx2⁢x4−16267251968⁢Dx⁢x5−16821817376⁢x6+24619089552⁢Dx2⁢x3+62141670024⁢Dx⁢x4+54622461457⁢x5+32688986544⁢Dx2⁢x2+12743220356⁢x3⁢Dx+39548558994⁢x4+92684791104⁢Dx2⁢x+107268226148⁢Dx⁢x2+147456828087⁢x3−35565352704⁢Dx2−242848996240⁢Dx⁢x−149094065426⁢x2+68166926016⁢Dx+35722494760⁢x−1481889696&comma;−14275216−−2074251⁢x−8632772⁢Dx+2115893⁢x2−18025252⁢x&comma;2097234⁢x2−3015708⁢x+7071808−−1191591⁢x−4959252⁢Dx&comma;−184855136⁢Dx2⁢x4+342178656⁢Dx⁢x5−283182336⁢x6+512897699⁢Dx2⁢x3−571829931⁢Dx⁢x4+1017767816⁢x5+681020553⁢Dx2⁢x2−3047653889⁢x3⁢Dx+800590201⁢x4+1930933148⁢Dx2⁢x−3426608115⁢Dx⁢x2+2633091576⁢x3−740944848⁢Dx2−1210456350⁢Dx⁢x−9729185864⁢x2+3444352412⁢Dx+3624982240⁢x−5687084608&comma;−106193376⁢Dx2⁢x4+117992640⁢Dx⁢x5+62929408⁢x6+294643359⁢Dx2⁢x3−437507974⁢Dx⁢x4+41716368⁢x5+391224573⁢Dx2⁢x2−553911398⁢x3⁢Dx−710110491⁢x4+1109259468⁢Dx2⁢x+57133929⁢Dx⁢x2−2374836150⁢x3−425649168⁢Dx2+2405735818⁢Dx⁢x−3008916049⁢x2+667845516⁢Dx+3496133096⁢x+973816096

(27)

The dual of a dual polynomial is the polynomial.

> 

dual_polynomial⁡dGCD1&comma;dA&comma;fully

−16821817376⁢x6+54622461457⁢x5−41787700846⁢x4+396023508183⁢x3−217340962694⁢x2+397973484368⁢x−178952912848+−8873046528⁢x4+24619089552⁢x3+32688986544⁢x2+92684791104⁢x−35565352704⁢Dx2+−16267251968⁢x5+62141670024⁢x4−58241151868⁢x3+254982763460⁢x2−112093050064⁢x+253536508224⁢Dx

(28)

This is the left gcd, up to renormalization (by multiplication by a rational function on the right).

> 

lgcd≔skew_product⁡&comma;1lcoeff⁡&comma;Dx&comma;A

lgcd≔91⁢x248−43⁢x48+158+Dx2+11⁢x6−2312⁢Dx

(29)

This is also the built-in left factor r, up to renormalization (by multiplication by a rational function on the right).

> 

Anormalizer⁡rlcoeff⁡r&comma;Dx

91⁢x248−43⁢x48+158+Dx2+11⁢x6−2312⁢Dx

(30)

This calculation is that performed by Ore_algebra[skew_gcdex] with the options left and left_monic.

> 

skew_gcdex⁡P&comma;Q&comma;Dx&comma;A&comma;left_monic1

91⁢x248−43⁢x48+158+Dx2+11⁢x6−2312⁢Dx

(31)

See Also

Ore_algebra

Ore_algebra/skew_algebra

Ore_algebra/skew_gcdex