Transfer Function Analysis by Manipulation of Poles and Zeros

Initializing live version
Download to Desktop

Requires a Wolfram Notebook System

Interact on desktop, mobile and cloud with the free Wolfram Player or other Wolfram Language products.

This Demonstration shows how the locations of poles and zeros of the system transfer function affect the system properties. Drag a pole or a zero of a discrete system transfer function to a different location and observe the effect on the system. represents the transfer function of a discrete time system, where is the -transform of the output signal and is the -transform of the input signal. Writing as a ratio of two polynomials in , the poles of are the roots of the denominator and the zeros are the roots of the numerator.


The continuous time transfer function approximation is generated using all supported to mapping methods in Mathematica 8. The mapping of the plane to the plane is also generated. A total of 12 different plots can be generated as you move the poles and zeros to different locations.


Contributed by: Nasser M. Abbasi (August 2011)
Open content licensed under CC BY-NC-SA



There are three parts to the main display. The left part represents the domain of and shows the unit circle where you can drag the poles and zeros. The right side of the display is used to show different plots (such as Bode) and system response to different inputs. The top part of the display shows the generated analytical expression for and and the differential equation that represents the inverse Laplace transform of the denominator of the transfer function .

In this Demonstration it is assumed that the system is causal and right-sided, which implies that the system is stable when all the poles are inside the unit circle and hence the (region of convergence) extends from the largest pole to infinity. Therefore, the system will be stable when the contains the unit circle.

Following is a description of how to use this Demonstration: Starting on the left of the display, we see the unit circle surrounded by a small gray area. Poles and zeros that are inside the gray area do not contribute to the system. A pole is marked with and a zero is marked with . To add a pole or a zero to the system, simply drag the pole or the zero from the gray area to the white area using the mouse. To remove a pole or a zero from the system, drag it back to the gray area. All operations are done using the mouse only. The keyboard is not used.

To drag a pole, the radio button selection at the top left of the display must be set to pole. Similarly, to drag a zero, the selection must be set to zero. Dragging is active only in the upper half of the diagram. Complex conjugate poles and zeros in the lower half are automatically created, removed, and dragged with the upper-half poles and zeros.

To limit the size of the display, the active area where poles and zeros can be located extends from to in both the and directions. This is the white area surrounded by the gray area. The gray area is used only to store poles and zeros that are not being used at the moment.

The following is a description of the controls in the top of the Demonstration from left to right: The radio buttons labeled "pole" and "zero" are used to select the type of the root to move (a pole or zero). For example, if you try to drag a pole when the selection is set to "zero" it will have no effect.

Next is a popup menu labeled "plot type" that is used to select which plot to show in the right side of the display. The slider labeled "" represents the forcing frequency in units of for the input signal, which is used when selecting the last two choices in the "plot type" popup menu. The slider labeled "" is the root locus gain parameter used in the Mathematica RootLocusPlot command.

The next two popup menus are used to select the units for the Bode plot. The Mathematica BodePlot command contains more description of these units. The checkbox labeled "grid lines" is used to turn on grid lines for the plots generated in the right side of the display. The checkbox labeled "margins" is used to add the option StabilityMargins to BodePlot, NyquistPlot, and NicholsPlot. The checkbox labeled "closed loop" is used to generate the closed loop system and use that instead of the open loop system. By using this option the system will be used instead of in all the analysis except for the RootLocusPlot, where the open loop transfer function is used.

Following is a description of the controls located in the bottom area of the Demonstration from left to right: The checkbox labeled "background" is used to show the fine grid dots shown in the domain of the . The checkbox labeled "tooltip" is used to turn on the tooltip support that lets you view the system frequency as you move the mouse around the perimeter of the unit circle and shows the corresponding location on the Bode plots (if it is selected at the same time). Therefore to see this in action, start by selecting the Bode plot option, then turn on the tooltip checkbox, then move the mouse near the edge of the unit circle.

When the tooltip is active, dragging of poles and zeros is disabled automatically. To drag poles and zeros again, make sure the tooltip is unchecked. The popup menu labeled "grid spacing" is used to select the grid spacing for locating poles and zeros. By default, poles and zeros will be located only at intervals of distance from each others. This is the default grid granularity. It allows better control on the location of poles and zeros. By setting this option to 0, you can position poles and zeros anywhere, not only at the grid points, however this could make it harder to position more than one pole or zero at the exact same location depending on the mouse sensitivity.

When the same physical location contains more than one pole or one zero, the order is shown in smaller text next to the location. Putting a zero on top of a pole does not cause a pole zero cancellation in this Demonstration.

The slider labeled "time" is used to specify the time duration for the response of the system in seconds. The slider labeled "" is the sampling period in seconds used in the conversion of the discrete system to continuous system. The checkbox labeled "joined plot" is used to change the display of the response of the discrete system. The checkbox labeled "superimpose" is used to show the continuous response of the system with the discrete response on the same plot. The popup menu labeled "conversion method" is used to select the method to convert to . Mathematica documentation contains more information on these conversion methods. Finally the button labeled "init" is used to initialize the Demonstration to the original settings.

Additional information: In some cases (such as with marginal stability) the magnitude Bode plot might not be generated. The plots of Nyquist, Nichols, and Root locus are all plots of the discrete system.

In the response plots, the dashed black line represents the input to the system (step, ramp, sinusoidal, or the exponential decaying sinusoidal). The red line is the discrete system response, and the blue line is the response of the continuous time approximation of the discrete system.

A Nichols plot is shown using degrees for phase units and absolute for the magnitude.

The plane map plot shows the location of poles and zeros in the Laplace domain corresponding to the poles and zeros in the domain. Moving the mouse close to a pole in the domain displays the damping ratio and the natural frequency corresponding to this pole.

This Demonstration supports a maximum of eight poles and eight zeros.


[1] A. V. Oppenheim and R. W. Schafer, Discrete-Time Signal Processing, Englewood Cliffs, NJ: Prentice-Hall, 1999.

[2] A. V. Oppenheim and R. W. Schafer, Digital Signal Processing, Englewood Cliffs, NJ: Prentice-Hall, 1975.

Feedback (field required)
Email (field required) Name
Occupation Organization
Note: Your message & contact information may be shared with the author of any specific Demonstration for which you give feedback.