How Do I Solve a Block Diagram in Mathematica?

Wolfram Research offers a number of specialized packages for control design and analysis as well as for DSP design and code generation. Nevertheless, it is instructive to see how easily you can solve block diagrams using just the basic package. If you are interested in more-advanced packages, take a look at Control System Professional, Analog Insydes, or Signals and Systems in the Mathematica store.

Reducing the Block Diagram and Computing the Closed-Loop Transfer Function

[Graphics:Images/index_gr_1.gif]

Write a block diagram equation for the rightmost closed loop in the diagram, and solve for the input to this loop.

[Graphics:Images/index_gr_2.gif]
[Graphics:Images/index_gr_3.gif]

Now write the block diagram equation for the rest of the system, and solve for the output of this loop.

[Graphics:Images/index_gr_4.gif]
[Graphics:Images/index_gr_5.gif]

The solutions to these equations represent the same stream, so we equate them and solve the equation to determine the overall transfer function. /. replaces [Graphics:Images/index_gr_6.gif] with the results sol1 and sol2 on both sides of the equation.

[Graphics:Images/index_gr_9.gif]
[Graphics:Images/index_gr_10.gif]
[Graphics:Images/index_gr_11.gif]
[Graphics:Images/index_gr_12.gif]


Generating a Pole-Zero Map of the Closed-Loop Transfer Function

These inputs solve for the zeros and poles of the transfer function.

[Graphics:Images/index_gr_13.gif]
[Graphics:Images/index_gr_14.gif]
[Graphics:Images/index_gr_15.gif]
[Graphics:Images/index_gr_16.gif]

Here are some simple graphing routines for generating pole-zero plots. These are based on code written by H. Joel Trussel in his notebook tutorial Filter Design by Pole-Zero Placement.

[Graphics:Images/index_gr_17.gif]
[Graphics:Images/index_gr_18.gif]
[Graphics:Images/index_gr_19.gif]
[Graphics:Images/index_gr_20.gif]
[Graphics:Images/index_gr_21.gif]

[Graphics:Images/index_gr_22.gif]