Signal Flow Graphs and Mason's Gain Formula
Block-diagram reduction is reliable but slow, and it collapses into bookkeeping the moment loops cross. The signal flow graph reframes the same system as a network of nodes and directed branches — and Mason's gain formula then reads the transfer function straight off that network, in a single pass, with no moving of points and no nested algebra. This chapter builds the graph, defines its vocabulary, and turns Mason's rule into a routine you can trust.
- What a signal flow graph (SFG) is, and why it is often faster than block-diagram reduction.
- The vocabulary of nodes, branches, path gains, forward paths, loops, and non-touching loops.
- How to convert a block diagram — or a set of linear equations — into an equivalent signal flow graph.
- The basic SFG reduction rules: series, parallel, and loop (self-loop) elimination.
- Mason's gain formula: \(T = \dfrac{1}{\Delta}\sum_k P_k\Delta_k\), and exactly what \(\Delta\) and \(\Delta_k\) mean.
- A repeatable procedure for reading any single-input/single-output transfer function off the graph in one pass.
Why Signal Flow Graphs?
Chapter 4 closed with a warning: when feedback paths cross or loops overlap, block-diagram reduction degenerates into endless moving of summing and take-off points, and a single sign slip ruins the whole chain. The signal flow graph, introduced by S. J. Mason in 1953, sidesteps that entirely. It represents the same linear system as a graph — variables become nodes, and the gains that relate them become directed branches — and a single algebraic formula then delivers the transfer function without any rearrangement of the diagram.
The two representations carry identical information. A block diagram is more intuitive to read; a signal flow graph is faster to solve. For a clean single loop the difference is minor, but for a multi-loop, multi-path network the SFG plus Mason's rule is dramatically less error-prone.
Elements and Terminology
A signal flow graph is built from two elements only. A node is a point that represents a system variable. A branch is a directed line segment joining two nodes, labelled with a gain (transmittance) that multiplies the signal as it passes. The value at any node equals the sum of all signals entering it, and that value is transmitted unchanged along every branch leaving it.
From these two primitives comes a small vocabulary that Mason's formula speaks in. Learn it once and the rule becomes mechanical.
| Term | Meaning |
|---|---|
| Input (source) node | A node with only outgoing branches — the independent variable, e.g. \(R(s)\). |
| Output (sink) node | A node with only incoming branches — the variable solved for, e.g. \(C(s)\). |
| Mixed node | A node with both incoming and outgoing branches. |
| Path | Any continuous, same-direction sequence of branches. |
| Forward path | A path from the input node to the output node along which no node is met twice. |
| Path gain | The product of the branch gains along a path. |
| Loop | A closed path that returns to its start node, meeting no other node twice. |
| Loop gain | The product of the branch gains around a loop. |
| Non-touching loops | Loops that share no common node. |
Every node adds what flows in and broadcasts the result to all outgoing branches. Two loops touch if they share at least one node; if they share none, they are non-touching — the single most important distinction in Mason's formula.
Building the Graph
A signal flow graph can be drawn directly from a set of linear equations or translated from an existing block diagram. From equations, write each dependent variable on the left, place a node for every variable, and draw an incoming branch for each term on the right, labelled with its coefficient. From a block diagram, the translation is almost mechanical:
| Block-diagram feature | Signal-flow-graph equivalent |
|---|---|
| Each signal / variable | A node |
| A block \(G(s)\) | A branch of gain \(G(s)\) |
| Summing point | A node where branches meet (signs absorbed into branch gains) |
| Take-off (branch) point | A node with several outgoing branches |
| Negative feedback \(H\) | A feedback branch of gain \(-H\) |
The graph above encodes \(E = R - HC\) and \(C = GE\). Notice how the summing point's subtraction has been folded into the feedback branch as a gain of \(-H\): in an SFG every operation lives on a branch, so signs travel with the gains. This single loop is the worked check in Section 5-8, where Mason's formula reproduces the familiar \(G/(1+GH)\).
Basic SFG Reduction Rules
Before invoking Mason, it helps to know the three elementary equivalences — they let you simplify a graph by hand and they reveal why Mason's formula has the shape it does. They are the SFG mirror of cascade, parallel, and feedback from Chapter 4.
Mason's Gain Formula
Rather than reduce the graph step by step, Mason's gain formula gives the overall transfer function between an input node and an output node directly. It is the central result of this chapter.
where \(P_k\) is the gain of the \(k\)-th forward path, \(\Delta\) is the graph determinant, and \(\Delta_k\) is the cofactor of forward path \(k\) — the determinant of the part of the graph left untouched by that path.
Each forward path contributes its own gain, weighted by how much of the loop structure it leaves alone. A path that passes through every loop in the graph carries \(\Delta_k = 1\); a path that misses some loops keeps those loops alive inside \(\Delta_k\). The three quantities are:
| Symbol | Definition |
|---|---|
| \(P_k\) | Gain of the \(k\)-th forward path (input node to output node). |
| \(\Delta\) | Graph determinant, built from all loop gains (Section 5-6). |
| \(\Delta_k\) | The determinant \(\Delta\) re-evaluated with every loop that touches path \(k\) deleted. |
The Determinant Δ and Non-Touching Loops
The graph determinant collects the entire loop structure of the diagram into one expression. It is an alternating sum: individual loops are subtracted, pairs of non-touching loops are added back, triples are subtracted, and so on.
\(\displaystyle\sum_i L_i\) sums every individual loop gain; \(\displaystyle\sum_{i,j} L_iL_j\) sums the gain products of every pair of non-touching loops; \(\displaystyle\sum_{i,j,k} L_iL_jL_k\) sums the products of every triple of mutually non-touching loops; and the pattern continues with alternating signs.
The whole subtlety lives in the words non-touching. Two loops contribute a product term only if they share no node — if they touch, the pair simply does not appear. So building \(\Delta\) is a two-step inventory: first list every loop gain, then find every group of loops that are mutually non-touching and form their products with the correct sign.
The cofactor \(\Delta_k\) is computed by the very same formula, but applied to the sub-graph that remains after removing all loops touching path \(k\). In the common case where a forward path runs through every loop, nothing remains and \(\Delta_k = 1\).
A Systematic Procedure
Applied carelessly, Mason's formula invites the same sign errors as block-diagram reduction. Applied as a fixed checklist, it is almost foolproof. Work through these steps in order, writing each list out in full before assembling the answer.
| Step | What to do |
|---|---|
| 1 | Draw the SFG; mark the input node \(R\) and output node \(C\). |
| 2 | List every forward path and its gain \(P_k\). |
| 3 | List every loop and its gain \(L_i\) (carry signs carefully). |
| 4 | Identify all sets of non-touching loops (pairs, triples, …). |
| 5 | Assemble \(\Delta = 1 - \sum L_i + \sum L_iL_j - \cdots\). |
| 6 | For each path, form \(\Delta_k\) by deleting the loops it touches. |
| 7 | Substitute into \(T = \dfrac{1}{\Delta}\sum_k P_k\Delta_k\). |
Never skip the non-touching inventory in step 4: it is the only place the formula differs from a naïve "one minus the sum of loops," and it is where almost every mistake is made.
Worked Examples
Problem. Apply Mason's formula to the negative-feedback graph of Section 5-3 (forward branch \(G\), feedback branch \(-H\)) and recover \(C/R\).
Solution. There is one forward path \(P_1 = G\) and one loop \(L_1 = -GH\). The path touches the loop, so \(\Delta_1 = 1\):
Identical to the Chapter 4 feedback rule — the two methods agree, as they must.
Problem. Three branches \(G_1, G_2, G_3\) form a single chain from \(R\) to \(C\). Find \(T\).
Solution. One forward path, no loops, so \(\Delta = 1\) and \(\Delta_1 = 1\):
With no feedback, Mason's formula reduces to the plain cascade product.
Problem. A unity-feedback loop has forward gain \(G(s)=\dfrac{10}{s+2}\). Use Mason's rule to find \(C/R\) and its pole.
Solution. \(P_1 = G\), \(L_1 = -G\), \(\Delta = 1 + G\), \(\Delta_1 = 1\):
A single pole at \(s=-12\): closing the loop pulled the open-loop pole from \(-2\) deeper into the left half-plane, speeding the response.
Problem. A graph has a single forward path \(P_1 = G_1G_2G_3\) and two loops, \(L_1 = -G_1H_1\) (around the first stage) and \(L_2 = -G_3H_2\) (around the third stage), that share no node. Find \(T\).
Solution. Because \(L_1\) and \(L_2\) are non-touching, their product appears in \(\Delta\):
The forward path touches both loops, so \(\Delta_1 = 1\), giving:
Forgetting the non-touching product term \(L_1L_2\) is the classic Mason mistake — and would drop the last term in the denominator.
Problem. A graph has two forward paths, \(P_1\) and \(P_2\), and a single loop \(L_1\) that touches \(P_1\) but not \(P_2\). Write \(T\).
Solution. The determinant is \(\Delta = 1 - L_1\). Path 1 touches the loop, so \(\Delta_1 = 1\); path 2 misses it, so \(\Delta_2 = 1 - L_1\):
The cofactor keeps the loop alive in the second numerator term — exactly the case where block-diagram reduction would have demanded several point moves.
Problem. A forward path \(P_1\) is wrapped by three loops \(L_1, L_2, L_3\) that all share at least one common node (none are mutually non-touching). Find \(T\).
Solution. Since no pair is non-touching, no product terms survive in \(\Delta\), and the path touches all three loops so \(\Delta_1 = 1\):
When every loop touches every other, Mason's formula is simply "forward path over one minus the sum of loop gains" — the quickest case of all.
Chapter Summary
Nodes are variables; branches carry gains. A node sums its inputs and broadcasts the result.
Forward path, path gain, loop, loop gain — and the crucial idea of non-touching loops.
Blocks → branches, summing/take-off points → nodes, negative feedback → a \(-H\) branch.
\(T = \dfrac{1}{\Delta}\sum_k P_k\Delta_k\) reads the transfer function off the graph in one pass.
\(\Delta = 1 - \sum L_i + \sum L_iL_j - \cdots\); products only for non-touching loop sets.
\(\Delta_k\) is \(\Delta\) with the loops touching path \(k\) removed; \(\Delta_k=1\) if the path hits them all.
Problems
For each graph, run the procedure of Section 5-7: list forward paths, list loops, find the non-touching sets, assemble \(\Delta\), form each \(\Delta_k\), then substitute. Difficulty rises down the list.
- Draw the signal flow graph for the equations \(x_2 = a\,x_1 + b\,x_3\) and \(x_3 = c\,x_2\). Label nodes and branches.
- A single forward path of gain \(G\) has one feedback loop \(L_1 = -GH\). Write \(\Delta\) and \(T\).
- Three branches \(G_1, G_2, G_3\) are in cascade with no feedback. Use Mason's rule to confirm \(T = G_1G_2G_3\).
- A unity-feedback loop has \(G(s)=\dfrac{20}{s(s+4)}\). Apply Mason's formula and find \(C/R\).
- A graph has loops \(L_1\) and \(L_2\) sharing no common node. Write \(\Delta\) explicitly, including the product term.
- For the same graph, the single forward path touches both loops. State each \(\Delta_k\) and write \(T\).
- Two forward paths \(P_1, P_2\) exist; one loop \(L_1\) touches \(P_1\) only. Write \(T\) with the correct cofactors.
- Convert a block diagram with forward path \(G_1G_2\) and feedback \(H\) tapped after \(G_1\) only into an SFG, then solve by Mason's rule.
- A graph has loops \(L_1, L_2, L_3\) where only \(L_1\) and \(L_3\) are non-touching. Build \(\Delta\) term by term.
- With a reference \(R\) and a disturbance \(D\) entering at an interior node, use Mason's formula to write \(C(s)\) as the superposition of both inputs (compute the two transfer functions separately, same \(\Delta\)).
- A two-path, two-loop graph has \(P_1\) touching both loops and \(P_2\) touching neither. Write \(T\) and identify which loops survive in \(\Delta_2\).
- Explain in one or two sentences why Mason's gain formula handles crossing feedback paths more cleanly than block-diagram reduction, referring to the role of the non-touching-loop terms in \(\Delta\).