# How to convert a rational parametric plane curve into implicit form?

This problem is generated from another Green's theorem related question of mine. And here is a forward of the same problem in math.stackexchange.

The original equation of the plane curve is not in rational parametric form.

In order to calculate the symbolic solutions of the intersections of the curve itself, I thought its implicit equation form might be helpful or whatever. Nevertheless, such a conversion is interesting itself.

So after simple treatment, I have the following rational parametric equation of the same plane curve as in another problem:

$$\begin{cases} x=& \dfrac{2 t \left(3 t^4+50 t^2-33\right)}{\left(t^2+1\right)^3} \\ y=& \dfrac{2 \left(7 t^6-60 t^4+15 t^2+2\right)}{\left(t^2+1\right)^3} \\ \end{cases}$$

How can I convert it into implicit form :$F(x,y)=0$? My difficulty mainly lies in how to implement it via my familiar computer algebra systems, i.e., Mathematica, or Maple.

The answer by Macaulay2 is definitely acceptable, however, for a beginner like me, there are less documents on the commands than Maple or Mathematica.

• The answer is already in one of your tags: GroebnerBasis[Thread[{x, y} == (* equations *)], {x, y}, t] Jun 29, 2015 at 13:35
• I'm not at a computer now, so I can't write an answer. But I notice that you've been pointed to Cox/Little/O'Shea at math.SE; you'd do well to read that book. Jun 29, 2015 at 13:47
• Related/duplicate: mathematica.stackexchange.com/q/61535, mathematica.stackexchange.com/q/78254 Jun 29, 2015 at 13:51
• Just wondering: when will GroebnerBasis gain support for F4/F5 methods? Jun 29, 2015 at 14:26
• @kirma, we can only keep hoping… Jun 29, 2015 at 14:57

As noted, what you want is to use a Gröbner basis to eliminate the parameter:

curve = 2 {t (3 t^4 + 50 t^2 - 33), 7 t^6 - 60 t^4 + 15 t^2 + 2}/(t^2 + 1)^3;
implicit = GroebnerBasis[Thread[{x, y} == curve], {x, y}, t] // First
550731776 - 41620992 x^2 + 585816 x^4 + 625 x^6 - 182250 x^4 y -
41620992 y^2 + 1171632 x^2 y^2 + 1875 x^4 y^2 + 364500 x^2 y^3 +
585816 y^4 + 1875 x^2 y^4 - 36450 y^5 + 625 y^6


To check that the implicit equation obtained is correct, do this:

implicit == 0 /. Thread[{x, y} -> curve] // Simplify
True


If you want to learn more about how Gröbner bases work, Cox/Little/O'Shea is a very good place to start.

## Bonus

A simpler set of parametric equations results if you do the Weierstrass substitution:

curve2 = curve /. t -> -Tan[u/2] // FullSimplify
{9 Sin[2 u] + 5 Sin[3 u], 9 Cos[2 u] - 5 Cos[3 u]}


I will now guess that you obtained the previous set of equations exactly through the reverse procedure. If you wanted to obtain the implicit Cartesian equation from this, here is what you could have done instead:

GroebnerBasis[Append[Thread[{x, y} == curve2] // TrigExpand, Cos[u]^2 + Sin[u]^2 == 1],
{x, y}, {Cos[u], Sin[u]}] // First


and the same implicit expression is returned.

Let's end with a plot:

ParametricPlot[{9 Sin[2 u] + 5 Sin[3 u], 9 Cos[2 u] - 5 Cos[3 u]},
{u, -π, π}, Axes -> None, Frame -> True,
PlotStyle -> Directive[Thick, RGBColor[7/19, 37/73, 22/31]]] 