Why One Output Flips Sign Near 45° — Direction Sensitivity in 2×2 Processes
July 19, 2026
The Symptom
Open the Distillation Column Simulator and switch to the open-loop view. Drag the ΔL / ΔV direction sliders around the unit-input circle. As the direction approaches 45° (i.e. ΔL ≈ ΔV), one of the two outputs flips sign. Cross 45° and the other one flips. A small slider nudge can move an output from +0.5 to −0.5.
That looks like a UI bug. It is not. It is the Bequette Module 13 LV model doing exactly what it is supposed to do. The flip is a geometric property of the static gain matrix, and once you see the picture in output space it stops being surprising and starts being useful.
The Model
The 2×2 LV (reflux / boilup) model from Bequette’s Process Control textbook is one of the most-used MIMO examples in process control. The two manipulated inputs are L (reflux flow) and V (boilup), and the two controlled outputs are x_D (distillate composition) and x_B (bottoms composition). The steady-state gain matrix is:
Each row of K maps the input vector u = [ΔL, ΔV]ᵀ to one output:
This is a linear system. No sign changes, no thresholds, no hysteresis. y is a continuous linear function of u.
Why an Output Can Flip Sign
Each output is a dot product of one row of K with u:
For fixed u magnitude, this is a sinusoid in the input direction θ. The sinusoid passes through zero exactly when the input direction is perpendicular to k₁. The same is true for x_B: it is a sinusoid in θ that passes through zero when the input direction is perpendicular to k₂.
So each output has exactly two zero-crossings in a full 360° rotation (once going in, once going out), and the flip is just that zero crossing.
For this particular K:
- x_D = 0 when ΔV / ΔL = 0.878 / 0.864 ≈ 1.0162 (input angle θ ≈ 45.4°)
- x_B = 0 when ΔV / ΔL = 1.082 / 1.096 ≈ 0.9872 (input angle θ ≈ 44.6°)
Both zero-lines sit right next to each other near 45°. That is why the flips look “suspiciously close together” — the process is tuned so that a single input direction nearly cancels both outputs simultaneously.
The SVD Picture
The cleanest way to see the geometry is via the singular value decomposition (SVD) of K. The SVD factors the matrix as:
For the Bequette M13 matrix:
- σ_max ≈ 1.972
- σ_min ≈ 0.014
- Condition number = σ_max / σ_min ≈ 142
- v_high (input direction of max gain) at θ ≈ 135°
- v_low (input direction of min gain) at θ ≈ 45°
The image of the unit input circle under K is an ellipse in output space, with semi-axes σ_max · u₁ and σ_min · u₂. The ratio of axes is 142 — a flat, needle-thin ellipse. Its long axis is the direction where K amplifies (v_high → σ_max); its short axis is the direction where K almost kills the output (v_low → σ_min).
The v_low axis at θ ≈ 45° lies between the two zero-crossings of x_D and x_B. As the input direction sweeps across v_low:
- Just before v_low: both outputs are small and have one sign pattern.
- Just after v_low: both outputs are small and have the opposite sign pattern.
Each individual output flips as you sweep across its zero-line (45.4° for x_D, 44.6° for x_B). Because those two lines are 0.8° apart and v_low is right between them, both flips happen within about 1° of input-direction travel. That is the apparent “jump” on the time-series plot.
Where the Two Flips Happen
In output space the sign-flip boundaries are simply the output axes themselves:
- x_D flips sign when the operating point y crosses the x_B-axis (i.e. when x_D = 0)
- x_B flips sign when the operating point y crosses the x_D-axis (i.e. when x_B = 0)
This is the picture worth internalizing. The output-space axes are the sign-flip lines. The thin axis of the gain ellipse (v_low) is the input direction that drives y right through the origin — and that is exactly the input direction that puts the operating point on top of both output axes simultaneously.
The simulator’s Static-gain ellipse panel (below the time-series response) draws this for you: blue curve is the gain ellipse, green thick axis is v_high, red thin axis is v_low, dotted gray lines are the output axes, and the blue dot is the current y = K · u.
The RGA View
A single scalar that captures this whole story is the Relative Gain Array (RGA):
For this process, λ₁₁ = 35.1 (and by symmetry λ₂₂ = 35.1, λ₁₂ = λ₂₁ = −34.1). The RGA is large, which is the textbook fingerprint of a process that:
- Is strongly ill-conditioned (the 142:1 ellipse ratio).
- Has a near-singular direction (v_low at 45°).
- Will be very sensitive to input direction in a 2×2 control loop.
- Will suffer serious performance degradation if you pair inputs and outputs by the diagonal of K alone (i.e. pair L ↔ x_D, V ↔ x_B) and ignore the cross-couplings.
The Bequette textbook pairing (L ↔ x_B, V ↔ x_D, the off-diagonal pairing) is precisely the one that uses v_low as the manipulated direction, which is also precisely the one that makes the time-series response look “weird” when you sweep the input direction. You cannot separate the symptom from the cure.
Try It Yourself
- Open the Distillation Column Simulator and scroll to the open-loop section.
- Click the v_low (min gain) preset (ΔL = 0.707, ΔV = 0.707). The current y dot lands at the origin — both outputs are near zero. Drag ΔL by 0.01 and one output jumps to roughly +0.01. Drag it back and the other output jumps. This is the v_low axis being the floor of the ellipse.
- Click the v_high (max gain) preset (ΔL = −0.707, ΔV = 0.707). The dot lands on the long axis of the ellipse at magnitude σ_max ≈ 1.97. Both outputs are large and both move together.
- Watch the Static-gain ellipse panel as you drag: the dot slides along the ellipse curve. Near the thin axis (red), the dot is close to the origin and the outputs are near zero. Near the long axis (green), the dot is far from the origin and the outputs are large. Cross either output axis (dotted gray) and the corresponding output flips sign.
Takeaways
- A 2×2 linear system always has two zero-crossings per output over a full input-direction sweep. That is the geometry, not a bug.
- If the two zero-crossings are close together in input angle, the process is ill-conditioned and the SVD’s σ_min is small. The standard scalar measure is the RGA: RGA₁₁ >> 1 means diagonal pairing will be poor.
- The input direction that simultaneously sends both outputs to zero is exactly the v_low direction of the SVD — the short axis of the static-gain ellipse. In a 2×2 control loop, this is the direction your manipulated vector wants to align with to use both inputs efficiently, and it is also the direction where controller interaction is worst.
- When you see an output flip sign on a time-series plot, switch to output space. The flip is a zero crossing, the zero crossing is a line through the origin, and the line is just the output axis. That picture is harder to misread than the time series.
For the math behind the SVD and the RGA, Bequette’s Process Control (Module 13) and Skogestad’s Multivariable Feedback Control (Chapters 1, 10) are the standard references. The simulator’s code is the same SVD you would compute by hand — see the SVD values displayed in the open-loop panel.