dare
[x, l, g] = dare (a, b, q, r)[x, l, g] = dare (a, b, q, r, s)[x, l, g] = dare (a, b, q, r, [], e)[x, l, g] = dare (a, b, q, r, s, e)Solve discrete-time algebraic Riccati equation (ARE).
Inputs
Real matrix (n-by-n).
Real matrix (n-by-m).
Real matrix (n-by-n).
Real matrix (m-by-m).
Optional real matrix (n-by-m). If s is not specified, a zero matrix is assumed.
Optional descriptor matrix (n-by-n). If e is not specified, an identity matrix is assumed.
Outputs
Unique stabilizing solution of the discrete-time Riccati equation (n-by-n).
Closed-loop poles (n-by-1).
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) 1996-2025, SLICOT, available under the BSD 3-Clause
(License and Disclaimer).
Source Code: dare