user_guide:tutorials:polynomials_tutorial

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
tutorial:polynomials_tutorial [2011/07/13 08:57] – [Example: Toric Degeneration] joswiguser_guide:tutorials:polynomials_tutorial [2019/02/04 22:55] (current) – external edit 127.0.0.1
Line 1: Line 1:
-===== Basic Usage of Polynomials in Perl =====+{{page>.:latest:@FILEID@}}
  
-A polynomial always carries a reference to a polynomial ring.  Polynomial in different rings cannot be added, multiplied, or whatever.  The names of the indeterminates are relevant for the output functions only. 
- 
-<code> 
-$r=new Ring(qw(x y)); 
-</code> 
- 
-It may be convenient to use special variable names for the indeterminates. 
- 
-<code> 
-polytope> ($x,$y)=$r->variables; 
-</code> 
- 
-Notice that the variable names are chosen to match the print names; but this is "coincidental". 
- 
-<code> 
-polytope> $p=1+$x+$y; 
-polytope> $q=1+$x+$y+$x*$y; 
-polytope> print($p*$q); 
-1 + 2*x + x^2 + 2*y + 3*x*y + y^2 + x^2*y + x*y^2 
-</code> 
- 
-Standard arithmetic function "+", "-", "*", "^" are defined.  However, due to the fact that their precedence is given in perl it may be necessary to write more parentheses than expected at first sight. 
- 
-Here is one way to produce polytopes from polynomials (as the convex hull of the exponent vectors of all terms). 
- 
-<code> 
-polytope> $npq=newton($p*$q); 
-polytope> print $npq->VERTICES; 
-1 0 0 
-1 2 0 
-1 0 2 
-1 2 1 
-1 1 2 
-polytope> print equal_polyhedra($npq, minkowski_sum(newton($p),newton($q))); 
-1 
-</code> 
- 
-The final "1" means "true": The Newton polytope of the product of two polynomials always equals the Minkowski sum of the Newton polytopes of the factors. 
- 
-===== Example: Toric Degeneration ===== 
- 
-The following describes how to construct the polynomial which describes the toric deformation with respect to a point configuration and a height function.  This is the input data: 
- 
-<code> 
-polytope > $points = new Matrix<Int>([1,0],[0,1]); 
-polytope > $height = new Vector<Int>([2,3]); 
-polytope > $coefficients = new Vector<Rational>([-1/2,1/3]); 
-</code> 
- 
-The following is generic (assuming that the dimensions of the objects above match). 
- 
-<code> 
-polytope > @vars = "s"; map { push @vars, "x$_" } (1..$points->rows()); 
-polytope > $R = new Ring(@vars); 
-polytope > $p=new Polynomial($height|$points,$coefficients,$R); 
-polytope > print $p; 
--1/2*s^2*x1 + 1/3*s^3*x2 
-</code> 
- 
-Notice that the points are given in Euclidean coordinates; that is, if applied, e.g., to the VERTICES of a polytope do not forget to strip the homogenizing coordinate. 
  • user_guide/tutorials/polynomials_tutorial.1310547444.txt.gz
  • Last modified: 2014/01/03 15:45
  • (external edit)