図6.9のプロット
#計算とグラフプロットに必要なモジュールの読み込み
import numpy as np
from control import matlab
from matplotlib import pyplot as plt
from scipy import arange
#2次遅れ系のパラメータを与える
K = 1 #K=1
zeta = 2 #ζ=2
omegan1 = 1.1 #ω_n=1.1
omegan2 = 5.0 #ω_n=5
omegan3 = 10.0 #ω_n=10
#伝達関数の分子・分母多項式を与える
num1 = [0, 0, K * omegan1**2] #ω_n=1.1の場合の分子多項式
den1 = [1, 2 * zeta * omegan1, omegan1**2] #ω_n=1.1の場合の分母多項式
num2 = [0, 0, K * omegan2**2] #ω_n=5.0の場合の分子多項式
den2 = [1, 2 * zeta * omegan2, omegan2**2] #ω_n=5.0の場合の分母多項式
num3 = [0, 0, K * omegan3**2] #ω_n=10.0の場合の分子多項式
den3 = [1, 2 * zeta * omegan3, omegan3**2] #ω_n=10.0の場合の分母多項式
#伝達関数表現を与える
sys1 = matlab.tf(num1, den1) #ω_n=1.1の場合の伝達関数表現
sys2 = matlab.tf(num2, den2) #ω_n=5.0の場合の伝達関数表現
sys3 = matlab.tf(num3, den3) #ω_n=10.0の場合の伝達関数表現
#時間変数の定義
t = arange(0, 20, 0.01) #0から20まで0.01刻み
#ステップ応答の計算
y1, t1 = matlab.step(sys1,t) #ω_n=1.1の場合のステップ応答
y2, t2 = matlab.step(sys2,t) #ω_n=5の場合のステップ応答
y3, t3 = matlab.step(sys3,t) #ω_n=5の場合のステップ応答
#図6.9のプロット
plt.plot(t1, y1, label = "omegan = 1") #ステップ応答をプロット
plt.plot(t2, y2, label = "omegan = 5") #ステップ応答をプロット
plt.plot(t3, y3, label = "omegan = 10") #ステップ応答をプロット
plt.xlim([0,20]) #横軸(時間軸)の範囲の指定
plt.ylim([0,1.1]) #縦軸の範囲の指定
plt.xticks([0,5,10,15,20]) #横軸の目盛りの値の設定
plt.yticks([0.0, 0.2, 0.4, 0.6, 0.8, 1.0]) #縦軸の目盛りの値の設定
plt.grid(color='gray') #罫線を灰色で表示
plt.xlabel("time t[s]") #横軸のラベル表示
plt.ylabel("y(t)") #縦軸のラベル表示
plt.legend() #凡例の表示
plt.show() #グラフの表示