梅森增益公式

梅森增益公式（Mason's Gain Formula，MGF）是寻找线性信号流图（SFG）传递函数的方法。该公式是塞缪尔·杰斐逊·梅森推导出的，也是用他的名字命名的。MGF是用代数方法标记每个信号，将信号依赖于其他信号的方式写成方程，然后求解多元方程组得出输出信号与输入信号的关系，以求传递函数的方法。MGF提供了由信号流图一步一步获得传递函数的方法。通常，MGF可以通过检查信号流图确定。该方法可以很容易地处理多变量、多回路包括内循环回路的信号流图。MGF经常出现在控制系统和数字滤波器的内容中，因为控制系统和数字滤波器常会用信号流图表示。

## 公式

增益公式如下：

$$G = \frac{y_\text{out}}{y_\text{in}} = \frac{ \sum_{k=1}^N {G_k \Delta _k} }{ \Delta\ }$$

$$\Delta = 1 - \sum L_i + \sum L_iL_j- \sum L_iL_jL_k + \cdots + (-1)^m \sum \cdots +\cdots$$

其中：

- $\Delta$ = 图的特征式
- $y_{\mathrm{in}}$ = 输入节点变量
- $y_{\mathrm{out}}$ = 输出节点变量
- G = $y_{\mathrm{in}}$ 和 $y_{\mathrm{out}}$ 间的总增益
- N = $y_{\mathrm{in}}$ 与 $y_{\mathrm{out}}$ 间的前向通道的总数
- Gk = $y_{\mathrm{in}}$ 与 $y_{\mathrm{out}}$ 间的第 k 个前向通道的路径增益
- Li = 系统中每个闭环回路增益
- LiLj = 任意2个互不接触回路（没有公共节点）的回路增益的乘积
- LiLjLk = 任何三个互不接触回路的回路增益的乘积
- $\Delta_k$ = 第 k 个前向通道的余子式，即将接触第 k 个前向通道的回路增益置为0后，特征式Δ所剩下的部分。

### 定义

- 通道：一组沿标识方向的连接输入输出的连续分支
- 前向通道：从一个输入节点到一个输出节点的通道，每个节点接触不超过一次。
- 回路：起始和终止在相同节点，并且没有节点接触两次的通道。
- 路径增益：该通道的所有分支的增益之积。
- 回路增益：回路中所有分支的增益之积。

### 步骤

要使用这种方法。

- 列出前向通道和它们的增益，将他们记为 Gk。
- 列出所有回路和它们的增益，将他们记为 Li（对第 i 个回路）。列出所有互不接触的回路和他们的增益（LiLj）。列出所有三个互不接触的回路（LiLjLk），然后四个，以至更多，直到找不出更多的互不接触的组合。
- 计算特征式 Δ 和余子式 Δk。
- 运用公式。

## 例子

### 二端口电路

<image>

需要求从 Vin 到 V2 的传递函数。

只有一个前向通路：

- Vin 到 V1 到 I2 到 V2 增益为$G_1 = -y_{21} R_L \,$

有三个回路：

- V1 到 I1 到 V1 增益为 $L_1 = -R_{in} y_{11} \,$
- V2 到 I2 到 V2 增益为 $L_2 = -R_L y_{22} \,$
- V1 到 I2 到 V2 到 I1 到 V1 增益为 $L_3 = y_{21} R_L y_{12} R_{in} \,$

$\Delta = 1 - ( L_1 + L_2 + L_3 ) + ( L_1 L_2 ) \,$ 注意：L1 和 L2 相互不接触，而 L3 接触其他两个回路。

$\Delta_1 = 1 \,$ 注意：前向通路接触了所有回路，所以剩下的就是 1。

$$G = \frac { G_1 \Delta_1 } { \Delta } = \frac { -y_{21} R_L } {1 + R_{in}y_{11} + R_L y_{22} - y_{21} R_L y_{12} R_{in} + R_{in}y_{11} R_L y_{22} } \,$$

### 数字IIR双二阶滤波器

<image>

经常将数字滤波器化成信号流图。

有两个回路

- $$L_1 = -a_1 Z^{-1} \,$$
- $$L_2 = -a_2 Z^{-2} \,$$

$\Delta = 1 - ( L_1 + L_2 ) \,$ 注意，这两个回路接触，所以没有他们的乘积项。

有三个前向通道

- $$G_0 = b_0 \,$$
- $$G_1 = b_1 Z^{-1} \,$$
- $$G_2 = b_2 Z^{-2} \,$$

所有的前向通道都接触，所以 $\Delta_0 = \Delta_1 = \Delta_2 = 1 \,$

$$G = \frac { G_0 \Delta_0 +G_1 \Delta_1 + G_2 \Delta_2 } {\Delta} \,$$

$$G = \frac { b_0 + b_1 Z^{-1} + b_2 Z^{-2} } {1 +a_1 Z^{-1} + a_2 Z^{-2} } \,$$

### 伺服驱动器

<image>

此信号流中有六个回路，分别是：

- $$L_0 = - \frac {\beta} {sM} \,$$
- $$L_1 = \frac{-( R_M + R_S)} {sL_M} \,$$
- $$L_2 = \, \frac {-G_M K_M} {s^2 L_M M}$$
- $$L_3 = \frac {-K_C R_S} {sL_M} \,$$
- $$L_4 = \frac {-K_V K_C K_M G_T} {s^2 L_M M} \,$$
- $$L_5 = \frac {-K_P K_V K_C K_M } {s^3 L_M M} \,$$

$$\Delta = 1 - (L_0+L_1+L_2+L_3+L_4+L_5) + (L_0 L_1 + L_0 L_3)\,$$

只有一个前向通路：

- $$g_0 = \frac {K_P K_V K_C K_M } {s^3 L_M M} \,$$

所有的前向通道都接触，所以 $\Delta_0 = 1$

整个系统的增益是$\frac {\theta_L} {\theta_C} = \frac {g_0 \Delta_0} {\Delta} \,$

## 等效矩阵形式

梅森增益公式可以用简单的矩阵公式表示。假设$\mathbf{T}$是信号流图的转换矩阵，其中$t_{nm} = \left[\mathbf{T}\right]_{nm}$是由节点m到'n所有分支transmittance的和，则节点m到'n的增益为$u_{nm} = \left[\mathbf{U}\right]_{nm}$，其中

$\mathbf{U} = \left ( \mathbf{I} - \mathbf{T} \right ) ^ {-1}$,

而$\mathbf{I}$为单位矩阵。

梅森增益公式也可以用在推导有巢状网络（其内回路在外回路以内）的离散网络z域传递函数。若是离散网络可以以信号流图表示，则梅森增益公式可以计算网络的z域传递函数H(z)。

## 复杂度及计算应用

由于有向图的路径数会随节点会以阶乘的形式增加，因此梅森增益公式的复杂度会以阶乘的形式往上成长。先考虑完整的有 $n$个顶点的有向图，每二个顶点都有一个边，从节点$y_{in}$到节点$y_{out}$的路径会是其他$(n-2)!$个节点的$(n-2)!$个排列，因此在一般的情形下，高斯消去法会比此方式有效率很多。

不过梅森增益公式将互相连接的系统的转换函数用代数及组合的方处理，允许一些代数系统理论中较广义的定义及计算方式。高斯消去法中会有许多的倒数计算，而梅森增益公式将其整理为单一的逆元素，其通式为

$$\frac{p}{1-q},$$

如上所述，$q$是回路乘积的总和，每一个都是环论中的理想。上式的分数形成有理函数的子环 $R(1+\langle L_i\rangle)^{-1}$。上述的观察可以延伸到非交换性的情形，不过梅森增益公式会被里格尔公式（Riegle's rule）所取代。