Geometric Approach
     The Geometric Approach Tools
      Generalized LQ and LQR Problems

      Home page

 
The Geometric Approach is a collection of mathematical concepts developed to achieve a better and neater insight into the most salient features of multivariable linear dynamical systems in connection with compensator and regulator synthesis problems. It is based on the state space representation and is also very useful to easily link SISO and MIMO systems and to clarify in quite a concise and elegant way some common properties that cannot be pointed out by the transform-based techniques usually adopted in the SISO case.
Although the geometric tools are very simple and supported by exhaustive computational machinery, it is rather difficult to get a complete panorama of them, since their presentation in the literature by several authors over a period of about 30 years is not uniform in style and has very often been covered in unnecessarily heavy mathematics.
At the end of the sixties (1969) Basile, Marro and Laschi published some results using geometric techniques in five papers, three in Italian and two in English, that analyzed the basic tools and presented solutions to some problems to which they could profitably be applied: disturbance rejection, unknown-input observability and noninteraction. The first paper in English by Basile and Marro presented definitions and properties of the protagonists of this approach, that were called "controlled and conditioned invariant subspaces". In 1970 Wonham and Morse applied an algorithm similar to that for deriving the maximal controlled invariant to the solution of decoupling and noninteracting control problems, but did not explicitly define neither the controlled invariant nor the conditioned invariant. The new name "(A,B)-invariant" instead of "(A,B)-controlled invariant", was only used by Wonham in his book about five years afterwards, and, due to the circulation of this book, it was generally adopted.in the literature. On the other hand, this Wonham's funny move caused a big notational confusion: the dual object, the conditioned invariant, was called (A,C)-invariant or (C,A)-invariant, so that the symbols of the system matrices were freezed to stricly being (A,B,C). Now there is a trend to restore the original name. In fact, the "controlled invariant subspace"  is considered to be an element of a family whose members are the "controlled invariant set", the "controlled invariant polytope", the "controlled invariant distribution", the "controlled invariant polyedron", etc.
In the eighties further contributions are due to Willems (with the theory of almost controlled and almost conditioned invariant subspaces to deal with high-gain feedback problems), Anderson, Akashi, Bhattacharyya, Commault, Dion, Kucera, Imai, Malabre, Molinari, Pearson, Silverman and Schumacher, who contributed with a complete study of system structure and regulation problems.
The use of self-bounded controlled and self-hidden conditioned invariant subspaces by Basile and Marro allowed for a more direct approach to control synthesis problems with stability. Introduction of the robust controlled invariant, also by Basile and Marro, opened the way to new applications. In the TDSC book (in Italian) and in Basile-Marro book (in English) particular emphasis is given to duality and the algorithmic environment is further analyzed.

 
The Geometric Approach Tools
download    (file ga.zip (50K) - Sept 2007)

The following m-files work both with Matlab 4, Matlab 5, Matlab 6 and Matlab 7.



Other significant files in the Geometric Approach Toolbox

For more information use the "help" command in the Command Window.



Q = ima(A[,p]) is an orthonormal basis for imA. If called as Q=ima(A,p) with p=1 permutations are allowed, while with p=0 they are not.

Q = ortco(A) is an orthonormal basis for the orthogonal complement of imA.

Q = sums(A,B) is an orthonormal basis for subspace im[A B] = imA + imB.

Q = ints(A,B) is an orthonormal basis for the subspace (imA) intersection (imB).

Q = invt(A,X) is an orthonormal basis for the inverse map of imX in A.

Q = ker(A) is an orthonormal basis for kerA.

Q = mininv(A,B) is an orthonormal basis for the minimum A-invariant containing imB.

Q = maxinv(A,X) is an orthonormal basis for the maximal A-invariant contained in imX.

Q = miinco(A,C,X) is an orthonormal basis for the minimum (A,imC)-conditioned invariant containing imX.

Q = mainco(A,B,X) is an orthonormal basis for the maximum (A,imB)-controlled invariant contained in imX.

[V,F] = vstar(A,B,C[,D]) or [V,F] = vstar(sys) provides the maximum output-nulling (A,imB)-controlled invariant, i.e. the maximum subspace imV such that (A+BF)imV is contained in imV and imV is contained in ker(C+DF).

[V,F] = vstarg(A,B,C,D[,x]) or [V,F] = vstarg(sys) provides the maximum internally stbilizable output nulling controlled invariant. The five arguments call refers to discrete-time.

R = rvstar(A,B,C[,D]) or R = rvstar(sys) provides the max output nulling reachable subspace of (A,B,C,D) or of sys.

[S,G] = sstar(A,B,C[,D]) or [S,G] = sstar(sys) provides the maximum input containing (A,kerC)-conditioned invariant, i.e. the minimum subspace imS such that imS is contained in (A+GC)imS and im(B+GD)is  contained in imS.

Q = robcoin(A,B,E) is an orthonormal basis for the maximal robust (A(k),imB(k))-controlled invariant contained in ints(kerE(k)). The input matrices are A := [A(1) A(2) ...], B := [B(1) B(2) ... ], E := [E(1) E(2) ... ].

[P,Q] = stabi(A,X) provides as P and Q the critical matrices for theinternal and external stability of the A-invariant imX.

[P,Q] = stabv(A,B,X) provides as P and Q the critical matrices for theinternal and external stabilizability of (A,B)-controlled invariant imX.

F = effe(A,B,X) is a state-to-input feedback matrix such that the (A,imB)-controlled invariant imX is an (A+B*F)-invariant.

[z,X] = gazero(A,B,C[,D]) or [z,X] = gazero(sys) returns in a column vector the invariant zeros of the LTI system sys = ss(A,B,C[,D]). X is a matrix representing the invariant zero stucture of the system.

r = reldeg(A,B,C,[D])
provides as r the
relative degre  of the system (A,B,C,[D]).

r = rhomin(A,B,C,[D])
provides as r the minimum delay of the system (A,B,C,[D]).


F = effest(A,B,V,Pv,Pe)
. Given V, (A,imB)-controlled invariant, an F is derived such that:
1  - im(V) is (A+B*F)-invariant;
2  - (A+B*F) on the reachable subspace of V has the eigenvalues of Pv, where Pv is a given column vector with at least dim(Rv) components;
3  - (A+B*F) external to V has the eigenvalues of Pe, where Pe is a given column vector with at least n-dim(Rv) components.


F = effesta(A,B,V[,1])
. Given V, (A,imB)-controlled invariant, an F is derived such that:
1  - Im(V) is an (A+BF)-invariant;
2  - the internal assignable eigenvalues of (A+BF), i.e. eig[(A+BF)/Rv], are assigned. They are requested in interactive mode.
F=effesta(A,B,V,1) also assigns the external eigenvalues of im(V), i.e. eig[(A+BF)|V+R], where R denotes the reachable subspace of (A,B).
<>

[Xs,Xu,X0] = subsplit(A) gives, for a continuous-time system:
1  - Xs: a basis matrix for the subspace of strictly stable modes of A;
2  - Xu: a basis matrix for the subspace of strictly unstable modes of A;
3  - X0: a basis matrix for the subspace of modes with zero real part.
[Xs,Xu,X0]=subsplit(A,1) gives the same in the discrete-time case.
[Xs,Xu,X0]=subsplit(A,2) in the discrete-time case moves the zero modes to X0.


[Am,Bm,Cm,Dm,Fs,Us] = extendf(A,B,C,D) computes Fs and Us such that the quadruple (Am,Bm,Cm,Dm) is left-invertible. This quadruple is defined as Am=A+B*Fs; Bm=B*Us; Cm=C+D*Fs; Dm=D*Us. When a state feedback matrix Fm referred to (Am,Bm,Cm,Dm) has been derived, the solution referred to (A,B,C,D) is recovered by using F=Us*Fm+Fs.

[Ac,Bc,Cc,Dc,err] = hud(A,B,C,H[,D,G]) provides a feedforward compensator (Ac,Bc,Cc,Dc) that, for the continuous-time system
       dot x(t) = A x(t) + B u(t) + H h(t)
           y(t) = C x(t) + D u(t) + G h(t)
or the discrete-time system
         x(k+1) = A x(k) + B u(k) + H h(k)
           y(k) = C x(k) + D u(k) + G h(k)
produces exact decoupling between input h and output y. The flag err is set equal to 1 if the program ends with an error message. The LTI system call: [sysc,err]=hdec(sys,H,[G]) is also possible.


[Ak,Bk,Ck,Dk,n1,n2,n3,n4] = kalmcd(A,B,C,D) provides as (Ak,b Bk,Ck,Dk) the Kalman equivalent realization of (A,B,C,D); the other outputs are:
n1  - state dimension of the controllable and unobservable subsystem;
n2  - state dimension of the controllable and observable subsystem;
n3  - state dimension of the uncontrollable and unobservable subsystem;
n4  - state dimension of the uncontrollable and observable subsystem.



Generalized LQ and LQR Problems
download    (file lqrfh.zip (16K)  - February 2005)
The following m-files fhlq.m and dfhlq.m give a robust solution of the finite-horizon LQ problems by only using the algebraic Riccati equation (Matlab routines care.m and dare.m) and a simple Lyapunov equation (Matlab routine lyap.m). They require Matlab 5 or Matlab 6 and the Control System Toolbox. The are new, original tools in the Matlab environment.

fhlq       Finite horizon continuous-time LQ problem
dfhlq      Finite horizon discrete-time LQ problem
fattmat    Factorization of the cost matrix




  FHLQ    finite horizon continuous-time LQ problem.
  - controlled system :  dx/dt = Ax(t) + Bu(t)
  - performance index :  J = (x(0)-z0)'P0 (x(0)-z0) +
          tf
      + int (x'Qx + u'Ru + 2x'Su) dt + (x(tf)-zf)'Pf (x(tf)-zf)
          0
  Stabilizability of (A,B) is required.

  1 - [P1,P2,P3]=fhlq(P0,Pf,tf,A,B,Q,R,S): first call giving matrices for
  the computation of the optimal cost as
         Jopt = z0' P1 z0 + 2 z0' P2 zf + zf' P3 zf
  This first call is also necessary to provide some global data.

  2 - [X1t,U1t,X2t,U2t]=fhlq(t): subsequent calls that provide, for any
  t in [0,tf], matrices to compute the state and control functions as
         x(t)=X1t*z0+X2t*zf,
         u(t)=U1t*z0+U2t*zf.

  The case where the initial and/or the final state are stricty assigned is
  dealt with by setting P0=Inf and/or Pf=Inf in the first call. In these
  cases we set z0=x0 and/or zf=xf in the expressions of Jopt, x(t), u(t).




  DFHLQ   finite horizon discrete-time LQ problem.
  - controlled system:  x(k+1) = Ax(k) + Bu(k)
  - performance index:  J = (x(0)-z0)'P0 (x(0)-z0) +
        kf-1
      + sum (x'Qx + u'Ru + 2x'Su) + (x(kf)-zf)'Pf (x(kf)-zf)
        k=0
  Stabilizability of (A,B) is required.

  1 - [P1,P2,P3]=dfhlq(P0,Pf,tf,A,B,Q,R,S): first call giving matrices for
  the computation of the optimal cost as
         Jopt = z0' P1 z0 + 2 z0' P2 zf + zf' P3 zf
  This first call is also necessary to provide some global data.

  2 - [X1k,U1k,X2k,U2k]=dfhlq(k): subsequent calls that provide, for any
  k in [0,kf], matrices to compute the state and control functions as
         x(k)=X1k*z0+X2k*zf,
         u(k)=U1k*z0+U2k*zf.

  The case where the initial and/or the final state are stricty assigned is
  dealt with by setting P0=Inf and/or Pf=Inf in the first call. In these
  cases we set z0=x0 and/or zf=xf in the expressions of Jopt, x(k), u(k).




N = fattmat(M): given a symmetric positive semi-definite matrix M, N is a (rectangular) full rank matrix such that M = N' N.


Top of this page
Home Page