3. Simplifying block diagrams

These notes detail some techniques for reducing block diagrams graphically. In this notebook, I will solve the problem using SymPy.

Let’s reduce this big block diagram to one input-output relationship (Example 4 in the notes linked to above):

image0

[1]:
import sympy
sympy.init_printing()
[2]:
(R, V1, V2, V3, V4, V5, V6, V7, V8, C,
 G1, G2, G3, H1, H2, H3) = sympy.symbols('R, V1, V2, V3, V4, V5, V6, V7, V8, C,'
                                         'G1, G2, G3, H1, H2, H3')
unknowns = V1, V2, V3, V4, V5, V6, V7, V8, C
[3]:
eqs = [# Blocks
       V2 - G1*V1,
       V4 - G2*V3,
       C - G3*V5,
       V6 - H1*V4,
       V7 - H2*V4,
       V8 - H3*C,
       # Sums
       V1 - (R - V6),
       V3 - (V2 - V7),
       V5 - (V4 + V3 - V8),
       ]
[4]:
sol = sympy.solve(eqs, unknowns)
sol
[4]:
$$\left \{ C : \frac{G_{1} G_{3} R \left(G_{2} + 1\right)}{G_{1} G_{2} G_{3} H_{1} H_{3} + G_{1} G_{2} H_{1} + G_{2} G_{3} H_{2} H_{3} + G_{2} H_{2} + G_{3} H_{3} + 1}, \quad V_{1} : \frac{R \left(G_{2} H_{2} + 1\right)}{G_{1} G_{2} H_{1} + G_{2} H_{2} + 1}, \quad V_{2} : \frac{G_{1} R \left(G_{2} H_{2} + 1\right)}{G_{1} G_{2} H_{1} + G_{2} H_{2} + 1}, \quad V_{3} : \frac{G_{1} R}{G_{1} G_{2} H_{1} + G_{2} H_{2} + 1}, \quad V_{4} : \frac{G_{1} G_{2} R}{G_{1} G_{2} H_{1} + G_{2} H_{2} + 1}, \quad V_{5} : \frac{G_{1} R \left(G_{2} + 1\right)}{G_{1} G_{2} G_{3} H_{1} H_{3} + G_{1} G_{2} H_{1} + G_{2} G_{3} H_{2} H_{3} + G_{2} H_{2} + G_{3} H_{3} + 1}, \quad V_{6} : \frac{G_{1} G_{2} H_{1} R}{G_{1} G_{2} H_{1} + G_{2} H_{2} + 1}, \quad V_{7} : \frac{G_{1} G_{2} H_{2} R}{G_{1} G_{2} H_{1} + G_{2} H_{2} + 1}, \quad V_{8} : \frac{G_{1} G_{3} H_{3} R \left(G_{2} + 1\right)}{G_{1} G_{2} G_{3} H_{1} H_{3} + G_{1} G_{2} H_{1} + G_{2} G_{3} H_{2} H_{3} + G_{2} H_{2} + G_{3} H_{3} + 1}\right \}$$

The solution in the notes is factored:

[5]:
sol[C].factor()
[5]:
$$\frac{G_{1} G_{3} R \left(G_{2} + 1\right)}{\left(G_{3} H_{3} + 1\right) \left(G_{1} G_{2} H_{1} + G_{2} H_{2} + 1\right)}$$