2ポートSパラデータのGNDをGND以外につないだ3ポートSパラデータはどんな式で表すことができるのかSymPyで計算してみる。(この興味を解決するためにmaxima使おうとしたけどSymPyを発見して流されたというストーリーです)
で、まずはSymPyを使って2ポートSパラをYパラにしてみる(S2Y)。
難しいことは、ここ(TDKさんの「Sパラメータによる電子部品の評価」)を参照。
まずもってS2Yはこう表せます。
\[ \hat Y=\frac{I-S}{I+S} \tag{1} \]
$S_{org}$ってのが与えられた2ポートSパラデータだとして、 \[ S_{org}=\begin{pmatrix} S_{org11} & S_{org12}
\\ S_{org21} & S_{org22} \end{pmatrix} \tag{2} \]
ではJupyterセルにこう入力して計算させる。
from sympy import *
from sympy.abc import *
S_org11, S_org12, S_org21, S_org22 = symbols('S_org11 S_org12 S_org21 S_org22')
S_org = Matrix([[S_org11, S_org12],[S_org21, S_org22]])
I_2=eye(2)
Y_org=(I_2-S_org)*((I_2+S_org)**(-1))
Y_org=simplify(Y_org)
Y_org
\[ \displaystyle \left(\begin{matrix}\frac{S_{org12} S_{org21} - \left(S_{org11} -
1\right) \left(S_{org22} + 1\right)}{S_{org11} S_{org22} + S_{org11} - S_{org12} S_{org21} + S_{org22} + 1} & - \frac{2 S_{org12}}{S_{org11} S_{org22} + S_{org11} - S_{org12} S_{org21} +
S_{org22} + 1}\\- \frac{2 S_{org21}}{S_{org11} S_{org22} + S_{org11} - S_{org12} S_{org21} + S_{org22} + 1} & \frac{S_{org12} S_{org21} - \left(S_{org11} + 1\right) \left(S_{org22} -
1\right)}{S_{org11} S_{org22} + S_{org11} - S_{org12} S_{org21} + S_{org22} + 1}\end{matrix}\right) \]
すごいねSymPy。が、しかし、複雑だわ。先が思いやられる。
これを3ポートに拡張するには、Pythonで回路計算(8)によると、
\[ \begin{pmatrix} I_{1} \\ I_{2} \\ I_{3} \end{pmatrix} = \begin{pmatrix} Y_{11} &
Y_{12} & -(Y_{11}+Y_{12}) \\ Y_{21} & Y_{22} & -(Y_{21}+Y_{22}) \\ -(Y_{11}+Y_{21}) & -(Y_{12}+Y_{22}) & Y_{11}+Y_{12}+Y_{21}+Y_{22} \end{pmatrix} \begin{pmatrix} V_{1new} \\
V_{2new} \\ V_{3new} \end{pmatrix} \tag{3} \]
なので、次のセルに
Y_org11=Y_org[0,0]
Y_org12=Y_org[0,1]
Y_org21=Y_org[1,0]
Y_org22=Y_org[1,1]
Y_11=Y_org11
Y_12=Y_org12
Y_13=-(Y_org11+Y_org12)
Y_21=Y_org21
Y_22=Y_org22
Y_23=-(Y_org21+Y_org22)
Y_31=-(Y_org11+Y_org21)
Y_32=-(Y_org12+Y_org22)
Y_33=Y_org11+Y_org12+Y_org21+Y_org22
Y=Matrix([[Y_11,Y_12,Y_13],[Y_21,Y_22,Y_23],[Y_31,Y_32,Y_33]])
Y=simplify(Y)
Y
とすると、
\[ \displaystyle \left(\begin{matrix}\frac{S_{org12} S_{org21} - \left(S_{org11} -
1\right) \left(S_{org22} + 1\right)}{S_{org11} S_{org22} + S_{org11} - S_{org12} S_{org21} + S_{org22} + 1} & - \frac{2 S_{org12}}{S_{org11} S_{org22} + S_{org11} - S_{org12} S_{org21} +
S_{org22} + 1} & \frac{- S_{org12} S_{org21} + 2 S_{org12} + \left(S_{org11} - 1\right) \left(S_{org22} + 1\right)}{S_{org11} S_{org22} + S_{org11} - S_{org12} S_{org21} + S_{org22} + 1}\\-
\frac{2 S_{org21}}{S_{org11} S_{org22} + S_{org11} - S_{org12} S_{org21} + S_{org22} + 1} & \frac{S_{org12} S_{org21} - \left(S_{org11} + 1\right) \left(S_{org22} - 1\right)}{S_{org11} S_{org22}
+ S_{org11} - S_{org12} S_{org21} + S_{org22} + 1} & \frac{- S_{org12} S_{org21} + 2 S_{org21} + \left(S_{org11} + 1\right) \left(S_{org22} - 1\right)}{S_{org11} S_{org22} + S_{org11} - S_{org12}
S_{org21} + S_{org22} + 1}\\\frac{- S_{org12} S_{org21} + 2 S_{org21} + \left(S_{org11} - 1\right) \left(S_{org22} + 1\right)}{S_{org11} S_{org22} + S_{org11} - S_{org12} S_{org21} + S_{org22} + 1}
& \frac{- S_{org12} S_{org21} + 2 S_{org12} + \left(S_{org11} + 1\right) \left(S_{org22} - 1\right)}{S_{org11} S_{org22} + S_{org11} - S_{org12} S_{org21} + S_{org22} + 1} & \frac{2 \left(-
S_{org11} S_{org22} + S_{org12} S_{org21} - S_{org12} - S_{org21} + 1\right)}{S_{org11} S_{org22} + S_{org11} - S_{org12} S_{org21} + S_{org22} + 1}\end{matrix}\right) \]
\[ S=\frac{I-\hat Y}{I+\hat Y} \tag{4} \]
なので、次のセルに
I_3=eye(3)
S=(I_3-Y)*((I_3+Y)**(-1))
S=simplify(S)
S
とすると、
\[ \displaystyle \left(\begin{matrix}\frac{S_{org11} S_{org22} - 2 S_{org11} -
S_{org12} S_{org21} + S_{org12} + S_{org21} - 1}{S_{org11} + S_{org12} + S_{org21} + S_{org22} - 4} & \frac{- S_{org11} S_{org22} + S_{org11} + S_{org12} S_{org21} - 2 S_{org12} + S_{org22} -
1}{S_{org11} + S_{org12} + S_{org21} + S_{org22} - 4} & \frac{2 \left(S_{org11} + S_{org12} - 1\right)}{S_{org11} + S_{org12} + S_{org21} + S_{org22} - 4}\\\frac{- S_{org11} S_{org22} + S_{org11}
+ S_{org12} S_{org21} - 2 S_{org21} + S_{org22} - 1}{S_{org11} + S_{org12} + S_{org21} + S_{org22} - 4} & \frac{S_{org11} S_{org22} - S_{org12} S_{org21} + S_{org12} + S_{org21} - 2 S_{org22} -
1}{S_{org11} + S_{org12} + S_{org21} + S_{org22} - 4} & \frac{2 \left(S_{org21} + S_{org22} - 1\right)}{S_{org11} + S_{org12} + S_{org21} + S_{org22} - 4}\\\frac{2 \left(S_{org11} + S_{org21} -
1\right)}{S_{org11} + S_{org12} + S_{org21} + S_{org22} - 4} & \frac{2 \left(S_{org12} + S_{org22} - 1\right)}{S_{org11} + S_{org12} + S_{org21} + S_{org22} - 4} & - \frac{S_{org11} +
S_{org12} + S_{org21} + S_{org22}}{S_{org11} + S_{org12} + S_{org21} + S_{org22} - 4}\end{matrix}\right) \]
さすがにヘビーだったのか1.8秒もかかった。
もうちょっと何とかならんのかなーって手で計算して、
\[ \displaystyle \left( \begin{matrix} \frac{\left(S_{org22}-2\right)S_{org11}
-\left(1- S_{org12}\right)\left(1- S_{org21}\right)}{S_{org11} + S_{org12} + S_{org21} + S_{org22} - 4} & \frac{\left(S_{org21}-2\right)S_{org12} -\left(1- S_{org11}\right)\left(1-
S_{org22}\right)}{S_{org11} + S_{org12} + S_{org21} + S_{org22} - 4} & \frac{2 \left(S_{org11} + S_{org12} - 1\right)}{S_{org11} + S_{org12} + S_{org21} + S_{org22} - 4}\\
\frac{\left(S_{org12}-2\right)S_{org21} -\left(1- S_{org11}\right)\left(1- S_{org22}\right)}{S_{org11} + S_{org12} + S_{org21} + S_{org22} - 4} & \frac{\left(S_{org11}-2\right)S_{org22} -\left(1-
S_{org12}\right)\left(1- S_{org21}\right)}{S_{org11} + S_{org12} + S_{org21} + S_{org22} - 4} & \frac{2 \left(S_{org21} + S_{org22} - 1\right)}{S_{org11} + S_{org12} + S_{org21} + S_{org22} -
4}\\ \frac{2 \left(S_{org11} + S_{org21} - 1\right)}{S_{org11} + S_{org12} + S_{org21} + S_{org22} - 4} & \frac{2 \left(S_{org12} + S_{org22} - 1\right)}{S_{org11} + S_{org12} + S_{org21} +
S_{org22} - 4} & - \frac{S_{org11} + S_{org12} + S_{org21} + S_{org22}}{S_{org11} + S_{org12} + S_{org21} + S_{org22} - 4} \end{matrix} \right) \]
まぁまぁきれいになった。
scikit_rfで、s2pを読み込んだ後、3ポートのネットワークを生成して上記内容のSパラを代入していけばいいことになる。この方法だと、S2YでYパラが存在しなくてエラーになる心配はない。
これを、ポート数によらずに一般化できるともっといいんだけど、そんなスキルはない。いつか考える、、、かもしれない。
コメントをお書きください