Smoothly extending arctan(k tan(t))
I wrote a while back about the function
f(t) = arctan(k tan(t)).
I keep running into this function. Has anybody given this function a name or studied it?
The direct implementation has a discontinuity at /2 but I needed to extend it continuously. Using the two-argument version of inverse tangent fixes this. In Python, the implementation is
arctan2(k*sin(t), cos(t))
Here are plots of the direct and improved version.
Mathematica does not have a function ArcTan2. Instead, it overloads the ArcTan function to take either one or two arguments. But beware: the two-argument version of ArcTan in Mathematica takes its arguments in the opposite order of functions like atan2 in C.
This extends the continuous range from [0, /2] to [0, ], but there's still a discontinuity at . The trick to extending further is to reduce the argument mod , subtract off the reduced argument, then add the original argument back in. In Python:
arctan2(k*sin(t%pi), cos(t%pi)) - t%pi + t
This plot shows the extension works.
Now the function extends smoothly to the entire real line.
Here's a Mathematica implementation of the smooth extension.
g[x_, k_] := Module[{y = Mod[x, Pi]}, ArcTan[Cos[y], k Sin[y]] - y + x]
The function g(x, k) is an increasing function of x for fixed k 0, and its inverse is the same function replacing k with 1/k:
g( g(x, 1/k), k ) = x.
Here's a plot of the function g with the linear trend subtracted, letting k vary from 1 to 10.
This was made with the following code.
Plot[Table[g[x, n] - x, {n, 1, 10}], {x, 0, Pi}]
As k increases, the amplitude increases, and the peaks move away from the center. You can confirm this by taking the derivative. The maximum occurs at arccos((k/(k+1))) and so the maxima locations converge to 0 as k . By symmetry the minima locations converge to .You can also verify that the maximum value is arctan(k), and so the maxima converge to /2, and by symmetry the minima converge to -/2;.
This plot looks similar to the plot of true anomaly for a highly elliptical orbit. I'm sure they're related, but I haven't worked out exactly how.
If we add back in the linear trend that we'd subtracted off, we see that for large k, g(x, k) is a smooth approximation to a stair-step function, analogous to the soft maximum function.
Related postsThe post Smoothly extending arctan(k tan(t)) first appeared on John D. Cook.