The Capricornoid

This curve is called a capricornoid, because it’s supposed to resemble the sign of Capricorn in the zodiac, though I don’t see how. Its equation is

x^2 (x^2+y^2) - 4 (y-x^2-y^2)^2 = 0

so it’s described by a quartic equation in two variables.

What makes this curve fun is that it has two different kinds of singularities. At the point

(x,y) = (0,0)

it has a tacnode, meaning that two different branches of the curve are tangent at that point. More precisely, two different circles kiss the curve at that point.

Further up, at the point

(x,y) = (0,1)

there is a crunode, meaning that two different branches of the curve cross each other, but are not tangent. The word ‘crunode’ is a bit old-fashioned: usually people call a point like this an ordinary double point.

The simplest example of a tacnode is the curve

(y - x^2)(y + x^2) = 0

This consists of a parabola and an upside-down parabola that are tangent at the origin: the tacnode is at the origin.

The basic example of an ordinary double point for a curve in the plane is

xy = 0

This consists of two lines that cross at the origin: the ordinary double point is at the origin. This is, in some obvious sense, a simpler singularity than the tacnode. But can we make this obvious sense precise?

There’s an amazing classification of singularities for surfaces in terms of ADE Dynkin diagrams, and V. I Arnol’d used a variant to classify certain singularities of curves. For example, the curve

x^2 - y^{n+1} = 0

is said to have singularity of type An at the origin. If we take n = 1 we get

(x + y)(x - y) = 0

which has an ordinary double point at the origin: this is another way to draw two lines crossing. If we take n = 2 we get

x^2 - y^3 = 0

which is the simplest example of a spinode. Again this term is a bit old-fashioned: these days people call such a singularity a cusp.

And if we take n = 3, we get

(x + y^2)(x - y^2) = 0

which is the simplest example of a tacnode!

So, there’s a systematic way in which these singularities are getting more complicated:

• crunode (ordinary double point): x^2 - y^2 = 0
• spinode (cusp) x^2 - y^3 = 0
• tacnode x^2 - y^4 = 0

and the series goes on forever.

I drew the capricornoid using the SageMathCloud. Since I’m not very good at computing, I found myself cursing a few times in the process. For example, this system seems to fall asleep if you don’t use it fast enough. When it falls asleep, it forgets that you’ve declared variables—that is, told it that variables are variables. Then it spews out obscure error messages.

But a more mathematically interesting reason for cursing is that it’s a bit hard to draw a tacnode! I said that the curve shown above is a picture of

x^2 (x^2+y^2) - 4 (y-x^2-y^2)^2 = 0

but I was lying. It’s actually a picture of

x^2 (x^2+y^2) - 4 (y-x^2-y^2)^2 = -0.0001

If I draw a picture of

x^2 (x^2+y^2) - 4 (y-x^2-y^2)^2 = 0

I get this:

This doesn’t include the origin, so we don’t get the tacnode—due to some discretization effect or small numerical errors, I guess. This says something interesting about what happens to a curve with a tacnode when you perturb it slightly!

All this is part of my slow and much belated plan to learn algebraic geometry.

Puzzle. Can you get the equation of the capricornoid by taking the equation of an ellipse

f(x,y) = 0

and the equation of another ellipse

g(x,y) = 0

and multiplying them to get

f(x,y) g(x,y) = 0 ?

33 Responses to The Capricornoid

  1. Greg Egan says:

    I believe the answer to the puzzle is “No”: the capricornoid itself doesn’t factor. When direct attempts to factor the quartic failed, I tried to fit a quadratic to six points on one loop, but the equations for the 6 quadratic coefficients were of full rank, i.e. the only quadratic that was zero on all six points was the zero quadratic.

    That said, it’s not hard to find very similar-looking curves by multiplying the quadratics for two ellipses that share a tangent at the same point. For example:

    (2 x^2-x y+2 y^2-2 y) (2 x^2+x y+2 y^2-2 y) = 0

    BTW, Mathematica also misses the tacnode if you plot the capricornoid by the most straightforward method, which is a naive “contour plot” that works by evaluating the function on a finite grid and looking for places where it changes sign from grid point to grid point. Because the quartic near the tacnode changes sign as it crosses both of the two, very close, curves, on an insufficiently fine grid the sign change is invisible. You found a clever workaround for that problem!

    • John Baez says:

      By the way, I used Sage’s implicit_plot function, which they say is a specialization of a contour plot. So, it must be that “most straightforward method”.

      My workaround is surprisingly sensitive to the choice of the number -0.0001: if I choose a somewhat smaller number I get the same picture as if I’d chosen zero, and if I choose a somewhat larger number the tacnode turns into an annoying ‘double crossing’, which you can already start to see for the number -0.0001:

    • X says:

      The best way to do this in Mathematica is

      Plot[Chop[y/.Solve[x^2 (x^2+y^2)-4(y-x^2-y^2)^2==0,y]],{x,-1,1},Frame->True,Axes->False]

      But presumably that wouldn’t work so well if it couldn’t find explicit solutions.

    • Greg Egan says:

      John wrote: if I choose a somewhat larger number the tacnode turns into an annoying ‘double crossing’.

      Right, it’s not ideal. X’s approach where you solve for one of the Cartesian variables, or Jesse and Kram’s polar form, are more accurate and reliable.

      But it’s also a good policy to be wary about computer plots in general. There can be problems ranging from artifacts of the algorithms to actual bugs in any graphics software. The last few versions of Mathematica (at least on the Mac), including the current one, can’t draw circles accurately! (A few years ago, Java couldn’t either.) I told them about this bug a year ago but they still haven’t fixed it.

      • arch1 says:

        Greg, can you say more about the Mathematica bug? (BTW your comment made me realize that regardless how it’s implemented, the “best” rendering of a continuous curve on a discrete lattice may be less well defined than I’d unthinkingly assumed; it now occurs to me that in order to avoid annoying visual artifacts, one might want to minimize variability in the number of dots per unit length along the curve).

      • Greg Egan says:

        In the current version of Mathematica on the Mac, if you draw an arc of a moderately large circle (“large” in the sense that its radius is a couple of orders of magnitude greater than the width of the view, “moderately large” in the sense that two orders of magnitude is not extreme and ought not lead to numerical overflows or underflows), the arc very visibly fails to pass through points that it should.

        For anyone with Mathematica who wants to test this: the image produced by the code below shows a tangent to a circle, in red, passing through the point of tangency, but the circle itself, in blue, which ought to pass through the same point, does not.

        theta = Pi/8;

        point = {Cos[theta], Sin[theta]};

        tangent = {-Sin[theta], Cos[theta]};

        width = height = 1/100;


        On the question of the “best” rendering of a continuous curve, I suppose the gold standard would be something like a perfectly anti-aliased image of a finite-width region whose borders lie at fixed orthogonal distances on either side of the idealised zero-width curve, with some well-defined “capping” behaviour at any endpoints and/or points of discontinuous tangent. In reality, a lot of systems do a pretty good job at this for straight line segments, Bezier curves, and (sometimes) circular arcs, but anything else has to be rendered by combining those elements.

  2. Funny: I had never heard “ordinary double point” used for a curve before, only a surface (e.g. the plane mod negation); likewise I’d only ever heard your simpler singularity called a “node”. Of course this may be a difference between modern mathematician terminology and historical.

    Note that your Wikipedia link to “an amazing classification” is to surface, not curve, singularities. (And no not “Riemann surface” i.e. complex curve.)

    One way to understand why the answer is No to your second problem is to break the capricornoid into its two ellipse-looking parts. Each one will be a C^1 curve, but not C^2 at the tacnode. I suppose this means that the polynomial defining it factors as a product of two functions, each smooth away from the tacnode, but I’m not sure one could write them down.

  3. jessemckeown says:

    Since the equation of the curve mentions x^2 and not x alone, the figure is symmetric about the vertical axis; corollary: were the figure a union of tangent ellipses, the two ellipses would be congruent, and in particular have the same curvature at the tangent point, which does not seem to be the case. One probably ought to drop the words “monodromy”, or “resolution of singularities”, and then calculate them. But since I’m not that clever, I’ll just work out a polar coordinate equation for the same curve… ignoring an unhelpful factor of r^2 we seem to have

    \displaystyle{ r = \frac{4 \sin\theta \pm \sin 2\theta}{3 + \sin^2 \theta} }

  4. HenryB says:

    Real world, physical application? I believe charged particles like electrons and protons move from point to point over the arc of the cycloid. Why? Because cycloidal motion is a combination of a circular motion and a motion in translation. To my mind, the electrical field impels charged particles in straight lines while the magnetic field, at the same time drives them into circular orbits. So what about uncharged particles like neutrons? I’m thinking the curves under discussion in this thread might just be natural orbits for things like neutrons.

  5. Greg Egan says:

    Ah, and these polar equations from Jesse and Kram make it easy to check that, if you want a C^2 curve, you can’t go around a single loop, you need to change loops at the tacnode. There are two distinct osculating circles to the curve at the origin, depending on whether \theta=0 or \theta=\pi, which I guess is part of the definition of a tacnode.

  6. John Baez says:

    By the way, after the

    • crunode (ordinary double point): x^2 - y^2 = 0

    • spinode (cusp) x^2 - y^3 = 0

    • tacnode x^2 - y^4 = 0

    comes the rhamphoid cusp, x^2 - y^5 = 0. This comes from a Greek word meaning ‘beak-like’, because it’s sharper than the ordinary cusp. The ordinary cusp looks like this:

    This is actually a picture of x^3 - y^2 = 0.

    • The higher and higher orders of that just keep becoming flatter in the y-direction and they alternated between power-like and root-like behavior. I suppose these kinds of things happen due to historic accidents (people typically just figure out the simplest couple first and as long as there only are a few around, naming each and every one of them still is somewhat practical) but it’s always kinda weird to me to name early but not at all special terms of an infinite series.

      • John Baez says:

        The name for the singularity at the origin of x^2 - y^{n+1} = 0 is An singularity. Not as romantic as ‘tacnode’ or ‘rhamphoid cusp’, I admit.

        Yes, it’s funny how people get very excited about the first few special cases of a series and then lose interest… but in general the first few cases are the ones that show up the most ‘in practice’.

        For plane curves this happens because the ordinary double point is ‘generic’, in the technical sense. In other words: if you smoothly deform a smooth plane curve with an ordinary double point very slightly, it will still have an ordinary double point.

        The cusp is not generic in this sense, but if you consider a smooth 1-parameter family of smooth curves, it’s generically true that some of these curves have cusps. If you look at the reflection of sunlight in a coffee cup and move the cup, you’ll see what I mean.

        And so on: as we increase n, a smooth n-parameter family of smooth curves will generically encounter more and more complicated singularities.

  7. goldenoj says:

    Thanks for sharing this fascinating curve. I’m always interested in playing with the parameters, and this one was fascinating. (On Desmos

  8. Ah, so that is what a tacnode is! I have been idly wondering ever since encountering the poem Wockyjabber (by Hilbert Schenk, Jr.) years ago. So now I wonder next: What is a semi-tacnode, and after that, what is the Gudermanian, and does it make sense to say that the semi-tacnode operates on it? (I suspect the answer to the latter question is no, but I’d be delighted to be proved wrong about that.)

    Incidentally, the word “Wockyjabber” was my first (and only?) googlewhackblatt, meaning a word that results in exactly one google hit. I had received the poem as an umpteen’th generation photocopy without attribution, and wanted to know who wrote it. That one google hit led me to the book where it had appeared in print. (The Mathematical Magpie, Clifton Fadiman (ed.), 1962.)

    • John Baez says:

      I don’t know what a semi-tacnode is, or even if such a thing exists. I’ll look it up.

      But I’ve known about the Gudermannian ever since I was a kid, because I learned a lot of math from my dad’s 1947 edition of the CRC Handbook of Chemistry and Physics. Back then it had lots of tables of integrals, tables of logarithms, and more… including tables of trig functions! And I believe it discussed the Gudermannian.

      The Gudermannian is a real-valued function on the real numbers, \mathrm{gd}(x), with these wonderful properties, which I can never remember—I had to look them up:

      \begin{array}{c} \sin(\textrm{gd}\,x) =\tanh x \quad \csc(\textrm{gd}\,x) = \coth x \\ \cos(\textrm{gd}\,x) =\textrm{sech}\, x \quad \sec(\textrm{gd}\,x) = \cosh x \\ \tan(\textrm{gd}\,x) =\sinh x \quad \cot(\textrm{gd}\,x)= \textrm{csch}  x  \end{array}

      There are thus many equivalent definitions of the Gudermannian, such as these:

      \displaystyle{ {\rm{gd}}\,x =\arcsin\left(\tanh x \right)=\mathrm{arctan}\left(\sinh x \right)}

      but the only thing I remember is the definition of its inverse function:

      \displaystyle{ \mathrm{gd}^{-1}(x) = \int_0^x \mathrm{sec} u  \, du }

      This is easy to remember because I teach calculus a lot, and the secant is the trickiest trig function to integrate.

      This makes it clear that on a Mercator projection, the distance between a line of constant latitude and the equator is (proportional to) the inverse Gudermannian of the latitude

      So, to convert the distance from a point on the map to its latitude, you use the Gudermannian!

      Part of why I care is that my thesis advisor’s advisor’s advisor’s advisor’s advisor’s advisor’s advisor was Christophe Gudermann… and his advisor was Gauss.

    • John Baez says:

      A quick Google search suggests that ‘semi-tacnode’ is a word made up Hilbert Schenk for his poem Wockyjabber.

  9. For example, this system seems to fall asleep if you don’t use it fast enough. When it falls asleep, it forgets that you’ve declared variables—that is, told it that variables are variables. Then it spews out obscure error messages.

    Free users of get 1 hour of no activity until SageMathCloud idle timeouts a project; also, free projects run on pre-emptible computers, which get rebooted randomly at least once every 24 hours. If you pay (a very small fee) then you can move your projects to machines that aren’t rebooted and increase the idle timeout a lot. We have a huge number of people using SMC for free every day, and without the idle timeout it would cost too much and we would just have to shut down the service entirely.

    • John Baez says:

      Thanks for the explanation. I would have been less annoyed if the error message had made it easier to figure out what was going on—so it might be nice to have a sign pop up that makes it clear to newbies what’s going on.

      But anyway, I eventually figured it out, and I’m realy glad that this free service exists! If I ever do more math programming, I’ll consider paying the fee for extra power.

  10. Scott Hotton says:

    I think the puzzle can be solved by making use of the degree
    form, i.e. the sum of the terms with highest degree in a
    polynomial. To avoid negative signs we can write the
    polynomial as

    h(x,y) = 4(y-x^2-y^2)^2 - x^2(x^2+y^2)

    Suppose there are quadratic polynomials f(x,y), g(x,y) such

    \; h(x,y) = f(x,y) g(x,y),
    \; f(x,y)=0 is an equation for one of the ellipses, and
    \; g(x,y)=0 is an equation for the other ellipse.

    The degree form for h(x,y) is the product of the degree forms
    for f(x,y) and g(x,y). After expanding h(x,y) we get its
    degree form

    h_4(x,y) = 3 x^4 + 7 x^2 y^2 + 4 y^2

    The degree form for f(x,y) is a real quadratic form

    f_2(x,y) = A x^2 + 2 B x y + C y^2

    with positive discriminant, AC - B^2>0. The ellipses would
    have to be mapped to each other by the reflection
    (x,y) \mapsto (-x,y) so the degree form for g(x,y) is

    g_2(x,y) = A x^2 - 2 B x y + C y^2

    The product of the degree forms for f(x,y) and g(x,y) is

    f_2(x,y) g_2(x,y) = A^2 x^4 + (2AC - 4B^2) x^2 y^2 + C^2 y^4

    By equating corresponding coefficients in h_4(x,y) and
    f_2(x,y) g_2(x,y) we get A = \pm \sqrt{3} and C = \pm 2.
    Since the discriminant is positive A and C must have the
    same sign. So 2AC = 4\sqrt{3} and

    4B^2 = 4\sqrt{3}-7 < 0

    This contradicts B \in {\bf R}. Therefore the polynomials
    f(x,y), g(x,y) do not exist.

  11. Mike Stay says:

    The curve looks vaguely like a ram’s head seen from the front. The center part is the head, while the two horns on the left and right curve down, framing it:

  12. A cusp of order 5/2 is a singularity in an otherwise smooth curve that looks like

    y^2 = x^5

    in some coordinates. In my post on the capricornoid, I gave some old-fashioned names for different kinds of cusps, and in a comment I mentioned that the cusp of order 5/2 was called a rhamphoid cusp. Strangely, I wrote all that before knowing that Arnol’d places great significance on the cusp of order 5/2 in the involute of a cubical parabola!

You can use Markdown or HTML in your comments. You can also use LaTeX, like this: $latex E = m c^2 $. The word 'latex' comes right after the first dollar sign, with a space after it.

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.