Demonstrate eigenvector assignment using an STOVL Model for transition.

The example is taken from:

Lee, H. P., Jr., Yousseff, H.M. and R.P. Habek, "Application of Eigenstructure Assignment to the Design of STOVL Flight Control Systems," AIAA 88-4140-CP.

------------------------------------------------------------------------
See also STOVL, ESAssign, IC
------------------------------------------------------------------------

Contents

%---------------------------------------------------------------------------
%   Copyright (c) 2003 Princeton Satellite Systems, Inc.
%   All rights reserved.
%---------------------------------------------------------------------------

System

%-------
g = STOVL('longitudinal transition');

disp(' ')
disp('---------------------')
disp('Open loop eigenvalues')
disp('---------------------')

eig(g)
 
---------------------
Open loop eigenvalues
---------------------
ans =
      -2.5144 +          0i
       1.8883 +          0i
    -0.024921 +     0.1597i
    -0.024921 -     0.1597i
          -50 +          0i
          -50 +          0i
           -4 +          0i

Desired eigenvalues

%--------------------
j      = sqrt(-1);
lambda = [ -1.25 + j;...
           -1.25 - j;...
           -7.5;...
           -1.4];

Desired eigenvectors

%---------------------
vD = [  1 nan 0 0;...
        nan 1 0 0;...
        0 0 nan 1;...
        0 0 1 nan;...
        nan*ones(3,4)];
disp(vD);

fC = [1 1 0 0;...
      0 0 1 0;...
	  0 0 0 1];
     1   NaN     0     0
   NaN     1     0     0
     0     0   NaN     1
     0     0     1   NaN
   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN

Compute the gain and the achieved eigenvectors

%-----------------------------------------------
disp(' ')
disp('----')
disp('Gain')
disp('----')
k = ESAssign( g, lambda, vD, fC );
disp(k);
 
----
Gain
----
Warning: The selected eigenvector for eigenvalue 2 leads to an ill-conditioned inverse.
Warning: The selected eigenvector for eigenvalue 4 leads to an ill-conditioned inverse.
       1.0955       2.0764            0            0
            0            0      -1.8914            0
            0            0            0      0.53071

Create the closed loop system

%------------------------------
[a, b, c] = getabcd( g );
aCL       = a - b*k*c;

disp(' ')
disp('-----------------------')
disp('Closed loop eigenvalues')
disp('-----------------------')
eig(aCL)
 
-----------------------
Closed loop eigenvalues
-----------------------
ans =
      -45.069 +          0i
      -49.471 +          0i
      -4.0474 +    0.29163i
      -4.0474 -    0.29163i
     -0.77002 +     1.0853i
     -0.77002 -     1.0853i
     -0.50182 +          0i

Digitize the closed loop system using a zero order hold

%--------------------------------------------------------

% Simulate
%---------
x = [0;0;0;0;0;pi/180;0];
IC( g, x, 0.01, 1000 );
g = set( g, aCL, 'a' );

x = [0;0;0;0;0;pi/180;0];
IC( g, x, 0.01, 1000 );


%--------------------------------------