|
前提知識
・1次遅れ系
・ネイピア数e
・指数関数
・RL回路
1次遅れ系のシステムは、ネイピア数eを底とする指数関数で表すことができます。
■1次遅れ系のシステム例題(RL回路)
1次遅れ系のRL回路を例に説明します。
(1)式を以下のとおり変形します。
(2)式は以下のとおり変形する事ができます。(参照:ラプラス変換)
■pythonによる実装
(2)(3)式から電流i(t)の動きをそれぞれ計算するプログラムは以下となります。
import numpy as np
import matplotlib.pyplot as plt
import math
times = np.arange(0,10,0.01)
i_t, i2_t = [],[]
i, i2 = 0,0
R,L = 1,1
deltime = 0.01
for time in times:
volt = 10
#(2)式
delt_i = (volt - i*R) / L * deltime
i = i + delt_i # 電流
i_t = np.append(i_t,i)
#(3)式
i2 = volt/R * (1 - math.e**(-1 * R/L * time)) # 電流
i2_t = np.append(i2_t,i2)
plt.plot(times, i_t)
plt.plot(times, i2_t)
plt.show()
結果は以下のとおり、(2)(3)式は一致しているのが分かります。(重なっているため、線は一つしか見えません)
■(3)式は入力が変化しない前提
(3)式は入力(この場合は電圧)が変化しない全体のため、途中で入力が変化すると、以下のとおり上手くいきません。
5秒経過時点で電圧が10V⇒15Vに変化,オレンジが(3)式
■(3)式を逐次計算の式に変形する
上記問題を解消するため、(3)式を以下の様に逐次計算する方式に変更します。
プログラムは以下のとおり。
import numpy as np
import matplotlib.pyplot as plt
import math
times = np.arange(0,10,0.01)
i_t, i2_t = [],[]
i, i2 = 0,0
R,L = 1,1
deltime = 0.01
for time in times:
if time<5 :volt = 10
else :volt = 15
#(2)式
delt_i = (volt - i*R) / L * deltime
i = i + delt_i # 電流
i_t = np.append(i_t,i)
#(3)式
i2 = volt/R * (1 - math.e**(-R/L * deltime)) + i2 * math.e**(-R/L * deltime) # 電流
i2_t = np.append(i2_t,i2)
plt.plot(times, i_t)
plt.plot(times, i2_t)
plt.show()
結果は以下のとおり、(2)(4)式が一致することが分かります。
サブチャンネルあります。⇒ 何かのお役に立てればと
|
|