%図9.9
%
clear all; close all;

%伝達関数の分子・分母多項式を与える
num = [ 0 1 ]; %分子多項式
den = [ 1 1 ]; %分母多項式

%比例ゲインのパラメータを与える
Kp1 = 1.0; %K_p=1の場合のゲイン
Kp2 = 5.0; %K_p=5の場合のゲイン
Kp3 = 10.0; %K_p=10の場合のゲイン

%コントローラの分子・分母多項式を与える.
numc1 = [ Kp1 ]; %K_p=1の場合の分子多項式
numc2 = [ Kp2 ]; %K_p=5の場合の分子多項式
numc3 = [ Kp3 ]; %K_p=10の場合の分子多項式
denc = [ 1 ]; %分母多項式

%制御対象とコントローラの伝達関数表現を与える
sys = tf( num, den ); %制御対象の伝達関数表現
c1 = tf( numc1, denc ); %K_p=1.0の場合のコントローラの伝達関数表現
c2 = tf( numc2, denc ); %K_p=5.0の場合のコントローラの伝達関数表現
c3 = tf( numc3, denc ); %K_p=10.0の場合のコントローラの伝達関数表現

%コントローラと1次遅れ系のフィードバック結合を求める
sysc1 = feedback( c1*sys, 1); %K_p=1.0の場合のフィードバック結合
sysc2 = feedback( c2*sys, 1); %K_p=の5.0の場合のフィードバック結合
sysc3 = feedback( c3*sys, 1); %K_p=10.0の場合のフィードバック結合

%時間変数の定義
t = 0:0.01:10; %0から10まで0.01刻み

%ステップ応答の計算
[ y0, t0 ] = step( sys, t ); %K_p=0の場合のステップ応答
[ y1, t1 ] = step( sysc1, t ); %K_p=1.0の場合のステップ応答
[ y2, t2 ] = step( sysc2, t ); %K_p=5.0場合のステップ応答
[ y3, t3 ] = step( sysc3, t ); %K_p=10.0の場合のステップ応答

%図9.9のプロット
plot(t0,y0,'-b',t1,y1,'-g',t2,y2,'-y',t3,y3,'-r'); %ステップ応答をプロット
xlim([0,10]) %横軸(時間軸)の範囲の指定
ylim([0.0 1.1]) %縦軸の範囲の指定
xticks([0 2 4 6 8 10]) %横軸の目盛りの値の設定
yticks([0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0]) %縦軸の目盛りの値の設定
grid; %罫線を表示
xlabel('time  t [s]'); %横軸のラベル表示
ylabel('y(t)') %縦軸のラベル表示
legend('K_p = 0.0','K_p = 1.0','K_p = 5', 'K_p = 10'); %凡例の表示