Where equilibria live, what the linearization says about them, and what the nullcline geometry can and cannot reveal on its own. Click anywhere on the plane to launch a trajectory.
© 2026 Theodore P. Pavlic (MIT License)
Click the plane to show trajectories. A few of them reveal behavior the nullclines alone hide, like the fast-slow jumps of FitzHugh–Nagumo once its time-scale separation sharpens. The initial-condition dots stay fixed as the sliders move, and so the same starting points carry across parameter changes for easy comparison.
In the figure, the blue line is the x-nullcline ẋ = 0 and the red line is the y-nullcline ẏ = 0. The flow arrows take the color of the rate that drives them: on the blue ẋ = 0 line only y changes, which colors those arrows red (the ẏ color), and on the red ẏ = 0 line only x changes, which colors those arrows blue (the ẋ color). The open orange circle marks the equilibrium where the two nullclines cross, and the faint gray lines are the coordinate axes.
Nullclines are the curves where one rate is zero. On the blue x-nullcline ẋ = 0, and so the flow there can only point straight up or down; on the red y-nullcline ẏ = 0, and so it points straight left or right. The two curves carve the plane into regions where ẋ and ẏ each keep one sign, and stepping across a nullcline flips that one component. Where the curves cross, both rates vanish at once, which is an equilibrium. The vector-field arrows in the plot show which way the flow actually runs in each region. In this example, the nullclines combined with the direction of flow across them are consistent with an unstable equilibrium (drawn here as an open circle) because the arrows point away from the crossing on every side. They do not settle whether it is an unstable node or an unstable focus; that distinction turns on the discriminant (the trace and determinant) and not on the crossing geometry.
The angle at which the nullclines cross hints at the type of equilibrium but does not fix its stability. Their relative steepness feeds the determinant, which separates saddles (negative determinant) from nodes and foci (positive). What the angle cannot give is the trace, and the trace is what decides stable versus unstable. A stable focus and an unstable one can share the exact same pair of nullclines, and so reading stability off the picture takes the flow arrows, not the angle. The linear tab shows this directly: hold both slopes fixed and slide a row gain, and the focus flips stability while the nullclines stay put.
In the map and in both plots, color marks stability (green stable, orange unstable, and purple saddle), and fill marks attraction: a filled dot is an attractor, and an open dot is not. A center is the boundary case, stable but not attracting, and so it appears as an open green dot.
The two axes are the trace (horizontal) and determinant (vertical) of the Jacobian J. The eigenvalues of J are the roots of its characteristic equation det(J − λI) = 0, which for a 2×2 matrix is λ² − (tr)λ + det = 0, and so the two eigenvalues sum to the trace and multiply to the determinant. The quantity (tr² − 4 det) is the discriminant of that quadratic, exactly like (b² − 4ac) in the quadratic formula. An equilibrium is stable only when both eigenvalues have negative real parts, and the five regions all follow from that:
Far to the left or right, where the trace magnitude is large, the equilibrium falls below the parabola, and the eigenvalues are real because (tr² − 4 det) grows with tr². A very negative trace then drives both roots negative (firmly stable), and a very positive trace drives both positive (firmly unstable), which is why the node and focus halves split stable from unstable.