# 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.

Two articles online are helpful:

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] – J. M.'s ennui Jun 29 '15 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. – J. M.'s ennui Jun 29 '15 at 13:47
• Related/duplicate: mathematica.stackexchange.com/q/61535, mathematica.stackexchange.com/q/78254 – Michael E2 Jun 29 '15 at 13:51
• Just wondering: when will GroebnerBasis gain support for F4/F5 methods? – kirma Jun 29 '15 at 14:26
• @kirma, we can only keep hoping… – J. M.'s ennui Jun 29 '15 at 14:57

## 1 Answer

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]]] 