図13.9のプロット
#計算とグラフプロットに必要なモジュールの読み込み
import numpy as np
from control import matlab
from matplotlib import pyplot as plt
from scipy import arange
from scipy import signal
#伝達関数の分子・分母多項式を与える
num = [0, 0, 1] #分子多項式
den = [1, 1.1, 0.1] #分母多項式
#コントローラの分子・分母多項式を与える
numc1 = [0, 1] #K_i=1の場合の分子多項式
numc2 = [0, 0.08] #K_i=0.08の場合の分母多項式
denc = [1, 0] #コントローラの分母多項式
#制御対象とコントローラの伝達関数表現を与える
sys = matlab.tf(num, den) #伝達関数表現
c1 = matlab.tf(numc1, denc) #K_i=1の場合のコントローラの伝達関数表現
c2 = matlab.tf(numc2, denc) #K_i=0.08の場合のコントローラの伝達関数表現
#開ループ伝達関数を求める
sysL1 = c1*sys #K_i=1の場合の開ループ伝達関数
sysL2 = c2*sys #K_i=0.08の場合の開ループ伝達関数
#図13.9(a)と(c)のプロット
plt.subplot(1, 3, 1) #2つの図を並べるためのコマンド.1行2列の1列目という意味
matlab.nyquist(sysL1) #ベクトル軌跡のプロット(ナイキスト線図)
plt.xlim([-15,0]) #横軸(実軸)の範囲の指定
plt.ylim([-1,1]) #縦軸(虚軸)の範囲の指定
plt.grid(color='gray') #罫線を灰色で表示
plt.xlabel("Re") #横軸のラベル表示
plt.ylabel("Im") #縦軸のラベル表示
plt.title("K=1") #タイトルの表示
plt.subplot(1, 3, 2) #2つの図を並べるためのコマンド.1行2列の2列目という意味
matlab.nyquist(sysL2) #ベクトル軌跡のプロット(ナイキスト線図)
plt.xlim([-15,0]) #横軸(実軸)の範囲の指定
plt.ylim([-1,1]) #縦軸(虚軸)の範囲の指定
plt.grid(color='gray') #罫線を灰色で表示
plt.xlabel("Re") #横軸のラベル表示
#plt.ylabel("Im") #縦軸のラベル表示
plt.title("K=0.08") #タイトルの表示
plt.subplot(1, 3, 3) #2つの図を並べるためのコマンド.1行2列の2列目という意味
matlab.nyquist(sysL2) #ベクトル軌跡のプロット(ナイキスト線図)
plt.xlim([-1.5,0]) #横軸(実軸)の範囲の指定
plt.ylim([-1,1]) #縦軸(虚軸)の範囲の指定
plt.grid(color='gray') #罫線を灰色で表示
plt.xlabel("Re") #横軸のラベル表示
#plt.ylabel("Im") #縦軸のラベル表示
plt.title("K=0.08 (enlarged view)") #タイトルの表示
plt.show() #グラフの表示