b2KIT

Root Locus Plotter

Plot root locus for control systems. Adjust gain and see pole migration. Identify breakaway points and stability boundaries.

Tested tool guide Tested browser tools Checked August 16, 2026

What Root Locus Plotter does, with a checked example

Root locus answers one question: where do the closed-loop poles of a feedback system travel as the loop gain K grows from zero to infinity? Enter the open-loop poles and zeros, and the tool draws those paths across the complex plane, labels gain along each branch, and flags where branches meet and break away and where they cross the imaginary axis, which is the exact gain where the loop goes unstable. The surprise for most users: the plot describes the closed-loop system, so a plant that is stable on its own can still show branches heading into the right half-plane.

Worked example

A concrete input and expected output from the current implementation.

Input

Open-loop poles: 0, -1, -2. Zeros: none. Transfer function G(s)H(s) = K / (s(s+1)(s+2)).

Expected output

Three branches start at the open-loop poles 0, -1, -2. The real axis carries the locus from -1 to 0 and from -2 to -infinity. Branches meet and break away at s = -0.42 with K = 0.385, then swing into the complex plane along asymptotes from s = -1 at +-60 degrees. The branches cross the imaginary axis at +-j1.41 exactly when K = 6; for any K greater than 6 two poles sit in the right half-plane and the loop is unstable.

With three poles and no zeros the closed-loop characteristic equation is s^3 + 3s^2 + 2s + K = 0. Routh's criterion puts the stability limit at K = 6, and substituting s = j*sqrt(2) verifies the crossing point; the breakaway solves dK/ds = 0 with K = -s(s+1)(s+2), yielding s = -0.42 at K = 0.385.

How the result is produced

1

Angle condition and gain labeling

A point s on the plane lies on the locus when the open-loop transfer function evaluated there has phase exactly 180 degrees (modulo 360), because 1 + G(s)H(s) = 0 requires G(s)H(s) = -1. The tool evaluates this condition across the plane and also computes the gain at each point as K = |D(s)| / |N(s)|, which is why every branch carries a K label.

2

Breakaway, crossings, and asymptotes

Breakaway and break-in points solve dK/ds = 0 along the real axis, where two branches merge. Imaginary-axis crossings come from substituting s = j*omega into the closed-loop characteristic equation, and the largest K below the first crossing is the stability limit. Asymptote angles follow from the pole-zero excess: (2q+1)*180 degrees divided by (n - m), anchored at the centroid (sum of poles - sum of zeros)/(n - m).

Good uses

  • Find the largest stable gain: locate the imaginary-axis crossing on the locus, then set the loop gain with margin below that value.
  • Choose K for a target overshoot: find where a branch crosses the constant-damping ray for your zeta (cos(alpha) = zeta) and read the gain at that point.
  • Screen a compensator before committing: add a candidate lead or lag pole-zero pair and compare how the branches, breakaway point, and stability limit move.

Limits and checks

  • The curve is not a time response. It shows pole positions only; overshoot, settling time, and steady-state error depend on zeros, loop type, and gain, not just on where the poles are.
  • The locus is drawn for K from 0 to +infinity. Negative loop gains give the complementary root locus, whose real-axis segments and crossing gains differ; if your problem allows negative K, that plot is a separate request.
  • A branch can cross the imaginary axis more than once. When it re-enters the left half-plane, the stable range of K is an interval between the crossings; the first crossing alone is not the stability limit.

Common questions

The plot crosses the imaginary axis at K = 6. Is the system unstable for every gain above 6?

Only if it never crosses back. Read the locus across the full gain range: a branch that re-enters the left half-plane makes the stable range an interval between two crossings, not a single upper limit. Exactly at the crossing gain the pole sits on the imaginary axis, which gives a sustained oscillation (marginal stability), not a stable response.

Can I read overshoot and settling time off the root locus?

Indirectly, through the dominant pole pair. At your chosen K, measure the angle alpha the complex pole makes with the negative real axis, and zeta = cos(alpha); overshoot is exp(-pi*zeta/sqrt(1 - zeta^2)). This is reliable only when the remaining poles and zeros sit well to the left, so they do not shape the response.

References and verification

The example and behavioral notes were checked against the browser implementation. Standards and primary references below define the relevant format, formula, or platform behavior.

Related Tools