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:

  1. http://citeseerx.ist.psu.edu/viewdoc/download?rep=rep1&type=pdf&doi=
  2. http://www.mmrc.iss.ac.cn/~xgao/paper/gao-par.pdf

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.

  • 2
    $\begingroup$ The answer is already in one of your tags: GroebnerBasis[Thread[{x, y} == (* equations *)], {x, y}, t] $\endgroup$ Jun 29, 2015 at 13:35
  • 1
    $\begingroup$ 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. $\endgroup$ Jun 29, 2015 at 13:47
  • 2
    $\begingroup$ Related/duplicate: mathematica.stackexchange.com/q/61535, mathematica.stackexchange.com/q/78254 $\endgroup$
    – Michael E2
    Jun 29, 2015 at 13:51
  • 1
    $\begingroup$ Just wondering: when will GroebnerBasis gain support for F4/F5 methods? $\endgroup$
    – kirma
    Jun 29, 2015 at 14:26
  • 1
    $\begingroup$ @kirma, we can only keep hoping… $\endgroup$ Jun 29, 2015 at 14:57

1 Answer 1


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

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


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

a star is born


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.