%図13.9, 13.10, 13.11, 13.12

clear all; close all;

%システムパラメータを与える
A = [0 1;-6 -5]; %行列A
b = [0;1]; %ベクトルb
c = [1 0]; %ベクトルc
d = 0; %スカラーd

%状態フィードバックによる閉ループの極
fbp = [-3; -3];

%フィードバックゲインを求める
disp('求めるフィードバックゲイン');
f =  acker(A,b,fbp)
Af = A - b * f
disp('閉ループ極')
eig(A - b * f)

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

%サーボシステムの初期値を与える
x0 = [-1;0;0]; %システムの初期値

%図13.9
g1 = 0;

%サーボシステム
E1 = [Af b*g1;-c 0];
bE = [-b;0];
cE = eye(3);
dE = [0;0;0];

sys_servo1 = ss(E1, bE, cE, dE); %システムの状態空間表現

u_step = ones([1,length(t)]); %単位ステップ信号で表される入力

%ステップ応答の計算
y1 = lsim(sys_servo1,u_step,t,x0); %状態フィードバック系の初期値応答

%図13.9のプロット
figure(1) %図のウィンドウを開く
plot(t,y1(:,1),t,y1(:,2)); %各状態を抽出してプロット
xlim([0 10]); %横軸(時間軸)の範囲の指定
ylim([-1.2 1.2]); %縦軸の範囲の設定
grid; %罫線を表示
xlabel('time t[s]'); %横軸のラベル表示
ylabel('state'); %縦軸のラベル表示
legend('x_1(t)','x_2(t)'); %凡例の表示

%図13.10
g2 = 1;

%サーボシステム
E2 = [Af b*g2;-c 0];

sys_servo2 = ss(E2, bE, cE, dE); %システムの状態空間表現

%ステップ応答の計算
y2 = lsim(sys_servo2,u_step,t,x0); %状態フィードバック系の初期値応答

%図13.10のプロット
figure(2) %図のウィンドウを開く
plot(t,y2(:,1),t,y2(:,2)); %各状態を抽出してプロット
xlim([0 10]); %横軸(時間軸)の範囲の指定
ylim([-1.2 1.2]); %縦軸の範囲の設定
grid; %罫線を表示
xlabel('time t[s]'); %横軸のラベル表示
ylabel('state'); %縦軸のラベル表示
legend('x_1(t)','x_2(t)'); %凡例の表示

%図13.11
g3 = 5;

%サーボシステム
E3 = [Af b*g3;-c 0];

sys_servo3 = ss(E3, bE, cE, dE); %システムの状態空間表現

%ステップ応答の計算
y3 = lsim(sys_servo3,u_step,t,x0); %状態フィードバック系の初期値応答

%図13.10のプロット
figure(3) %図のウィンドウを開く
plot(t,y3(:,1),t,y3(:,2)); %各状態を抽出してプロット
xlim([0 10]); %横軸(時間軸)の範囲の指定
ylim([-1.2 1.2]); %縦軸の範囲の設定
grid; %罫線を表示
xlabel('time t[s]'); %横軸のラベル表示
ylabel('state'); %縦軸のラベル表示
legend('x_1(t)','x_2(t)'); %凡例の表示

%図13.12
g4 = 1.3;

%サーボシステム
E4 = [Af b*g4;-c 0];

sys_servo4 = ss(E4, bE, cE, dE); %システムの状態空間表現

%ステップ応答の計算
y4 = lsim(sys_servo4,u_step,t,x0); %状態フィードバック系の初期値応答

%図13.11のプロット
figure(4) %図のウィンドウを開く
plot(t,y4(:,1),t,y4(:,2)); %各状態を抽出してプロット
xlim([0 10]); %横軸(時間軸)の範囲の指定
ylim([-1.2 1.2]); %縦軸の範囲の設定
grid; %罫線を表示
xlabel('time t[s]'); %横軸のラベル表示
ylabel('state'); %縦軸のラベル表示
legend('x_1(t)','x_2(t)'); %凡例の表示
求めるフィードバックゲイン

f =

     3     1


Af =

     0     1
    -9    -6

閉ループ極

ans =

  -3.0000 + 0.0000i
  -3.0000 - 0.0000i