# Step response overshoot in IIR filters

Is there an analytic expression by which it is possible to calculate overshoot of step-response of second order IIR digital filter? I have tried to search through Mitra's signal processing book and through some other materials, but wasn't able to find it.

• I don't know of a simple one size fits all equation. Try looking at a book on control systems. The time response is a very important characteristic in control system design. Step response is a standard measure of a controls system's behavior. One approach to get the step response is to find the inverse of H(z)U(z) where H(z) is the z domain transfer function of you're IIR filter and U(z) is the z transform of a unit step function. U(z)=z/(z-1). Once you have an expression for the step response, you can analyze the expression for overshoot and other characteristics. – user2718 May 17 '13 at 12:21

For the general second order section (biquad)

$H(z) = \frac{b_0 + b_1 z^{-1} + b_2 z^{-2}}{1 + a_1 z^{-1} + a_2 z^{-2}} = b_0\frac{(1-qz^{-1})(1-\bar{q}^{-1}z^{-1})}{(1-pz^{-1})(1-\bar{p}^{-1}z^{-1})}$

with a pair of complex conjugate zeros ($q,\bar{q}, q=R_qe^{j\theta_q}$) and poles ($p,\bar{p}, p=R_pe^{j\theta_p}$) the step response $s(n)$, if put on this form

$s(n) = a_{\infty}(1+d(n))$

where $a_{\infty}$ is the steady-state response and $d(n)$ the transient response, is governed by

$a_{\infty} = \frac{1-2R_q\cos(\theta_q)+R_q^2}{1-2R_p\cos(\theta_p)+R_p^2}$

$d(n) = K(\lambda_1\sin(\theta_p[n+1]) + \lambda_{-1}\sin(\theta_p[n-1]) - \lambda_{2}\sin(\theta_p[n+2])-\lambda_{0}\sin(\theta_pn))$

with

$K = \frac{R_p^n}{\sin(\theta_p)(1-2R_q\cos(\theta_q) + R_q^2)}$

$\lambda_{-1} = R_q^2, \quad \lambda_{0} = 2R_qR_p\cos(\theta_q)+R_q^2R_p^{-1}, \quad \lambda_{1} = 2R_q\cos(\theta_q)+R_p^2, \quad \lambda_{2} = R_p$

If there are no zeros,

$\lambda_{-1} = 0, \quad \lambda_{0} = 0, \quad \lambda_{1} = R_p^2, \quad \lambda_{2} = R_p, \quad K=\frac{R_p^n}{\sin(\theta_p)}$

and the expression for $d(n)$ reduces to the expression provided in the other post.

If the independent variable $n$ is treated at continuous, the letter $t$ is used instead of $n$, then the value of $t$ that maximizes $d(t)$ can be found. It is given by

$t_{max} = \frac{1}{\theta_p}\left( \tan^{-1}(-\frac{\ln(R_p)\sin(\theta_p)(\lambda_1-\lambda_{-1}) - \lambda_2\ln(R_p)\sin(2\theta_p) + \lambda_1\theta_p\cos(\theta_p) + \lambda_{-1}\theta_p\cos(\theta_p)-\lambda_2\theta_p\cos(2\theta_p) - \lambda_0\theta_p}{\ln(R_p)\cos(\theta_p)(\lambda_1+\lambda_{-1}) - \lambda_2\ln(R_p)\cos(2\theta_p) - \lambda_1\theta_p\sin(\theta_p) + \lambda_{-1}\theta_p\sin(\theta_p)\lambda_2\theta_p\sin(2\theta_p) - \lambda_0\ln(R_p)}) - k\pi\right)$

The value of $t_{max}$ can then be rounded towards nearest integer and used in the response for $d(n)$. In the expression for $t_{max}$, the value of $k$ must be chosen such that $t_{max}$ is in range $0\leq t_{max} \leq \frac{\pi}{\theta_p}$ and it must be verified that $t_{max}$ is a maximum and not a minimum.

For the all pole case this plot illustrates the maximum overshoot as function of pole radius and angle. If we have a second-order discrete-time system with complex conjugate poles at $z_{\infty}=re^{\pm j\theta}$, $0<r<1$, $0<\theta<\pi$ (i.e. with poles inside the unit circle and no poles on the real axis), then we have a transfer function

$$H(z)=\frac{1}{1-2r\cos \theta z^{-1} + r^2z^{-2}}$$

For the moment we assume there are no zeros away from the origin of the $z$-plane. The step response of such a system is given by

$$a(n)=\frac{1}{1-2r\cos \theta + r^2}\left [1+ \frac{r^{n+2}\sin[\theta(n+1)] - r^{n+1}\sin[\theta(n+2)] }{\sin\theta} \right ]\sigma(n) =$$ $$=a_{\infty}[1+d(n)]\sigma(n)\tag{1}$$

where $\sigma(n)$ is the Heaviside step function, $a_{\infty}$ is the value of the step response for $n\rightarrow\infty$, and $d(n)$ corresponds to the ringing of the step response. Consequently, the maximum overshoot of $a(n)$ corresponds to the maximum of $d(n)$. You could try with Mathematica to see if there is an analytic solution for the (largest local) maximum of $d(n)$.

If the system has zeros away from the origin of the $z$-plane, then $H(z)$ has a numerator polynomal $b_0+b_1z^{-1}+b_2z^{-2}$:

$$H(z)=\frac{b_0+b_1z^{-1}+b_2z^{-2}}{1-2r\cos \theta z^{-1} + r^2z^{-2}}$$

In this case the formula for the step response given by (1) still holds with $$a^{\prime}_{\infty}=a_{\infty}\sum_kb_k$$ and with

$$d^{\prime}(n)=\frac{(d*b)(n)}{\sum_kb_k}=\frac{b_0d(n)+b_1d(n-1)+b_2d(n-2)}{\sum_kb_k}$$

It may be even more difficult to find an analytic solution for the maximum of $d^{\prime}(n)$.

So unfortunately I cannot give a plug-and-play formula for the maximum overshoot, but my intent was to give you some analytical results to experiment with, either with Mathematica, or by using some very simple numerical search strategies.

If everything else fails (Mathematica etc.), I would simply compute $a_{\infty}$ by

$$a_{\infty}=\frac{b_0+b_1+b_2}{1+a_1+a_2}$$

and then actually compute the filter output (e.g. with Matlab's $\tt{filter}$ function), feeding the filter with a step, until you have found the first maximum of the output signal $a_{max}$. The overshoot is then given by $\frac{a_{max}}{a_{\infty}}$. But this may be obvious to you anyway.