SciPy

scipy.linalg.solve_discrete_are

scipy.linalg.solve_discrete_are(a, b, q, r)[source]

Solves the discrete algebraic Riccati equation (DARE).

The DARE is defined as

\[X = A'XA-(A'XB)(R+B'XB)^-1(B'XA)+Q\]

It is solved directly using a Schur decomposition method.

Parameters:

a : (M, M) array_like

Non-singular, square matrix

b : (M, N) array_like

Input

q : (M, M) array_like

Input

r : (N, N) array_like

Non-singular, square matrix

Returns:

x : ndarray

Solution to the continuous Lyapunov equation

See also

solve_continuous_are
Solves the continuous algebraic Riccati equation

Notes

Method taken from: Laub, “A Schur Method for Solving Algebraic Riccati Equations.” U.S. Energy Research and Development Agency under contract ERDA-E(49-18)-2087. http://dspace.mit.edu/bitstream/handle/1721.1/1301/R-0859-05666488.pdf

New in version 0.11.0.