Ore_algebra[dual_algebra] - return the dual algebra of an Ore algebra, that is, its opposite ring
Ore_algebra[dual_polynomial] - map a skew polynomial of an Ore algebra to the dual algebra
Ore_algebra[reverse_algebra] - return an Ore algebra with opposite normal forms
Ore_algebra[reverse_polynomial] - change normal form of a skew polynomial in an Ore algebra
|
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 to denote all indeterminates
|
p
|
-
|
skew polynomial
|
|
|
|
|
Description
|
|
|
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 (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
|
|
>
|
|
Differential operators
>
|
|
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.
>
|
|
| (1) |
>
|
|
| (2) |
>
|
|
| (3) |
>
|
|
| (4) |
>
|
|
| (5) |
Shift operators
>
|
|
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.
>
|
|
| (6) |
>
|
|
| (7) |
>
|
|
| (8) |
>
|
|
| (9) |
>
|
|
| (10) |
Eulerian operators
>
|
|
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.
>
|
|
| (11) |
>
|
|
| (12) |
>
|
|
| (13) |
>
|
|
| (14) |
>
|
|
| (15) |
`q`-Shift operators
>
|
|
Only dual polynomials are available.
>
|
|
| (16) |
>
|
|
>
|
|
| (17) |
>
|
|
>
|
|
| (18) |
>
|
|
| (19) |
Computation of left gcds and left lcms
The function Ore_algebra[skew_gcdex] inputs two polynomials p and q and computes a list such that and . The polynomial g is a right gcd of p and q. Applying the dualization operator yields a list such that and , where is a left gcd of and . The following method to compute left gcds is based on this idea.
>
|
|
Define two polynomials P and Q that share a left common divisor.
>
|
|
| (20) |
>
|
|
| (21) |
>
|
|
| (22) |
>
|
|
| (23) |
>
|
|
| (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.
>
|
|
| (25) |
>
|
|
| (26) |
>
|
|
>
|
|
| (27) |
The dual of a dual polynomial is the polynomial.
>
|
|
| (28) |
This is the left gcd, up to renormalization (by multiplication by a rational function on the right).
>
|
|
| (29) |
This is also the built-in left factor r, up to renormalization (by multiplication by a rational function on the right).
>
|
|
| (30) |
This calculation is that performed by Ore_algebra[skew_gcdex] with the options and .
>
|
|
| (31) |
|
|