---
title: Transfer functions and poles
url: https://doc.liz6.com/en/theory/02-control-theory/05-transfer-functions-and-poles
locale: en
area: theory
tags:
- Control theory
- Theory
date: 2026-09-10
modified: 2026-09-10
description: A system can be represented by differential equations, state updates or input/output transfer functions. Transfer functions simplify the composition of linear dynamic blocks. We use operating-point deviations from Dynamic models and the controller in PID control.
---

# Transfer functions and poles

A system can be represented by differential equations, state updates or input/output transfer functions. Transfer functions simplify the composition of linear dynamic blocks. We use operating-point deviations from [Dynamic models](02-dynamic-models.md) and the controller in [PID control](04-pid-control.md).

## Turn derivatives into algebra

The unilateral Laplace transform is $X(s)=\int_0^\infty x(t)e^{-st}dt$ in its convergence region. A derivative transforms as $\mathcal L\{\dot x\}=sX(s)-x(0)$. The complex variable $s=\sigma+j\omega$ represents exponential growth or decay together with oscillation.

Our thermal deviation equation is $2000\dot x+20x=1000v$. At zero initial state,

$$(2000s+20)X=1000V,\qquad P(s)=\frac XV=\frac{50}{100s+1}.$$

Here $v$ is a duty-ratio deviation and $x$ a temperature deviation. A nonzero $x(0)$ adds $2000x(0)/(2000s+20)$ to the transformed response. The transfer ratio alone is not the complete initial-value solution.

$P(0)=50$ K/duty is the static gain. The pole at $-0.01$ corresponds to $e^{-0.01t}$ decay. This LTI representation does not automatically include saturation or changing operating conditions.

## Where the closed-loop denominator comes from

For unity negative feedback, $E=R-Y$, $U=CE$, and $Y=PU$. Rearranging gives

$$(1+PC)Y=PC R,\qquad \frac YR=\frac{PC}{1+PC}.$$

Clear denominators in $1+PC=0$ to obtain the characteristic equation, while checking internal modes in the realization. Sensor dynamics $H(s)$ change the denominator to $1+PCH$; filtering is part of the loop.

For $C=K_p$,

$$\frac YR=\frac{50K_p}{100s+1+50K_p},\qquad p=-\frac{1+50K_p}{100}.$$

At $K_p=0.04$, the pole is $-0.03$ and time constant 33.33 s, but a unit reference-temperature step produces only a $2/3$ K final increment. Speed and accuracy are separate properties.

## PI poles move with gain

With $C=K_p+K_i/s$, the denominator is

$$100s^2+(1+50K_p)s+50K_i.$$

Fixing $K_p=0.04$, $K_i=0.0002$ gives roots $-0.00382,-0.02618$; $K_i=0.001$ gives $-0.015\pm0.01658j$. Increasing integral action can turn two real modes into oscillatory modes. Positive coefficients ensure stability for this delay-free second-order case, not for arbitrary plants.

**Transfer functions and poles · Experiment**

Thermal PI characteristic equation 100s²+3s+50Ki=0, Kp=0.04. Poles coincide at Ki=0.00045, then separate along real part −0.015. These are pole locations, not physical trajectories.


Check that the roots sum to $-0.03$ and multiply to $0.5K_i$. They coincide when the discriminant vanishes at $K_i=0.00045$. A root locus shows pole locations as a parameter varies, not a physical motion path.

## Zeros and hidden states matter

Compare $G_1(s)=1/(s+1)$ and $G_2(s)=(1-s)/(s+1)$. Both have pole $-1$ and static gain 1. Their unit-step responses are $1-e^{-t}$ and $1-2e^{-t}$. The latter jumps to −1 before tending to 1; it includes a direct path. A right-half-plane zero can produce inverse response and constrain design. Stable poles alone do not determine the transient shape.

Cancellation or an unobserved mode can also hide internal instability. For $\dot x_1=-x_1+u$, $\dot x_2=x_2$, $y=x_1$, the transfer is $1/(s+1)$, yet nonzero $x_2(0)$ grows exponentially. Check the realization as well as the reduced denominator.

## Reproduce the pole calculation

This optional example uses the python-control 0.10.2 API. `feedback` defaults to negative feedback; the result is about the stated linear model.

```python
import control as ct
P = ct.tf([50], [100, 1])
C = ct.tf([0.04, 0.001], [1, 0])
closed_loop = ct.feedback(P * C, 1)
print(ct.poles(closed_loop))
# Approximately: -0.015 +/- 0.016583j
```

## Check your understanding

Why is $Y=PU$ insufficient for a nonzero initial temperature deviation?

<details><summary>Reasoning</summary>

The transfer relation assumes zero initial conditions. The derivative transform contributes an additional initial-state term, which must be retained.

</details>

Do identical poles imply identical step responses?

<details><summary>Reasoning</summary>

No. Zeros, gain, direct feedthrough and initial conditions matter. The two example transfers share poles and static gain but initially move in different directions.

</details>

## Further reading

The [python-control linear-systems guide](https://python-control.readthedocs.io/en/stable/linear.html) describes transfer and state-space objects. Match their variables, units and initial-condition conventions to the physical model.
