Python+SympyでMixed mode Sパラメータ(differential/common)を代数的に求める(1)
急にMixed mode Sパラメータの計算が必要になった。もちろん、
こういうところから適当に式を持ってきてもいいのだが(ってこれ誤植がMにある)、
一応ちゃんと計算しておこうと思ったが、もう手計算に全く自信なし。
ここは最近使っているPythonのSympyで確認しよう。
まず、ポート1とポート2のMixed mode (differential/Commonと言ってもいいし、Balance/Unbalanceと言ってもいい)を計算する。
ポート1の入射波をa1、反射波をb1、ポート2の入射波をa2、反射波をb2とし、
differential modeの入射波をadiff, 反射波をbdiff、
common modeの入射波をacom, 反射波をbcomと置く。
Mixedモードの定義に従ってSympyで書くと、
from sympy import * v1, v2, i1, i2=symbols('v1 v2 i1 i2') vdiff, vcom, idiff, icom=symbols('vdiff vcom idiff icom') a1, a2, b1, b2=symbols('a1 a2 b1 b2') adiff, acom, bdiff, bcomm=symbols('adiff acom bdiff bcom') Zo, Zdiff, Zcom=symbols('Zo Zdiff Zcom') init_printing() x=solve([a1-(v1+Zo*i1)/sqrt(Zo),b1-(v1-Zo*i1)/sqrt(Zo)],[v1,i1]) v1=x[v1] i1=x[i1] y=solve([a2-(v2+Zo*i2)/sqrt(Zo),b2-(v2-Zo*i2)/sqrt(Zo)],[v2,i2]) v2=y[v2] i2=y[i2] vdiff=v1-v2 idiff=(i1-i2)/2 vcom=(v1+v2)/2 icom=(i1+i2) Zdiff=2*Zo Zcom=Zo/2 adiff=(vdiff+Zdiff*idiff)/sqrt(Zdiff) bdiff=(vdiff-Zdiff*idiff)/sqrt(Zdiff) acom=(vcom+Zcom*icom)/sqrt(Zcom) bcom=(vcom-Zcom*icom)/sqrt(Zcom)
となる。
さて、これでadiff, acomなどをa1,a2などで表してみよう。
一瞬で計算できた!
なので変換行列Mを
M=1/sqrt(2)*[[1 -1],
[1, 1]]
とし、Sパラメータを
[[b1], = [[S11,S12], [[a1],
[b2]] [S12,S22]] [a2]]
で定義すると、変換後のSパラメータ Smixは
Smix = M S M-1
と計算できる。これを使えば4ポートのMixedモードもすぐに計算できる(それは次回のその2、で)。
« ココイチでスパイスカレー THEポークを食す。 | トップページ | 完璧なゆで卵の作り方方程式(Peter Barhamによる)をカシオの高精度計算サイトkeisan.casio.jpにUP! »
「学問・資格」カテゴリの記事
「日記・コラム・つぶやき」カテゴリの記事
コメント
« ココイチでスパイスカレー THEポークを食す。 | トップページ | 完璧なゆで卵の作り方方程式(Peter Barhamによる)をカシオの高精度計算サイトkeisan.casio.jpにUP! »
Great write-up, I’m normal visitor of one’s blog, maintain up the nice operate, and It is going to be a regular visitor for a long time.
投稿: erectile dysfunction clinics | 2018年4月18日 (水) 23時47分