8.4.2 リカッチ方程式の数値解法(有本-ポッターの方法)


 ハミルトン行列と有本-ポッターの方法 ...... M ファイル optimal_hamilton.m (p.177)
clear
format compact

A = [  0  1
     -10 -1 ];
B = [ 0
      1 ];

Q = diag([ 300  60 ]);
R = 1;

n = 2;

H = [ A  -B*inv(R)*B'
     -Q       -A'    ]

[V Lambda] = eig(H)

num = 0;
for i = 1:2*n
  if real(Lambda(i,i)) < 0
    num = num + 1;
    V1(1:n,num) = V(  1:n,  i);
    V2(1:n,num) = V(n+1:2*n,i);
  end
end

V1, V2
P = V2/V1
>> optimal_hamilton
H =
     0     1     0     0
   -10    -1     0    -1
  -300     0     0    10
     0   -60    -1     1
V =
   -0.0069   -0.0065    0.0081    0.0076
   -0.0343   -0.0261   -0.0404   -0.0303
    0.9609    0.9802    0.9693    0.9855
    0.2746    0.1960   -0.2423   -0.1668
Lambda =
    5.0000         0         0         0
         0    4.0000         0         0
         0         0   -5.0000         0
         0         0         0   -4.0000
V1 =
    0.0081    0.0076
   -0.0404   -0.0303
V2 =
    0.9693    0.9855
   -0.2423   -0.1668
P =
  170.0000   10.0000
   10.0000    8.0000
>> lambda = [Lambda(3,3); Lambda(4,4) ]
lambda =
   -5.0000
   -4.0000
>> K = - acker(A,B,lambda)
K =
  -10.0000   -8.0000

 ハミルトン行列と有本-ポッターの方法(Robust Control Toolbox の関数 "aresolv" を利用)
    ...... M ファイル optimal_hamilton2.m (p.179)
clear
format compact

A = [  0  1
     -10 -1 ];
B = [ 0
      1 ];

Q = diag([ 300  60 ]);
R = 1;

[V1 V2] = aresolv(A,Q,B*inv(R)*B')
P = V2/V1
>> optimal_hamilton2
V1 =
    0.0081    0.0076
   -0.0404   -0.0303
V2 =
    0.9693    0.9855
   -0.2423   -0.1668
P =
  170.0000   10.0000
   10.0000    8.0000