Difference between revisions of "ApCoCoA-1:Weyl.WMul"

From ApCoCoAWiki
(fixed formula tag)
(14 intermediate revisions by 5 users not shown)
Line 1: Line 1:
 
   <command>
 
   <command>
     <title>Weyl.GBasis</title>
+
     <title>Weyl.WMul</title>
     <short_description>computing a Groebner basis in a weyl algebra.</short_description>
+
     <short_description>Computes the product <tt>F*G</tt> of Weyl polynomial <tt>F</tt> and <tt>G</tt> in normal form.</short_description>
 
<syntax>
 
<syntax>
Weyl.GBasis(I):LIST
+
Weyl.WMul(F:POLY,G:POLY):POLY
 
</syntax>
 
</syntax>
 
     <description>
 
     <description>
 +
This method multiplies two Weyl polynomials <tt>F</tt> and <tt>G</tt> and returns <tt>F*G</tt> as a Weyl polynomial in normal form.
  
This function computes a Groebner Basis for an ideal in a Weyl Algebra. It is currently completely independent from the other methods of package Weyl and does NOT use its data types.  
+
<itemize>
 +
<item>@param <em>F</em> A Weyl polynomial.</item>
 +
<item>@param <em>G</em> A Weyl polynomial.</item>
 +
<item>@return The product <tt>F*G</tt> in normal form.</item>
 +
</itemize>
  
The input is an ideal in a ring, having 2n indeterminates. The last n indeterminates are assumed to be the derivatives. All polynomails are assumed to be in their normal form with respect to the indeterminates' commutators, e.g. all <formula>x_i </formula> are in front of all <formula>\partial_i</formula>, so the  'normal' CoCoA polynomials can be (and are) used to store the weyl polynomials. The output is again a list of polynomials in a normal ring, containing the Weyl-GBasis polynomials in their normal forms.
+
<example>
 +
A1::=QQ[x,d]; -- Define appropriate ring
 +
Use A1;
 +
F:=x; G:=d;
 +
Weyl.WMul(F,G);
 +
xd
 +
-------------------------------
 +
Weyl.WeylMul(G,F);
 +
xd + 1
 +
-------------------------------
 +
Weyl.WMul(Weyl.WMul(G,F)-2G,F^3+G);
 +
x^4d - 2x^3d + 4x^3 + xd^2 - 6x^2 - 2d^2 + d
 +
-------------------------------
 +
-- If you want to multiply Weyl polynomials that are not in normal form say for example F=d^2x^3-2dx^2+7 and G=2d^3x-5xd+3, then
 +
-- first convert them into normal form before multiplication.
 +
-------------------------------
 +
F:=Weyl.WNormalForm([[d^2,x^3],[-2d,x^2],[7]]);
 +
F;
 +
x^3d^2 + 4x^2d + 2x + 7
 +
-------------------------------
 +
G:=Weyl.WNormalForm([[2d^3,x],[-5x,d],[3]]);
 +
G;
 +
2xd^3 - 5xd + 6d^2 + 3
 +
-------------------------------
 +
Weyl.WMul(F,G);
 +
2x^4d^5 - 5x^4d^3 + 18x^3d^4 - 27x^3d^2 + 36x^2d^3 + 14xd^3 - 18x^2d + 12xd^2 - 35xd + 42d^2 + 6x + 21
 +
-------------------------------
 +
Weyl.WMul(G,F);
 +
2x^4d^5 - 5x^4d^3 + 32x^3d^4 - 32x^3d^2 + 148x^2d^3 + 14xd^3 - 38x^2d + 216xd^2 - 35xd + 42d^2 - 4x + 72d + 21
 +
-------------------------------
 +
Weyl.WMul(Weyl.WNormalForm([[d^2,x^3],[-2d,x^2],[7]]),Weyl.WNormalForm([[2d^3,x],[-5x,d],[3]]));
 +
2x^4d^5 - 5x^4d^3 + 18x^3d^4 - 27x^3d^2 + 36x^2d^3 + 14xd^3 - 18x^2d + 12xd^2 - 35xd + 42d^2 + 6x + 21
 +
-------------------------------
  
This implementation is not the final one, but currently due to requests enabled. In a later stage, the packages  data types should be used.
+
</example>
 +
<example>
 +
A2::=ZZ/(101)[x[1..2],y[1..2]];
 +
Use A2;
 +
Weyl.WMul(x[1]^11,y[1]^11);
 +
x[1]^11y[1]^11
 +
-------------------------------
 +
Weyl.WMul(y[1]^11,x[1]^11);
 +
x[1]^11y[1]^11 + 20x[1]^10y[1]^10 - 10x[1]^9y[1]^9 + 33x[1]^8y[1]^8 + 23x[1]^7y[1]^7 - 17x[1]^6y[1]^6 - x[1]^5y[1]^5 -
 +
18x[1]^4y[1]^4 - 36x[1]^3y[1]^3 - 36x[1]^2y[1]^2 + 26x[1]y[1] - 16
 +
 
 +
-------------------------------
 +
Weyl.WMul(y[1]^21,x[1]^21);
 +
x[1]^21y[1]^21 + 37x[1]^20y[1]^20 + 27x[1]^19y[1]^19 + 17x[1]^18y[1]^18 - 37x[1]^17y[1]^17 + 43x[1]^16y[1]^16 - 17x[1]^15y[1]^15 -
 +
27x[1]^14y[1]^14 - 5x[1]^13y[1]^13 - 49x[1]^12y[1]^12 - 39x[1]^11y[1]^11 - 25x[1]^10y[1]^10 - 40x[1]^9y[1]^9 + 46x[1]^8y[1]^8 -
 +
35x[1]^7y[1]^7 - 47x[1]^6y[1]^6 - 30x[1]^5y[1]^5 + 45x[1]^4y[1]^4 + 40x[1]^3y[1]^3 + 3x[1]^2y[1]^2 + 41x[1]y[1] + 26
 +
 
 +
-------------------------------
 +
--this computation is too slow with Weyl.WeylMul(F,G)
 +
</example>
 
   </description>
 
   </description>
 
     <seealso>
 
     <seealso>
       <see>Weyl.WeylIdeal</see>
+
       <see>Weyl.WNormalForm</see>
      <see>Weyl.WeylPolynom</see>
 
      <see>Weyl.NewWeylIdeal</see>
 
 
     </seealso>
 
     </seealso>
 
     <types>
 
     <types>
       <type>cocoaserver</type>
+
       <type>polynomial</type>
 
     </types>
 
     </types>
     <key>heldt</key>
+
     <key>weyl.wmul</key>
     <key>weyl.gbasis</key>
+
     <key>wmul</key>
     <wiki-category>Package_Weyl</wiki-category>
+
     <wiki-category>Package_weyl</wiki-category>
 
   </command>
 
   </command>

Revision as of 13:31, 10 July 2009

Weyl.WMul

Computes the product F*G of Weyl polynomial F and G in normal form.

Syntax

Weyl.WMul(F:POLY,G:POLY):POLY

Description

This method multiplies two Weyl polynomials F and G and returns F*G as a Weyl polynomial in normal form.

  • @param F A Weyl polynomial.

  • @param G A Weyl polynomial.

  • @return The product F*G in normal form.

Example

A1::=QQ[x,d];	-- Define appropriate ring
Use A1;
F:=x; G:=d;
Weyl.WMul(F,G);
xd
-------------------------------
Weyl.WeylMul(G,F);
xd + 1
-------------------------------
Weyl.WMul(Weyl.WMul(G,F)-2G,F^3+G);
x^4d - 2x^3d + 4x^3 + xd^2 - 6x^2 - 2d^2 + d
-------------------------------
-- If you want to multiply Weyl polynomials that are not in normal form say for example F=d^2x^3-2dx^2+7 and G=2d^3x-5xd+3, then 
-- first convert them into normal form before multiplication.
-------------------------------
F:=Weyl.WNormalForm([[d^2,x^3],[-2d,x^2],[7]]);
F;
x^3d^2 + 4x^2d + 2x + 7
-------------------------------
G:=Weyl.WNormalForm([[2d^3,x],[-5x,d],[3]]);
G;
2xd^3 - 5xd + 6d^2 + 3
-------------------------------
Weyl.WMul(F,G);
2x^4d^5 - 5x^4d^3 + 18x^3d^4 - 27x^3d^2 + 36x^2d^3 + 14xd^3 - 18x^2d + 12xd^2 - 35xd + 42d^2 + 6x + 21
-------------------------------
Weyl.WMul(G,F);
2x^4d^5 - 5x^4d^3 + 32x^3d^4 - 32x^3d^2 + 148x^2d^3 + 14xd^3 - 38x^2d + 216xd^2 - 35xd + 42d^2 - 4x + 72d + 21
-------------------------------
Weyl.WMul(Weyl.WNormalForm([[d^2,x^3],[-2d,x^2],[7]]),Weyl.WNormalForm([[2d^3,x],[-5x,d],[3]]));
2x^4d^5 - 5x^4d^3 + 18x^3d^4 - 27x^3d^2 + 36x^2d^3 + 14xd^3 - 18x^2d + 12xd^2 - 35xd + 42d^2 + 6x + 21
-------------------------------

Example

A2::=ZZ/(101)[x[1..2],y[1..2]];
Use A2;
Weyl.WMul(x[1]^11,y[1]^11);
x[1]^11y[1]^11
-------------------------------
Weyl.WMul(y[1]^11,x[1]^11);
x[1]^11y[1]^11 + 20x[1]^10y[1]^10 - 10x[1]^9y[1]^9 + 33x[1]^8y[1]^8 + 23x[1]^7y[1]^7 - 17x[1]^6y[1]^6 - x[1]^5y[1]^5 - 
18x[1]^4y[1]^4 - 36x[1]^3y[1]^3 - 36x[1]^2y[1]^2 + 26x[1]y[1] - 16

-------------------------------
Weyl.WMul(y[1]^21,x[1]^21);
x[1]^21y[1]^21 + 37x[1]^20y[1]^20 + 27x[1]^19y[1]^19 + 17x[1]^18y[1]^18 - 37x[1]^17y[1]^17 + 43x[1]^16y[1]^16 - 17x[1]^15y[1]^15 - 
27x[1]^14y[1]^14 - 5x[1]^13y[1]^13 - 49x[1]^12y[1]^12 - 39x[1]^11y[1]^11 - 25x[1]^10y[1]^10 - 40x[1]^9y[1]^9 + 46x[1]^8y[1]^8 - 
35x[1]^7y[1]^7 - 47x[1]^6y[1]^6 - 30x[1]^5y[1]^5 + 45x[1]^4y[1]^4 + 40x[1]^3y[1]^3 + 3x[1]^2y[1]^2 + 41x[1]y[1] + 26

-------------------------------
--this computation is too slow with Weyl.WeylMul(F,G)

See also

Weyl.WNormalForm