# Singular Sets of Algebraic Curves and Surfaces

If we are given a curve f(x,y)=0 in the plane, or a surface f(t,x,y)=0 in 3-space, there are many points on the curve that have a well-defined, unique tangent line, and many points on the surface that have a well-defined unique tangent plane. See the pictures below for some examples

### The nephroid with one of its tangent lines, and the surface F(t,x,y)=0 with one of its tangent planes

If we want to compute the equations for these tangent lines or planes, we can use a fact we learned in multivariable calculus. Since the curve is the level set of the value 0 for the function f(x,y) or f(x,y,z), the tangent line/plane is perpendicular to the gradient vector (df/dx,df/dy) or (df/dx,df/dy,df/dz) evaluated at that point. Since we already know one point that we want the tangent line/plane to go through, this gives enough information to compute the tangent line or plane's equation, as long as the gradient is not the zero vector at that point.

On the other hand, points on the curve/surface where the gradient is the zero vector do not have a well-defined tangent line/plane. These points are highlighted in the pictures below

### Singular points on the nephroid, and on the surface F(t,x,y)=0

These points are called the singular set of the curve/surface, and are defined by the (polynomial) equations
f(x,y)=0
d/dx f(x,y)=0
d/dy f(x,y)=0

for an algebraic curve f(x,y)=0, and by the equations

F(t,x,y)=0
d/dx F(t,x,y)=0
d/dy F(t,x,y)=0
d/dt F(t,x,y)=0

for an algebraic surface F(t,x,y)=0. If one has a method for solving polynomial equations, then one can find the solutions to the above equations and compute the singular set of your curve/surface. For example, the Maple computations shown below give the singularities of the nephroid and the graph surface F(t,x,y)=0.

```
4  2           2       2       2  2       4  2       4      6
nephroid := 12 x  y  - 4 - 15 y  + 12 x  - 24 y  x  + 12 y  x  - 12 y  + 4 y

4      6
- 12 x  + 4 x

2            2  2    2  2       2
F := ((y - t) (2 - t ) + t (4 - t ))  - t  x  (4 - t )

> solve({nephroid=0,diff(nephroid,x)=0,diff(nephroid,y)=0},{x,y});

2
{y = 0, x = 1}, {y = 0, x = -1}, {x = 0, y = RootOf(1 + 2 _Z )}

> solve({F=0,diff(F,x)=0,diff(F,y)=0,diff(F,t)=0},{t,x,y});

t
{x = x, y = 0, t = 0}, {t = t, x = 0, y = 2 --------},
2
- 2 + t

2                    2
{x = 0, y = - 1/2 RootOf(2 + _Z ), t = RootOf(2 + _Z )}

```