
はじめに
電験では、電卓は必須で関数電卓は不可とされているが、実際の研究や場合では、パソコンや計算機をどんどん使用するべきである。そこで、以下のサイトから面白そうな古典制御工学に関するpythonプログラムを入手したので、紹介しておこう。
ただし、今回の場合は、リンク先のコードを少し改造させたものである。
環境は、Python-control(matklabベース)とmatplotとnumpyをanaconda環境で使用した。
Python-controlに関しては、pip install controlでインストールを行った。
コード
from control.matlab import * import matplotlib.pyplot as plt import numpy as np x_1=float(input("実部を入力してください")) y_1=float(input("虚部を入力してください")) a= complex(x_1,y_1) b= complex(x_1,-y_1) #伝達関数の設定 num = [1]#分子 den = [1, -(a+b), a*b]#分母 sys = tf(num, den) #ステップ応答 (y_s,t_s)=step(sys,T=np.arange(0,100,0.01)) #インパルス応答 (y_im,t_im)=impulse(sys,T=np.arange(0,100,0.01)) #初期値[2,3]応答 (y_in,t_in,x_in)=initial(sys,X0=[2,3],T=np.arange(0,100,0.01),return_x=True) #極の表示 print(pole(sys))#極の実軸が負の場合は、解は収束する #グラフの設定 fig=plt.figure(figsize=(10,8)) ax1=plt.subplot2grid((3,1),(0,0)) ax1.plot(t_s,y_s) ax2=plt.subplot2grid((3,1),(1,0)) ax2.plot(t_im,y_im) ax3=plt.subplot2grid((3,1),(2,0)) ax3.plot(t_in,x_in) plt.show()
コードについての説明
コードについて説明する。まずは、最初に根となる数値を代入すると、それが解となる二次方程式を作成後、伝達関数が形成される。
例えば、実部にa,虚部にbを入力した場合、解がa+jb,a-jbとなる二次方程式が形成される。ここで解析結果の一例を示す。
(1)a>0のとき
指数部の実部が0よりも大きい場合は、発散する。つまり、不安定解になってしまう。これは、発信回路やハウリングといった現象に当てはまる。
これは、aが0.1の時である。
ただし、1番目がステップ応答、2番目がインパルス応答、3番目が、[2,3]応答とした。
(2)a=0のとき
実部が0の場合も発散して、振幅一定の振動解になる。この場合も不安定な解になる。
(3)a<0のとき
最後に、実部が0よりも小さい場合は、減衰振動をして、一定値に収束する。なので、この場合は安定である。
a=-0.1のとき
まとめ
数値解析においてプログラミングは多用される。理系の学問においては、matlabといった有料のソフトウェアが便利であるが高価である。なので、今回はフリーで使用することが出来るpythonを用いた。以下おすすめの書籍も載せておくので、興味があったら読んでみても良いかもしれない。

電材館 第二種電気工事士 技能試験セット 「 電線2回分 」 「 ホーザン 工具 」 「 動画解説・テキスト付き 」 2023年
参加者500人以上
電験三種や電気工事士など
資格合格を目指す人が集まる
無料のオンラインサロン
【みんなのデンキ塾】
コメント