Lcapyとは?
Lcapyは線形回路を解析するためのPythonパッケージで、記号解析にsympyを利用しています。
公式ドキュメント:Welcome to Lcapy’s documentation!
Lcapyは回路の数値解析と記号解析が行えます。数値解析はSPICE系シミュレータが出力する結果のように、解析結果が数値で表されるものです。記号解析は回路の伝達関数やインピーダンスを記号(数式)で表すというものです。この機能を使うことで、面倒な回路方程式を解く作業をコンピュータにやらせることが出来ます。
Lcapyには教科書品質の回路図をコマンドベースで描くといった機能もあります1。
Lcapyに関する情報は2020/10/31/時点でQiitaでは0件でした。Googleで調べてみても、日本語圏はおろか、英語圏でも情報がほとんどヒットしませんでした。
Lcapyで何が出来るのか?は公式ドキュメントのoverviewを読んでいただくのが良いかと思います。Lcapyに関する私の記事を最後に紹介しますが、Lcapyの機能を知るのに役立つかもしれません。
この記事ではLcapy使えるようにする方法を説明します。Lcapyユーザーが増え、有益な情報交換が出来るようになれば幸いです。
使い方
公式ドキュメントのInstallationによると以下のpythonパッケージが必要とありますので、これらをpipを使ってインストールしましょう。
lcapy, sympy, numpy, matplotlib, networkx
回路図を作成する機能(schematic drawing)を使わないのであれば、インストールはこれで終わりです。
動かしてみる
インストールが終わったらJupyter-notebook上で動作確認をしてみましょう。
Lcapyでは様々な方法で回路の伝達関数を求めることが出来ますが、その一例を以下に示します。
from lcapy import Circuit, s
cct = Circuit("""
Vi 1 0
R 1 2 RF
C 2 0 CF
""")
H = (cct.C.V(s) / cct.Vi.V(s)).simplify()
H
実行結果は以下の通りで、回路の伝達関数を記号的に解析することが出来ました。
$$\frac{1}{C_{F} R_{F} s + 1}$$
回路図を作成できるようにする
回路図の作成機能(schematic drawing)を使いたい場合はTeXをインストールする必要があります。
公式ドキュメントのInstallationによると、pdflatex、circuitikz、ghostscriptが必要とあります。調べたところpdflatexはW32TeXで配布されており2、circuitikzパッケージもそのW32TeXには標準でインストールされているようです3。W32TeXインストーラを使えばghostscriptもついでにインストールできるようです。つまりW32TeXだけインストールすれば必要なものが全て揃います。
W32TeXはTeXインストーラ 3を利用することで簡単にインストールできます。
動かしてみる
from lcapy import Circuit
cct = Circuit("""
Vi 1 0_1 step; down
R 1 2; right, size=1.5
C 2 0; down
W 0_1 0; right
W 0 0_2; right, size=0.5
P1 2_2 0_2; down
W 2 2_2;right, size=0.5""")
cct.draw()
なお、上記コードは以下から引用しました:
https://github.com/mph-/lcapy/tree/master/doc/examples/notebooks
回路の記号解析について
数年間ほど回路設計関連の業務に携わってきましたが、回路の記号解析が出来るツールの存在を最近まで知りませんでした。
回路解析の種類とツールについては以下の博士論文が参考になります。
電気回路の振る舞いの数理とそのシンボリック計算について
論文の表1.1では回路の記号解析ツールとして、SAPWIN、SCAM、WASABIが紹介されていますが、これら以外にもQSapecNGやCircuitNAVIといったツールがあるようです。自分のやりたいことに合わせて最適なツールを選択するのが良いと思います。
私の場合、やりたいことは以下の通りでした
1)回路の伝達関数を記号的に解析する
2)得られた伝達関数を展開する(極を求めるなど)
3)得られた伝達関数を数値計算する
4)数値計算した結果を綺麗なグラフで表示する。
これらを行うためには、Python(Lcapy)が最適な選択でした。
Lcapyについては以下の記事を書いていますので、そちらも是非ご覧ください。
【回路×Python】Lcapyを使って回路の伝達関数を求める方法
【回路×Python】Lcapyを使って伝達関数を展開・計算する方法
-
LcapyではダイオードやMOSといった非線形デバイスを解析することは出来ませんが、回路図として描くことは可能です。 ↩