dual_algebra - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.
Our website is currently undergoing maintenance, which may result in occasional errors while browsing. We apologize for any inconvenience this may cause and are working swiftly to restore full functionality. Thank you for your patience.

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 pq is defined as the value of the product pq 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 pq`*`=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

withOre_algebra&colon;

Differential operators

Askew_algebradiff=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_polynomialx&comma;A&comma;Dx=reverse_polynomialx&comma;A&comma;Dx

x=x

(1)

dual_polynomialDx&comma;A&comma;Dx=reverse_polynomialDx&comma;A&comma;Dx

Dx=Dx

(2)

prand_skew_polyx&comma;Dx&comma;A

p10Dx4+83x273Dx24x3Dx+97x262x

(3)

dual_polynomialp&comma;A&comma;Dx

109x262x166+83x273Dx210Dx4+4x3+332xDx

(4)

reverse_polynomialp&comma;A&comma;Dx

10Dx473Dx2166+83Dx2+109x24x3Dx+332Dx62x

(5)

Shift operators

Askew_algebrashift=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_polynomialn&comma;A&comma;Sn=reverse_polynomialn&comma;A&comma;Sn

n=n

(6)

dual_polynomialSn&comma;A&comma;Sn=reverse_polynomialSn&comma;A&comma;Sn

Sn=Sn

(7)

prand_skew_polyn&comma;Sn&comma;A

p74nSn4+6n2+75nSn392n3Sn2+23n450n

(8)

dual_polynomialp&comma;A&comma;Sn

23n450n+74n296Sn4+6n2+39n171Sn3+92n3+552n21104n+736Sn2

(9)

reverse_polynomialp&comma;A&comma;Sn

296Sn4171Sn3+736Sn2+23n492n3Sn2+6Sn3+552Sn2n2+74Sn4+39Sn31104Sn250n

(10)

Eulerian operators

Askew_algebraeuler=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_polynomialx&comma;A&comma;Tx=reverse_polynomialx&comma;A&comma;Tx

x=x

(11)

dual_polynomialTx&comma;A&comma;Tx=reverse_polynomialTx&comma;A&comma;Tx

Tx=Tx

(12)

prand_skew_polyx&comma;Tx&comma;A

p29x261x+10Tx28x3Tx+95x523

(13)

dual_polynomialp&comma;A&comma;Tx

95x5+24x3116x261x23+29x261x+10Tx2+8x3+116x2+122xTx

(14)

reverse_polynomialp&comma;A&comma;Tx

95x5+8Tx+24x3+29Tx2+116Tx116x2+61Tx2+122Tx61x+10Tx223

(15)

`q`-Shift operators

Askew_algebraqshift=Sn&comma;qn&colon;

Only dual polynomials are available.

dual_polynomialqn&comma;A&comma;Sn

qn

(16)

reverse_polynomialqn&comma;A&comma;Sn

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

dual_polynomialSn&comma;A&comma;Sn

Sn

(17)

reverse_polynomialSn&comma;A&comma;Sn

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

prand_skew_polyqn&comma;Sn&comma;A

pSn5+77Sn4+qn95qn51Sn3+qn231qn10Sn

(18)

dual_polynomialp&comma;A&comma;Sn

Sn5+77Sn4+qn51q3+95qnSn3q6+qn231qn10qSnq3

(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 up+vq=0 and ap+bq=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.

Adiff_algebraDx&comma;x&colon;

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

prand_skew_polyx&comma;Dx&comma;degree=2&comma;A

p27Dx2+30x28Dx+16x2+55x+1

(20)

qrand_skew_polyx&comma;Dx&comma;degree=2&comma;A

q47Dx2+87x96Dx+72x259x15

(21)

rrand_skew_polyx&comma;Dx&comma;degree=2&comma;A

r48Dx2+88x+92Dx91x2+43x90

(22)

Pskew_productr&comma;p&comma;A

P1296Dx4+936x1140Dx3+951x2+1423x3074Dx2+4138x3+470x24644x+92Dx1456x44317x31982x26803x+3434

(23)

Qskew_productr&comma;q&comma;A

Q2256Dx4+40x+8932Dx3+77x2+5297x3990Dx2+1581x3+16811x26574x+4920Dx6552x4+8465x320324x2+23105x10990

(24)

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

dPdual_polynomialP&comma;A&comma;fully

dP1456x44317x3+10432x27743x+6176+936x1140Dx3+951x2+1423x5882Dx2+1296Dx4+4138x3+470x2840x2754Dx

(25)

dQdual_polynomialQ&comma;A&comma;fully

dQ6552x4+8465x325067x210517x4570+40x+8932Dx3+77x2+5297x4110Dx22256Dx4+1581x3+16811x26266x5674Dx

(26)

dAdual_algebraA&comma;fully&colon;

dGCDskew_gcdexdP&comma;dQ&comma;Dx&comma;dA

dGCD8873046528Dx2x416267251968Dxx516821817376x6+24619089552Dx2x3+62141670024Dxx4+54622461457x5+32688986544Dx2x2+12743220356x3Dx+39548558994x4+92684791104Dx2x+107268226148Dxx2+147456828087x335565352704Dx2242848996240Dxx149094065426x2+68166926016Dx+35722494760x1481889696&comma;142752162074251x8632772Dx+2115893x218025252x&comma;2097234x23015708x+70718081191591x4959252Dx&comma;184855136Dx2x4+342178656Dxx5283182336x6+512897699Dx2x3571829931Dxx4+1017767816x5+681020553Dx2x23047653889x3Dx+800590201x4+1930933148Dx2x3426608115Dxx2+2633091576x3740944848Dx21210456350Dxx9729185864x2+3444352412Dx+3624982240x5687084608&comma;106193376Dx2x4+117992640Dxx5+62929408x6+294643359Dx2x3437507974Dxx4+41716368x5+391224573Dx2x2553911398x3Dx710110491x4+1109259468Dx2x+57133929Dxx22374836150x3425649168Dx2+2405735818Dxx3008916049x2+667845516Dx+3496133096x+973816096

(27)

The dual of a dual polynomial is the polynomial.

dual_polynomialdGCD1&comma;dA&comma;fully

16821817376x6+54622461457x541787700846x4+396023508183x3217340962694x2+397973484368x178952912848+8873046528x4+24619089552x3+32688986544x2+92684791104x35565352704Dx2+16267251968x5+62141670024x458241151868x3+254982763460x2112093050064x+253536508224Dx

(28)

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

lgcdskew_product&comma;1lcoeff&comma;Dx&comma;A

lgcd91x24843x48+158+Dx2+11x62312Dx

(29)

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

Anormalizerrlcoeffr&comma;Dx

91x24843x48+158+Dx2+11x62312Dx

(30)

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

skew_gcdexP&comma;Q&comma;Dx&comma;A&comma;left_monic1

91x24843x48+158+Dx2+11x62312Dx

(31)

See Also

Ore_algebra

Ore_algebra/skew_algebra

Ore_algebra/skew_gcdex