Function File: [x, l, g] = care (a, b, q, r)
Function File: [x, l, g] = care (a, b, q, r, s)
Function File: [x, l, g] = care (a, b, q, r, [], e)
Function File: [x, l, g] = care (a, b, q, r, s, e)

Solve continuous-time algebraic Riccati equation (ARE).

Inputs

a

Real matrix (n-by-n).

b

Real matrix (n-by-m).

q

Real matrix (n-by-n).

r

Real matrix (m-by-m).

s

Optional real matrix (n-by-m). If s is not specified, a zero matrix is assumed.

e

Optional descriptor matrix (n-by-n). If e is not specified, an identity matrix is assumed.

Outputs

x

Unique stabilizing solution of the continuous-time Riccati equation (n-by-n).

l

Closed-loop poles (n-by-1).

g

Corresponding gain matrix (m-by-n).

Equations

               -1
A'X + XA - XB R  B'X + Q = 0

                     -1
A'X + XA - (XB + S) R  (B'X + S') + Q = 0

     -1
G = R  B'X

     -1
G = R  (B'X + S')

L = eig (A - B*G)
                    -1
A'XE + E'XA - E'XB R   B'XE + Q = 0

                          -1
A'XE + E'XA - (E'XB + S) R   (B'XE + S') + Q = 0

     -1
G = R  B'XE

     -1
G = R  (B'XE + S)

L = eig (A - B*G, E)

Algorithm
Uses SLICOT SB02OD and SG02AD by courtesy of NICONET e.V.

See also: dare, lqr, dlqr, kalman.

Package: control