時間応答はStep応答やインテンシャル応答ではない、任意の入力に対する応答。lsimを使用する。
a01_Contorol_test1.ipynb
from control.matlab import*
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
# 初期条件
x0 = [0, 0]
# 時間配列
t = np.arange(0, 3, 0.01)
# 正弦波入力
freq = 0.5
amp = 1.0
u = amp * np.sin(2 * np.pi * freq * t)
# 伝達関数モデル
s = tf('s')
P = 1/(s**2+2*0.3*s+1)
# lsimで応答計算
(y1a, T1a, x1a) = lsim(P, U=u, T=t, X0=x0)
# グラフ表示
plt.axhline(0, color="b", linestyle="--")
plt.plot(T1a, u, label="Input")
plt.plot(T1a, y1a, label="Output")
plt.xlabel("Time (s)")
plt.ylabel("Displacement")
plt.title("Response to Sinusoidal Input")
plt.legend()
plt.grid(True)
plt.show()