Categories &

Functions List

Function Reference: dare

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

Solve discrete-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 discrete-time Riccati equation (n-by-n).

l

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

g

Corresponding gain matrix (m-by-n).

Equations

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

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

               -1
 G = (B'XB + R)   B'XA

               -1
 G = (B'XB + R)   (B'XA + S')

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

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

               -1
 G = (B'XB + R)   B'XA

               -1
 G = (B'XB + R)   (B'XA + S')

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

Algorithm
Uses SLICOT SB02OD and SG02AD, Copyright (c) 2020, SLICOT, available under the BSD 3-Clause (License and Disclaimer).

See also: care, lqr, dlqr, kalman

Source Code: dare