I'm trying to reproduce the plot in Orbital Mechanics by Curtis, but I just can't get it. However, I made the main path by switching to np.arctan2 with np.arctan .
Perhaps I am executing arctan2 ?
import pylab import numpy as np e = np.arange(0.0, 1.0, 0.15).reshape(-1, 1) nu = np.linspace(0.001, 2 * np.pi - 0.001, 50000) M2evals = (2 * np.arctan2(1, 1 / (((1 - e) / (1 + e)) ** 0.5 * np.tan(nu / 2) - e * (1 - e ** 2) ** 0.5 * np.sin(nu) / (1 + e * np.cos(nu))))) fig2 = pylab.figure() ax2 = fig2.add_subplot(111) for Me2, _e in zip(M2evals, e.ravel()): ax2.plot(nu.ravel(), Me2, label = str(_e)) pylab.legend() pylab.xlim((0, 7.75)) pylab.ylim((0, 2 * np.pi)) pylab.show()
Gaps appear in the image below. The function should be smooth and connected at 0 and 2 pi in the range y (0, 2pi), without touching 0 and 2pi.

Graph and equation of the textbook:


At the request of Saulo Castro, they told me that:
"The problem may be with the arctan function, which gives" core values "as output.
So arctan (tan (x)) does not give x if x is the angle in the second or third quadrant. If you draw arctan (tan (x)) from x = 0 to x = Pi, you will find that it has a discontinuous jump at x = Pi / 2.
In your case, instead of writing arctan (arg), I think you should write arctan2 (1, 1 / arg), where arg is the argument to your arctan function. Thus, when arg becomes negative, arctan2 will give an angle in the second quadrant, not the fourth.