Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
user_guide:tutorials:regular_subdivisions [2019/01/25 13:40] – ↷ Page moved from user_guide:regular_subdivisions to user_guide:tutorials:regular_subdivisions oroehrig | user_guide:tutorials:regular_subdivisions [2019/02/04 22:55] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ===== Regular subdivisons ===== | + | {{page> |
- | //Regular subdivsions// | ||
- | |||
- | < | ||
- | polytope > $M = new Matrix< | ||
- | polytope > $w = new Vector< | ||
- | polytope > $S = new fan:: | ||
- | polytope > print $S-> | ||
- | |||
- | {0 1 3 4} | ||
- | {3 4 5} | ||
- | </ | ||
- | |||
- | The six points (given by the six rows of the matrix '' | ||
- | |||
- | We may visualize the regular subdivision if it is at most three-dimensional. | ||
- | < | ||
- | polytope > $S-> | ||
- | </ | ||
- | If you use javaview for visualization, | ||
- | |||
- | {{: | ||
- | |||
- | Note that the quadrilateral contains point 2 in its interior and that this point is colored black. This corresponds to the fact that the lifted point 2 lies above the convex hull of the lifted points 0,1,3 and 4. Therefore the maximal cell describing the quadrilateral does not contain the point 2. We may change the lifting function by giving point 2 height '' | ||
- | |||
- | < | ||
- | polytope > $w = new Vector< | ||
- | polytope > $S = new fan:: | ||
- | polytope > print $S-> | ||
- | |||
- | {0 1 2 3 4} | ||
- | {3 4 5} | ||
- | |||
- | polytope > $S-> | ||
- | </ | ||
- | |||
- | {{: | ||
- | |||
- | This new height function generates the same polyhedral complex, yet a different subdivision of the point set. Note that the maximal cell that describes the quadrilateral now contains the point 2, but it is not a vertex of that cell. This is the reason for the yellow coloring. This corresponds to the fact that its lifting lies in the convex hull of the lifted quadrilateral, | ||
- | |||
- | < | ||
- | polytope > $w = new Vector< | ||
- | polytope > $S = new fan:: | ||
- | polytope > print $S-> | ||
- | |||
- | {0 2 3} | ||
- | {0 1 2} | ||
- | {1 2 4} | ||
- | {2 3 4} | ||
- | {3 4 5} | ||
- | |||
- | polytope > $S-> | ||
- | </ | ||
- | |||
- | {{: | ||
- | |||
- | Indeed, the regular subdivision arising from this height function is a triangulation. Since in this case point 2 is a vertex of the subdivision it is colored red as well. | ||
- | |||
- | ==== Generic Weights ==== | ||
- | |||
- | The weights '' | ||
- | |||
- | < | ||
- | polytope > $SC = new topaz:: | ||
- | </ | ||
- | Note that '' | ||
- | Now we can ask for many other properties, e.g. | ||
- | < | ||
- | polytope > print $SC-> | ||
- | 6 10 5 | ||
- | polytope > print $SC-> | ||
- | 1 3 1 0 | ||
- | </ | ||
- | Check the properties of '' | ||
- | |||
- | |||
- | |||
- | ==== Non-generic Weights ==== | ||
- | |||
- | If your weights are not generic or you are unsure, then you should create a '' | ||
- | |||
- | < | ||
- | polytope > $M = new Matrix< | ||
- | polytope > $w = new Vector< | ||
- | polytope > $S = new fan:: | ||
- | polytope > $PC = $S-> | ||
- | polytope > print $PC-> | ||
- | |||
- | {0 1 2 4} | ||
- | {2 4 5 7 8} | ||
- | {1 2 3 7} | ||
- | {1 2 4 7} | ||
- | {1 4 6 7 8} | ||
- | |||
- | </ | ||
- | |||
- | As with an simplicial complex you can do some computation with it. For example: | ||
- | < | ||
- | polytope > print $PC-> | ||
- | 8 18 16 5 | ||
- | polytope > print $PC-> | ||
- | |||
- | polytope > $PC-> | ||
- | </ | ||
- | {{: | ||
- | |||
- | Check the interactive help to get more information. | ||
- | For the image we have used the javaview option //Explode Group of Geometries// | ||
- | |||
- | ==== Tropical Plücker Vectors and Matroid Decompositions of Hypersimplices ==== | ||
- | |||
- | A //tropical Plücker vector// (which is a special lifting function on the vertices of the // | ||
- | |||
- | < | ||
- | polytope > $p=new Vector< | ||
- | polytope > $msd=regular_subdivision(hypersimplex(2, | ||
- | </ | ||
- | |||
- | Each cell of this subdivision is a //matroid polytope//, that is, the convex hull of characteristic vectors of the bases of some matroid on //n// elements of rank // | ||
- | |||
- | < | ||
- | polytope > print rows_labeled($msd, | ||
- | 0:12 13 14 23 24 | ||
- | 1:13 14 23 24 34 | ||
- | </ | ||
- | |||
- | In this case the // | ||
- | |||
- | ===== Secondary cone and regularity of subdivisions ===== | ||
- | The set of all the weight vectors which induce the same regular subdivision form a convex cone. In this section we will learn how to compute that cone with polymake and even how we can check whether a given subdivision is regular or not. | ||
- | |||
- | ==== Secondary Cone of a Regular Subdivision ==== | ||
- | Let us look at the following regular subdivision (using homogeneous coordinates): | ||
- | < | ||
- | polytope > $points = new Matrix([[1, | ||
- | polytope > $cells = new Array< | ||
- | polytope > $S = new fan:: | ||
- | </ | ||
- | we can visualize the subdivision with the following command: | ||
- | < | ||
- | polytope > $S-> | ||
- | </ | ||
- | {{: | ||
- | |||
- | As one can see from the picture this subdivision should be regular, since we can easily find a weight vector which induces this subdivision. Just lift all the points in the inner square to 0 and the points on the outer square to 1. But now we want to take a look at all vectors which induce this subdivision. This can be achieved by using the method '' | ||
- | < | ||
- | polytope > $sc = $S-> | ||
- | polytope > print $sc-> | ||
- | 4 | ||
- | |||
- | polytope > print $sc-> | ||
- | 1 0 0 1 0 -1/2 -1/2 0 | ||
- | |||
- | polytope > print $sc-> | ||
- | 3/2 3/2 -1/2 -1/2 1 1 0 0 | ||
- | -26/19 12/19 34/19 -4/19 -11/19 8/19 1 0 | ||
- | 50/49 -8/49 10/49 68/49 40/49 11/49 20/49 1 | ||
- | </ | ||
- | We see that this cone is 4-dimensional with a 3-dimensional lineality space. Every vector of the **interior** of that cone induces weights that produces the same regular subdivision. The vectors on the boundary give rise to a coarsening. As you see by looking at the coordinates, | ||
- | |||
- | With the options '' | ||
- | < | ||
- | polytope > $sc_fixed = $S-> | ||
- | |||
- | polytope > print $sc_fixed-> | ||
- | 1 | ||
- | |||
- | polytope > print $sc_fixed-> | ||
- | 1 1 1 1 0 0 0 0 | ||
- | |||
- | polytope > print $sc_fixed-> | ||
- | |||
- | </ | ||
- | Now you see that the lineality space of that cone is gone. The only way to lift our points now is by raising all points on the outer square to the same height which should be greater than 0. | ||
- | |||
- | ==== Regularity of Subdivisions ==== | ||
- | You might run into the situation where you want to check whether a subdivision is regular or not. Don't worry, polymake comes to rescue along with it's side-kick the '' | ||
- | < | ||
- | polytope > print is_regular($points, | ||
- | true <0 0 1 1 0 0 1/2 1/2> | ||
- | |||
- | polytope > $lambda = new Vector(" | ||
- | |||
- | polytope > print regular_subdivision($points, | ||
- | {4 5 6 7} | ||
- | {2 3 6 7} | ||
- | {1 2 5 6} | ||
- | {0 3 4 7} | ||
- | {0 1 4 5} | ||
- | </ | ||
- | As you can see polymake tells us that our subdivision is indeed regular. And the vector '' | ||
- | < | ||
- | polytope > $nreg_cells = new Array< | ||
- | polytope > $nreg_pc = new fan:: | ||
- | polytope > $nreg_pc-> | ||
- | </ | ||
- | {{: | ||
- | |||
- | This is quite similar to the '' | ||
- | < | ||
- | polytope > print is_regular($points, | ||
- | false <> | ||
- | </ | ||
- | Just as expected polymake tells us that the subdivision is not regular. But although there is no weight function which induces this particular subdivision we can still create a '' | ||
- | < | ||
- | polytope > $nreg_sub = new fan:: | ||
- | polytope > $nreg_sc = $nreg_sub-> | ||
- | polytope > print $nreg_sc-> | ||
- | 4 | ||
- | </ | ||
- | This might be weird at first. Although our subdivision is not regular (meaning there does not exist a secondary cone for that subdivision) the secondary cone seems to be 4 dimensional. Let us investigate. | ||
- | < | ||
- | polytope > print $nreg_sc-> | ||
- | 1 1 1 1 0 0 0 0 | ||
- | |||
- | polytope > print $nreg_sc-> | ||
- | 3/2 3/2 -1/2 -1/2 1 1 0 0 | ||
- | -26/19 12/19 34/19 -4/19 -11/19 8/19 1 0 | ||
- | 50/49 -8/49 10/49 68/49 40/49 11/49 20/49 1 | ||
- | </ | ||
- | This looks familiar, doesn' |