In the previous post I said that the Jacobi functions are like trig functions. That’s true if you look along the real axis. If you look at the rest of the complex plane you’ll see how they can be very different.

The sine function is periodic along the real axis, but it grows exponentially along the imaginary axis. I mentioned parenthetically last time that the Jacobi functions are not just periodic but doubly periodic. That means that not only are they periodic as you move along the real axis, they’re periodic when you move along **any **line in the complex plane [1].We’ll illustrate this with some plots.

It will make our code more compact if we first define a function to split a complex number into its real and imaginary parts.

pair[z_] := {Re[z], Im[z]}

Here’s what it looks like when you plot the real and imaginary parts of the sine function along the line (10 + 0.5*i*)*t*.

ParametricPlot[ pair[ Sin[(0.5 I + 10)t] ], {t, 0, 10}, PlotRange -> All ]

By contrast, here’s a plot of the sn function along the line 1.25 + *it*.

ParametricPlot[ pair[ JacobiSN[1.25 + I t, 0.5] ], {t, 0, 10} ]

It’s a closed loop because sn is periodic in every direction. (By the way, the curve looks like an egg. More posts about egg-shaped curves starting here.)

When you plot sn along various lines you’ll always get closed curves, but you won’t always get such round curves. Here’s an example that doesn’t look like a closed loop because the curve turns around sharply at each end.

ParametricPlot[ pair[ JacobiCN[ (I + 0.5) t, 0.5] ], {t, 0, 10} ]

To show that it really is periodic, we’ll add a vertical time dimension to visualize how the curve is traced out over time.

triple[z_, t_] = {Re[z], Im[z], t} ParametricPlot3D[ triple[JacobiSN[(I + 0.5) t, 0.5], 0.1 t], {t, 0, 20} ]

Here’s another curve plotting sn along a different line.

ParametricPlot[ pair[ JacobiSN[(0.9 + I) t, 0.5] ], {t, 0, 55}, PlotRange -> All, PlotPoints -> 100 ]

As before, we can add a time dimension to imagine how the curve is traced out.

ParametricPlot3D[ triple[JacobiSN[(0.9 + I) t, 0.5], 0.1 t], {t, 0, 150}, PlotRange -> All, PlotPoints -> 200 ]

Here’s a variation on the plot above that stretches the vertical axis so you can better see what’s going on.

ParametricPlot3D[ triple[JacobiSN[(0.9 + I) t, 0.5], 0.2 t], {t, 0, 150}, PlotRange -> All, PlotPoints -> 200 ]

[1] To be more precise, elliptic functions are periodic in two linearly independent directions, and thus in any direction that’s an integer linear combination of those two directions. So they’re exactly periodic in a countable number of directions almost periodic in every other direction.