Pole Placement Calculator
Compute state-feedback gain K by Ackermann's formula for SISO systems up to 4th order, with controllability rank check and closed-loop pole verification
This free online pole placement calculator provides instant results with no signup required. All calculations run directly in your browser — your data is never sent to a server. Supports both metric (SI) and imperial units with built-in unit selection dropdowns on every input field, so you can work in whatever units your problem provides. Designed for engineering students and professionals working through coursework, design projects, or quick reference calculations.
Pole Placement Calculator (Ackermann's Formula)
Design a SISO state-feedback law u = −K·x for ẋ = A·x + B·u (order 1–4). Enter A one row per line, B as a column, and the desired closed-loop poles in rad/s. K is computed from K = [0 … 0 1]·Ctrb⁻¹·φ_d(A) and is only reported when (A, B) is controllable.
Comma-separated. Complex poles must be entered as conjugate pairs.
Pole Map (s-plane, rad/s) — open-loop vs desired closed-loop
Red × = open-loop poles (eigenvalues of A) · Green ○ = requested poles · Blue △ = achieved eigenvalues of A − B·K · Dashed red line = imaginary axis (stability boundary; poles left of it are stable). All coordinates in rad/s.
Controllability Matrix, φ_d(A) and Closed-Loop Matrix
| Matrix | Row | col 1 | col 2 |
|---|---|---|---|
| Ctrb = [B AB … Aⁿ⁻¹B] | 1 | 0 | 1 |
| 2 | 1 | 0 | |
| φ_d(A) | 1 | 8 | 4 |
| 2 | 0 | 8 | |
| A − B·K (closed loop) | 1 | 0 | 1 |
| 2 | -8 | -4 |
All matrix entries are dimensionless numbers in the state coordinates you supplied. Poles and eigenvalues are in rad/s (continuous time, s-plane).
Open-loop poles, eig(A) (rad/s)
Achieved closed-loop poles, eig(A − B·K) (rad/s)
Read off the closed-loop characteristic polynomial, which matches φ_d(s) exactly — two monic polynomials share coefficients only when they share roots.
How to Use This Calculator
Enter your input values
Fill in all required input fields for the Pole Placement Calculator. Most fields include unit selectors so you can work in your preferred unit system — metric or imperial, whichever matches your problem.
Review your inputs
Double-check that all values are correct and that you have selected the right units for each field. Incorrect units are the most common source of calculation errors and can produce results that are off by factors of 2, 10, or more.
Read the results
The Pole Placement Calculator instantly computes the output and displays results with units clearly labeled. All calculations happen in your browser — no loading time and no data sent to a server.
Explore parameter sensitivity
Try adjusting individual input values to see how the output changes. This is a quick and effective way to develop intuition about how different parameters influence the result and to identify which inputs have the largest effect.
Formula Reference
Ackermann's Formula for State-Feedback Pole Placement
K = [0 0 … 0 1] · Ctrb⁻¹ · φ_d(A), with φ_d(A) = Aⁿ + a₁·Aⁿ⁻¹ + … + aₙ₋₁·A + aₙ·I
Variables: K = state-feedback gain row vector, 1×n, applied as u = −K·x (entry kᵢ has units of plant input per unit of state xᵢ — e.g. N per m and N per m/s for a force-driven mass); A = state matrix, n×n (entries in s⁻¹ when the states share a common unit); B = input column, n×1; Ctrb = [B A·B … Aⁿ⁻¹·B] = controllability matrix, n×n; [0 … 0 1] = the n-th unit row vector (dimensionless); φ_d(A) = the DESIRED characteristic polynomial evaluated at the MATRIX A (an n×n matrix, not a scalar); a₁ … aₙ = coefficients of φ_d(s) = sⁿ + a₁sⁿ⁻¹ + … + aₙ; I = n×n identity; n = system order, 1 to 4 in this tool (dimensionless count). This calculator solves Ctrbᵀ·y = eₙ and then forms K = yᵀ·φ_d(A) rather than inverting Ctrb explicitly, which is better conditioned. Source: Ogata, Modern Control Engineering, 5th ed., §10-2 (Ackermann's formula, eq. 10-16); Franklin, Powell & Emami-Naeini, Feedback Control of Dynamic Systems, 7th ed., §7.5.
Controllability Matrix and the Rank Test (the gate on K)
Ctrb = [ B A·B A²·B … Aⁿ⁻¹·B ] controllable ⇔ rank(Ctrb) = n ⇔ det(Ctrb) ≠ 0
Variables: Ctrb = controllability (reachability) matrix, n×n for a single input, column j = Aʲ⁻¹·B; rank(Ctrb) = number of independent columns (dimensionless integer, 0 to n); det(Ctrb) = determinant (dimensionless in the state coordinates supplied); n = system order (dimensionless). Ackermann's formula requires Ctrb⁻¹, which exists only at full rank. When rank(Ctrb) < n the pair (A, B) has n − rank(Ctrb) modes that NO state feedback can move, and this calculator reports the rank and refuses to print a gain rather than returning a K that would appear to place unmovable poles. Numerical rank here is taken from Gaussian elimination with partial pivoting and a pivot tolerance of 1e-9 × ‖Ctrb‖_max × n, so a pair that is only marginally controllable is flagged as ill-conditioned rather than silently trusted. Source: Ogata, Modern Control Engineering, 5th ed., §9-6 (complete state controllability) and §10-2 (necessary and sufficient condition for arbitrary pole placement); Chen, Linear System Theory and Design, 4th ed., Ch. 6.
Desired Closed-Loop Characteristic Polynomial
φ_d(s) = Π_{i=1..n} (s − pᵢ) = sⁿ + a₁·sⁿ⁻¹ + … + aₙ₋₁·s + aₙ
Variables: φ_d(s) = desired closed-loop characteristic polynomial (monic); pᵢ = desired closed-loop pole i, in rad/s (s-plane, continuous time); s = Laplace variable (rad/s); a₁ … aₙ = real polynomial coefficients (aₖ has units of (rad/s)ᵏ). The coefficients aₖ are real ONLY if the pole set is closed under complex conjugation — every complex pole σ + jω_d must be entered together with σ − jω_d — otherwise no real gain K exists and this calculator rejects the request. A pole at Re(pᵢ) < 0 is stable; Re(pᵢ) > 0 is unstable; Re(pᵢ) = 0 is marginally stable. Source: Ogata, Modern Control Engineering, 5th ed., §10-2; Nise, Control Systems Engineering, 6th ed., §12.2.
Closed-Loop System and the Verification Identity
ẋ = (A − B·K)·x with u = −K·x det(sI − (A − B·K)) = φ_d(s) and eig(A − B·K) = { p₁, …, pₙ }
Variables: x = state vector, n×1 (units are whatever the user's states carry); ẋ = state derivative (state units per second); u = scalar control input, u = −K·x; A − B·K = closed-loop state matrix, n×n; det(sI − (A − B·K)) = achieved closed-loop characteristic polynomial (s in rad/s); eig(·) = eigenvalues, i.e. the achieved closed-loop poles (rad/s). This tool computes the achieved polynomial independently by Faddeev–LeVerrier on A − B·K, finds its roots, and reports the largest distance in rad/s between each requested pole and its nearest achieved eigenvalue. A well-conditioned placement returns an error of order 1e-12 rad/s or below; a visibly non-zero error means (A, B) is nearly uncontrollable and K should not be trusted. Source: Ogata, Modern Control Engineering, 5th ed., §10-2; Franklin, Powell & Emami-Naeini, 7th ed., §7.5 (verifying a placed design).
Controllable Canonical Form Shortcut (hand check for Ackermann)
If A is the companion matrix of sⁿ + a₁sⁿ⁻¹ + … + aₙ with B = [0 … 0 1]ᵀ, then K = [ aₙ′ − aₙ , aₙ₋₁′ − aₙ₋₁ , … , a₁′ − a₁ ]
Variables: aₖ = coefficient of sⁿ⁻ᵏ in the OPEN-loop characteristic polynomial det(sI − A) (units (rad/s)ᵏ); aₖ′ = the same coefficient of the DESIRED polynomial φ_d(s); K = gain row, ordered to match the state ordering x₁ = output, x₂ = ẋ₁, … of the phase-variable (controllable canonical) form. This is the fastest hand check on any Ackermann result: for the double integrator A = [[0,1],[0,0]], B = [0,1]ᵀ with poles at −2 ± 2j, φ_d = s² + 4s + 8 against an open loop s², so K = [8 − 0, 4 − 0] = [8, 4]. The shortcut applies ONLY in controllable canonical form; for any other state coordinates use the general Ackermann expression above, which this calculator evaluates directly. Source: Ogata, Modern Control Engineering, 5th ed., §10-2, eq. 10-13; Nise, Control Systems Engineering, 6th ed., §12.2 (phase-variable pole placement).
Choosing the Desired Poles from Transient Specifications
p = −ζ·ω_n ± j·ω_n·√(1 − ζ²) ζ = −ln(OS) / √(π² + ln²(OS)) T_s(2 %) ≈ 4 / (ζ·ω_n) T_p = π / (ω_n·√(1 − ζ²))
Variables: p = dominant closed-loop pole pair (rad/s); ζ = damping ratio (dimensionless, 0 to 1); ω_n = undamped natural frequency (rad/s); ω_d = ω_n·√(1 − ζ²) = damped natural frequency (rad/s); OS = fractional peak overshoot (dimensionless, e.g. 0.095 for 9.5 %); T_s = 2 % settling time (s); T_p = peak time (s). Pick ζ and ω_n from the specification, place the dominant pair at −ζω_n ± jω_d, and place any remaining poles at least 5 to 10 times further left so they decay quickly and the second-order approximation holds. Every angle in these expressions is in radians; the pole values entered into the calculator are in rad/s, not Hz (divide by 2π for Hz). Source: Nise, Control Systems Engineering, 6th ed., §4.6 and §12.2; Ogata, Modern Control Engineering, 5th ed., §5-3.
When to Use This Calculator
- •Use the Pole Placement Calculator when solving homework or exam problems that require quick numerical verification of your hand calculations — instant feedback helps identify arithmetic errors before they propagate.
- •Use it during the early design phase to rapidly iterate on parameters and narrow down feasible configurations before committing time to detailed finite element simulations or full design packages.
- •Use it when reviewing a colleague's calculation or checking a vendor's data sheet for plausibility — a quick sanity check can prevent costly downstream errors.
- •Use it to generate reference data for a technical report or presentation without manual computation, ensuring consistent, reproducible numbers throughout the document.
- •Use it in the field when a quick estimate is needed and a full engineering software package is not available.
About This Calculator
The Pole Placement Calculator is a precision engineering calculation tool designed for students, engineers, and technical professionals. Compute state-feedback gain K by Ackermann's formula for SISO systems up to 4th order, with controllability rank check and closed-loop pole verification All calculations are performed using established engineering formulas from the relevant scientific literature and standards. Inputs support both metric (SI) and imperial unit systems, with unit conversion handled automatically — simply select your preferred unit from the dropdown next to each field. Results are computed instantly in the browser without sending data to a server, ensuring both speed and privacy. This calculator is intended as a supplementary tool for learning and design exploration; always verify results against authoritative references for safety-critical applications.
The Theory Behind It
State feedback places the closed-loop poles anywhere the designer chooses, provided the system is controllable. With the plant written as ẋ = Ax + Bu and the control law u = −Kx, the closed-loop dynamics become ẋ = (A − BK)x, so choosing K sets the eigenvalues of A − BK. Ackermann's formula gives K in closed form for a single-input system: K = [0 0 … 0 1]·Ctrb⁻¹·φd(A), where Ctrb = [B AB A²B … Aⁿ⁻¹B] is the controllability matrix and φd is the desired characteristic polynomial evaluated at the matrix A. The controllability requirement is not a formality. If rank(Ctrb) < n the pair (A, B) is uncontrollable, one or more modes cannot be influenced by any input, and no gain K exists that moves them — Ackermann's formula fails because Ctrb is singular. A tool that silently returns a K for an uncontrollable pair is giving an answer that cannot be implemented, which is why this calculator computes the rank first and refuses rather than inverting a singular matrix. Pole selection is a genuine engineering trade-off rather than a free choice. Poles further into the left half-plane give faster response but demand larger control effort, and beyond some point the actuator saturates and the linear design no longer describes the system. A common starting point is to place a dominant complex pair for the desired damping ratio and settling time, then put any remaining poles three to five times further left so they decay quickly without dominating the response.
Real-World Applications
- •Inverted pendulum and balancing robots: the classic case where the open loop is unstable and feedback must place the poles in the left half-plane.
- •Servo and motion control: specify settling time and damping directly as pole locations rather than tuning gains by trial and error.
- •Aircraft and spacecraft attitude control: modal frequencies and damping are usually specified in handling-qualities terms that translate straight into pole locations.
- •Active vibration suppression: move lightly damped structural poles left to add damping without adding physical dampers.
- •Checking controllability before committing to a sensor and actuator layout: a rank-deficient controllability matrix means the chosen actuator physically cannot influence some mode.
Frequently Asked Questions
What does controllability actually mean?
That the input can drive the state from any starting point to any target in finite time. Formally, rank(Ctrb) = n, where Ctrb = [B AB … Aⁿ⁻¹B]. If the rank is less than n, some combination of states is unaffected by the input — that mode evolves on its own regardless of what the controller does. No feedback gain can move an uncontrollable pole, so the design must change the actuator or the model, not the gain.
Where should I place the poles?
Start from the specification. A dominant complex pair at −ζωₙ ± jωₙ√(1−ζ²) gives a chosen damping ratio and settling time (roughly 4/(ζωₙ) to within 2%). Place remaining poles three to five times further left so they decay fast enough not to dominate. Then check the resulting control effort: poles placed aggressively far left demand large inputs and will saturate a real actuator.
Why does the calculator refuse some systems?
Because the pair (A, B) is uncontrollable — rank(Ctrb) is less than the system order, so the controllability matrix is singular and Ackermann's formula has no solution. Returning a gain anyway would produce numbers that cannot achieve the requested poles on the real system. The tool reports the rank and the determinant so the deficiency is visible rather than hidden.
Can I place poles for a multi-input system?
Not with Ackermann's formula as implemented here, which is single-input. With multiple inputs the gain K is not unique — there are infinitely many gains achieving the same poles — and the extra freedom is normally resolved by an optimal method such as LQR, or by algorithms specifically designed for robust multi-input placement.
Do I need to measure every state?
State feedback assumes the full state vector is available. When it is not, an observer (state estimator) reconstructs it from the outputs, and the separation principle means the observer and the feedback gain can be designed independently. Observer poles are usually placed two to five times faster than the controller poles so estimation error decays before it affects control.
Common Mistakes & Tips
- !Not checking controllability first, then trusting a gain produced by inverting a near-singular matrix.
- !Placing poles far into the left half-plane without checking the control effort, so the actuator saturates and the linear design no longer applies.
- !Entering complex poles without their conjugate partner, which yields a complex gain vector that cannot be implemented.
- !Assuming state feedback removes steady-state error; it places poles but does not add integral action, which needs an extra integrator state.
- !Forgetting that state feedback needs the full state, and no observer has been designed to supply it.
Related Concepts
Related Calculators
State-Space Calculator
Analyze state-space systems: compute eigenvalues of A, controllability rank, observability rank, and stability from A, B, C, D matrices
Nichols Chart Calculator
Plot the Nichols chart of a transfer function and read gain margin, phase margin, and closed-loop resonant peak Mr
Root Locus Plotter
Plot how closed-loop poles move as gain K varies; interactive K slider shows closed-loop poles, open-loop poles, and zeros
Forced Vibration SDOF Calculator
Steady-state amplitude ratio, phase angle, and frequency response for harmonically forced SDOF systems
Lead-Lag Compensator Calculator
Lead and lag compensator design: enter the peak phase φₘ and the frequency ωₘ to get α, T, the zero and pole, gain at ωₘ in dB, Gc(s), and a Bode plot
Nyquist Stability Calculator
Compute gain margin (dB), phase margin (degrees), gain crossover frequency, and phase crossover frequency from open-loop transfer function
Embed this calculator on your site
Paste this snippet into your blog, course page, or documentation to drop a live, interactive Pole Placement Calculator into your page.
Free to embed — includes a link back to MegaCalc.