Python+Sympy(数式処理)でZパラメータ(インピーダンス行列)からSパラメータに変換する。その2,行列とベクトルのまま計算する場合。非可換シンボル(commutative=False)を使う。
昨日は行列とベクトルを成分に直して計算した。イマイチかっこわるい、、、ということで行列とベクトルのまま計算する方法。
Sympyで行列はMatrixSymbolで定義できるが、実はこれではどうやら今回のものは計算できないっぽい。
それは、solveがMatrixSymbolに対応してないから。
じゃあどうするか?というと、非可換の変数として定義する。
https://docs.sympy.org/latest/tutorial/manipulation.html
例えば
A=Symbol('A', commutative=False)とすると非可換になる。これならsolveが使える。ただしcollectiveは使えない。
成分と同様、こうやって計算できる。
from sympy import *
init_printing()
#Sパラメータ, Zパラメータの非可換の変数定義
V = Symbol('V', commutative=False)
I = Symbol('I', commutative=False)
a = Symbol('a', commutative=False)
b = Symbol('b', commutative=False)
S = Symbol('S', commutative=False)
Z = Symbol('Z', commutative=False)
#特性インピーダンスを対角成分にもつ行列のみ可換
Zo = Symbol('Zo')
#Zパラメータの定義
expr = V - Z*I
#V,Iを入射波a, 反射波bで書き直す。
expr2=expr.subs([(I, (a-b)/sqrt(Zo)), (V, (a+b)*sqrt(Zo))])
#反射波bについて解いたものがSパラメータ
Sconvert = solve(expr2, b)
#aをくくりだす
display(separatevars(Sconvert[0]))
結果はおなじみのものが得られた。
答え:
« Python+Sympy(数式処理)でZパラメータ(インピーダンス行列)からSパラメータに変換する。その1、成分で書く場合 | トップページ | Python+Sympy(数式処理)でZパラメータ(インピーダンス行列)からSパラメータに変換する。その3. S=(Z+Zo)⁻¹(Z-Zo)とS=(Z-Zo)(Z+Zo)⁻¹とどちらでもいいことを確認。 »
「日記・コラム・つぶやき」カテゴリの記事
- 高周波・RFニュース 2025年3月20日 住友化学がフィルムアンテナ拡大のため韓国の無線通信モジュール企業買収、三菱電機が3.6-4.0GHz帯 5G基地局用16W GaNパワーアンプ発表、SEMCOが車載0603 inch X6S 22㎌ 10V MLCC発表、LG Uplusの6Gビジョン(2025.03.20)
- 高周波・RFニュース 2025年3月19日 QualcommがSnapdragon Gシリーズをアップデート、RohmがAI搭載マイコン発表、Nordicがスマートグリッド等向けに915MHzモジュール発表、TDKが車載PoC用大電流巻き線インダクタ発表、TIがデータセンタ向けの電源管理チップ発表(2025.03.19)
- 高周波・RFニュース 2025年3月18日 MITのシリコンレンズ不要のテラヘルツ波発振器、NIとドレスデン工科大学の近接場アンテナ測定、u-bloxがセルラー事業をTrasnaに売却、TDKの予知保全プラットフォームedgeRX、Rohmのシリコンキャパシタ対談動画(2025.03.18)
- 高周波・RFニュース 2025年3月17日 iFixitがiPhone 16eのチップ同定、M4 MacBook Airを分解、WI-FiモジュールはUSI、CyntecがAPECでインダクタセミナー開催、KYOCERA AVXの0402サイズ47μF MLCC、Nothing Phone 3a, Motorola Moto G Power 2025分解動画(2025.03.17)
« Python+Sympy(数式処理)でZパラメータ(インピーダンス行列)からSパラメータに変換する。その1、成分で書く場合 | トップページ | Python+Sympy(数式処理)でZパラメータ(インピーダンス行列)からSパラメータに変換する。その3. S=(Z+Zo)⁻¹(Z-Zo)とS=(Z-Zo)(Z+Zo)⁻¹とどちらでもいいことを確認。 »
コメント