Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Change language to: English - Français - 日本語 - Русский

See the recommended documentation of this function

Ajuda do Scilab >> CACSD > riccati

# riccati

Riccati equation

### Calling Sequence

```X=riccati(A,B,C,dom,[typ])
[X1,X2]=riccati(A,B,C,dom,[typ])```

### Arguments

A,B,C

real matrices nxn, `B` and `C` symmetric.

dom

`'c'` or `'d'` for the time domain (continuous or discrete)

typ

string : `'eigen'` for block diagonalization or `schur'` for Schur method.

X1,X2,X

square real matrices (X2 invertible), X symmetric

### Description

`X=riccati(A,B,C,dom,[typ])` solves the Riccati equation:

`A'*X+X*A-X*B*X+C=0`

in continuous time case, or:

`A'*X*A-(A'*X*B1/(B2+B1'*X*B1))*(B1'*X*A)+C-X`

with `B=B1/B2*B1'` in the discrete time case. If called with two output arguments, `riccati` returns `X1,X2` such that `X=X1/X2`.

### Examples

```// Continuous
n = 10;
A = rand(n,n);
B = rand(n,n);
C = rand(n,n);
C = C*C';
R = rand(n,n);
R = R*R'+eye();
B = B*inv(R)*B';

X = riccati(A,B,C,'c','eigen')```
```// Discrete

n = 10;
F = rand(n,n);
G1      = rand(n,n);
G2 = rand(n,n);
G2 = G2*G2'+eye();
G      = G1/G2*G1';
H      = rand(n,n);
H = H*H';

[X1,X2]= riccati(F,G,H,'d','schur')```