Scilab Function
Last update : 12/01/2004

ric_desc - Riccati equation

### Calling Sequence

  `X=ric_desc(H [,E))`
  `[X1,X2,zero]=ric_desc(H [,E])`

### Parameters

- `H,E`: real square matrices
- `X1,X2`: real square matrices
- `zero`: real number

### Description

Riccati solver with hamiltonian matrices as inputs.

In the continuous time case calling sequence is `ric_descr(H)` (one input):

Riccati equation is:

      (Ec)   A'*X + X*A + X*R*X -Q = 0.

Defining the hamiltonian matrix `H` by:

     H = [A  R;
          Q -A']

with the calling sequence `[X1,X2,zero]=ric_descr(H)`, the solution `X` is given by `X=X1/X2`.

`zero` = L1 norm of rhs of (`Ec`)

The solution `X` is also given by `X=riccati(A,Q,R,'c'))`

In the discrete-time case calling sequence is `ric_descr(H,E)` (two inputs):

The Riccati equation is:

       (Ed)  A'*X*A-(A'*X*B*(R+B'*X*B)^-1)*(B'*X*A)+C-X = 0.

Defining `G=B/R*B'` and the hamiltonian pencil `(E,H)` by:

          E=[eye(n,n),G;               H=[A, 0*ones(n,n);
             0*ones(n,n),A']             -C, eye(n,n)];

with the calling sequence `[X1,X2,err]=ric_descr(H,E)`, the solution `X` is given by `X=X1/X2`.

`zero`= L1 norm of rhs of (`Ed`)

The solution `X` is also given by `X=riccati(A,G,C,'d')` with `G=B/R*B'`

### See Also

`riccati`,