types.protocols.LinearizableContinuousProtocol

types.protocols.LinearizableContinuousProtocol()

Continuous system with linearization capability.

Implementations

  • ContinuousSymbolicSystem
  • ContinuousStochasticSystem (returns A, B, G)

Use Cases

  • Continuous LQR/LQG design
  • H2/H-infinity control
  • Continuous Kalman filter
  • Lyapunov stability analysis

Examples

>>> def continuous_lqr(
...     system: LinearizableContinuousProtocol,
...     Q: np.ndarray,
...     R: np.ndarray
... ):
...     '''Design continuous-time LQR.'''
...     A, B = system.linearize(np.zeros(system.nx), np.zeros(system.nu))
...     from scipy.linalg import solve_continuous_are
...     P = solve_continuous_are(A, B, Q, R)
...     K = np.linalg.inv(R) @ B.T @ P
...     return {"K": K, "P": P}

Methods

Name Description
linearize Compute continuous-time linearization: A = ∂f/∂x, B = ∂f/∂u.

linearize

types.protocols.LinearizableContinuousProtocol.linearize(x_eq, u_eq=None)

Compute continuous-time linearization: A = ∂f/∂x, B = ∂f/∂u.

Parameters

Name Type Description Default
x_eq StateVector Equilibrium state required
u_eq Optional[ControlVector] Equilibrium control None

Returns

Name Type Description
LinearizationResult Tuple (A, B) or (A, B, G) for stochastic systems