Ask Your Question
0

Why is this polar polytope incorrect?

asked 2016-09-19 01:23:35 +0100

done_with_fish gravatar image

updated 2016-09-19 01:26:59 +0100

I have a polytope

sage: P = Polyhedron([
....: [-1, -1, -1, -1, -1], 
....: [-1, -1, -1, -1, 6], 
....: [-1, -1, -1, 6, -1], 
....: [-1, -1, 6, -1, -1], 
....: [-1, 6, -1, -1, -1], 
....: [5/2, -1, -1, -1, -1]
....: ])

The polar can be constructed manually with

sage: Pd = Polyhedron(ieqs=[vector([1]+v)for v in P.vertices_list()])
sage: Pd.vertices()
(A vertex at (1, 0, 0, 0, 0), 
 A vertex at (0, 1, 0, 0, 0),
 A vertex at (-2, -1, -1, -1, -1), 
 A vertex at (0, 0, 0, 0, 1), 
 A vertex at (0, 0, 0, 1, 0), 
 A vertex at (0, 0, 1, 0, 0))

This yields a result different from P.polar()

sage: P.polar().vertices()
(A vertex at (12/7, 6/7, 6/7, 6/7, 6/7), 
 A vertex at (0, 0, 0, 0, -6/7), 
 A vertex at (-12/7, 0, 0, 0, 0), 
 A vertex at (0, 0, 0, -6/7, 0), 
 A vertex at (0, -6/7, 0, 0, 0), 
 A vertex at (0, 0, -6/7, 0, 0))

Why am I getting different results? Is this a bug?

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted
1

answered 2016-09-20 10:13:47 +0100

Sébastien gravatar image

I am not an expert of polytopes, but I see that the documentation of P.polar() says that the "original vertices are translated so that their barycenter is at the origin".

I can confirm this by doing:

sage: Pcentred = P - P.center()
sage: Pcentred = - Pcentred           # I don't know why, but Sage .polar() method does this
sage: Pd = Polyhedron(ieqs=[vector([1]+v) for v in Pcentred.vertices_list()])
sage: Pd.vertices()
(A vertex at (12/7, 6/7, 6/7, 6/7, 6/7),
 A vertex at (0, 0, 0, 0, -6/7),
 A vertex at (-12/7, 0, 0, 0, 0),
 A vertex at (0, 0, 0, -6/7, 0),
 A vertex at (0, -6/7, 0, 0, 0),
 A vertex at (0, 0, -6/7, 0, 0))
edit flag offensive delete link more

Comments

I guess this has the advantage of working for any polytope (the polar is only defined for polytopes containing the origin, I think).

done_with_fish gravatar imagedone_with_fish ( 2016-09-20 16:47:46 +0100 )edit

Indeed, polarity of polyhedron requires compactness (to get a good duality property, for example that taking twice the dual gives back the original object) and that the origin is in the interior of the (then compact) polyhedron.

Hence, in order to allow polarity of polytope that do not contain the origin, it is automatically shifted so that its barycenter is the origin. This allows for a somehow "canonical" polar object. Taking another point in the interior as the origin would also work, but not implemented.

jipilab gravatar imagejipilab ( 2018-05-02 16:08:01 +0100 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2016-09-19 01:23:35 +0100

Seen: 343 times

Last updated: Sep 20 '16