7.3.2 リアプノフ関数の挙動


 Simulink を利用してリアプノフ関数の挙動を確認するためのファイル

 (1) 関数 "lyap" によるリアプノフ方程式の求解(Q が正定行列の場合) ...... M ファイル lyapunov_lyap.m (p.152)
clear
format compact

A = [ 0 -5
      1 -2 ];
eig(A)

Q = eye(2);
P = lyap(A',Q)
eig(P)

 (2) シミュレーション ...... Simulink モデル (p.154)
simulink_lyapunov_R2010b.mdl(R2010b 以降のバージョン用)
simulink_lyapunov_R2007b.mdl(R2007b 以降のバージョン用)
simulink_lyapunov_R13SP1.mdl(R13SP1 以降のバージョン用)
 (3) シミュレーション結果の表示 ...... M ファイル plot_data_lyap.m (p.153)
figure(1);
plot(t,x(:,1),'b',t,x(:,2),'r--'); grid;
xlabel('time [s]');
ylabel('x1(t) and x2(t)');
legend('x1(t)','x2(t)');

figure(2);
plot(t,phi,'b',t,dphi,'r--'); grid;
xlabel('time [s]');
ylabel('\phi(x(t)) and d\phi(x(t))/dt');
legend('\phi(x(t))','d\phi(x(t))/dt',4);
 (3') シミュレーション結果の表示(グラフのカスタマイズ) ...... M ファイル plot_data_lyap2.m (本には記載していない)
figure(1);
plot(t,x(:,1),'b',  'linewidth',2); hold on
plot(t,x(:,2),'r--','linewidth',2); hold off
grid;

% --- グラフのカスタマイズ --------------------------------
xlim([0 4]);
ylim([-0.5 1]);
 
set(gca,'xtick',[0:1:4]);
set(gca,'ytick',[-0.5:0.5:1]);
 
set(gca,'fontname','times','fontsize',20);

xlabel('{\it{t}} [s]','fontname','times','fontsize',22);
ylabel('{\it{x}}_{1}({\it{t}}) and {\it{x}}_{2}({\it{t}})','fontname','times','fontsize',22);

legend('{\it{x}}_{1}({\it{t}})','{\it{x}}_{2}({\it{t}})');
set(legend,'fontname','times','fontsize',20);

% ==========================================================
figure(2);
plot(t,phi, 'b',  'linewidth',2); hold on
plot(t,dphi,'r--','linewidth',2); hold off
grid;

% --- グラフのカスタマイズ --------------------------------
xlim([0 4]);
ylim([-1 0.5]);
 
set(gca,'xtick',[0:1:4]);
set(gca,'ytick',[-1:0.5:0.5]);
 
set(gca,'fontname','times','fontsize',20);

xlabel('{\it{t}} [s]','fontname','times','fontsize',22);
ylabel('{\it{\phi}}({\it{x}}({\it{t}})) and {\it{d\phi}}({\it{x}}({\it{t}})){\it{dt}}','fontname','times','fontsize',22);

legend('{\it{\phi}}({\it{x}}({\it{t}}))','{\it{d\phi}}({\it{x}}({\it{t}})){\it{dt}}',4);
set(legend,'fontname','times','fontsize',20);


 実行結果

 (1) リアプノフ方程式の求解と初期状態 x(0) の設定
>> lyapunov_lyap
ans =
  -1.0000 + 2.0000i
  -1.0000 - 2.0000i
P =
    0.5000   -0.5000
   -0.5000    1.5000
ans =
    0.2929
    1.7071
>> x0 = [ 1  0 ]';
 (2) シミュレーション開始

    もしくは
    もしくは
>> sim('simulink_lyapunov_R2010b')
 (3) シミュレーション結果の表示
>> plot_data_lyap

 (3') シミュレーション結果の表示(グラフのカスタマイズ)
>> plot_data_lyap2