Mason(メイソン/マソン)の定理

って、これ、wikipediaに載ってないんですよ!!


僕は説明とか下手なのでwikiのほうはほかの方に任せたいところなんですが、僕みたいに「制御工学の課題」でメイソンの公式をつかって計算しろみたいなものが出て、計算時にうまくいかない人がいると共感できてしまって申し訳ないので、まあ、僕の知っている範囲で、説明できる範囲で説明しようと思います。

さて、いきなり図を貼りましたがまずこれの説明をします。
制御工学をやっている方はわかるかと思いますが、この図は制御回路です。

そもそも、このメイソンの公式を使うと何ができるかというと、上の図のような制御回路を、ひとつの素子で表すことができるようになるわけです。
(こんな感じに:入力 ―→[変換要素]―→ 出力)
メイソンの公式を使わずに回路変形でやることも可能ですが、ぶっちゃけめんどいです。

さて、まずメイソンの公式を用いるのに必要な用語を説明します。
G1,G2……,H1,H2……は、素子ですね。G1という素子をXという信号が通過すると、XG1という信号が出てきます。(こんな感じ:X ―→[G1]―→ XG1)

図1に示されているP1,P2というのは、「パス」と言って、制御回路の入力端から出力端へ突き抜ける経路です。ただし、一つの「パス」は、一つの経路を一度しか通れません。故に、一度G1側へ入った「パス」は、G3側に入ることができません。P1=G1G2,P2=G3というように表します。

図2に示されたL1は「ループ」です。その名のとおり、矢印に従って一周する経路です。こちらも、一つの「ループ」内で同じ素子を2度通ることはできません。L1=G1L1と示します。

なので、図3はパスとループが混在した回路になりますね。この図3の回路をメイソンの公式でひとつの素子に変換しようと思います。

図3を見ると、ループのL1とL3が同じ経路(G2とそれに隣接した線)を通っていることがわかるかと思います。
このような状態のことを、「ループの独立性がない」といいます。
逆に、L1とL2,また、L2とL3はそれぞれ同じ経路を通っていないので「ループが独立」しています。


ここで、図3において
P1=G1G2
L1=G2H1
L2=G2H3
L3=G1H2
であることを確認してください。

メイソンの公式においては、この要素にさらにΔ(グラフ・デターミナント)というものが必要となります。

Δ=1-ΣLi+ΣLiLj-ΣLiLjLk+ΣLiLjLkLm-……
という式で出せるのですが、ここで注意しなければいけないのは、
LiとLj、Lk、……はそれぞれ「独立である」必要があります。
また、LiとLj、Lk、……のなかには同じループは含まれません(L1L1L1のような項は存在できません)。

故に、
ΣLi=L1+L2+L3
ΣLiLj=L1L2+L2L3
(L1とL3は独立していないので、ΣLiLjにL1L3は含まれません)
ΣLiLjLk=0
(L1とL2、L2とL3はそれぞれ独立ですが、L1とL3が独立でないため、L1L2L3は含まれません)
ΣLiLjLkLmから先は、そもそもループが3つまでしかないので全て0になります。

そのため、図3でのΔは、
Δ=1-(L1+L2+L3)+(L1L2+L2L3)
となります。

このΔを用いて、回路の素子を全て合わせた一つの素子(要素T)は、

   ΣPiΔi
T=―――――――
    Δ
となります。


この時のPiΔiというのは、任意のパス(Pi)と、それに交わる(重なる)要素を除いたグラフ・デターミナント(Δi)の積になります。

図3の場合では、P1はG1周辺でL2と、G2周辺でL1,L3と経路が重なっているので、L1,L2,L3を含むΔの要素を全て取り除くので、
Δ1=1
となります。
今回はパスが一つしかありませんので、
ΣPiΔi=P1Δ1=P1=G1G2
Δは既に計算済みですので、Tは

        G1G2
T=――――――――――――――――
   1-(L1+L2+L3)+(L1L2+L2L3) 

となります。

これで、メイソンの定理は終わりなのですが、僕の間違えた点をご紹介。


上記のやり方では、ΣLiの項はΔにおいてマイナスの係数が付いていますが、実際の回路ではこれがプラスになることがあります。
(図3の場合
Δ=1-(L1+L2+L3)+(L1L2+L2L3)
   ↓
Δ=1+(L1+L2+L3)+(L1L2+L2L3)
となることがある)

これは、ループの加算部分(○に二つの→が入っているところ)で、H側からの入力がマイナス(減算、負のフィードバック)として入っているときに起きます。(図3だと、○に入っている→のそばの符号が、Hからの→側が"+"から"-"に置き換わっている時になります)
この場合のLの式は
L=G1×(-H1)
と、フィードバック部分(H1)にマイナスの係数をかけて計算するので気を付けてください。因みにΣLiLj等偶数個の積の項ではLiLj=G1(-H1)G2(-H2)=G1H1G2H2と、マイナスどうしが打ち消しあって結果的にはプラスのままになります。

逆に、ΣLi等の項にマイナスをかけ忘れても厄介なことになるのでお気を付けください。

あとは、「ループの独立性」と「Δi」の考え方・求め方さえうまくいけば、回路変換よりもはるかに簡単に素子を一つにまとめられるのでとても便利です。
また、回路変形で解いた時の答え合わせにも有効だと思います。

まあ、もし同じような感じで課題やっている人がいたら、がんばってください。僕もがんばりますんでwww