control.forced_response

control.forced_response(sys, T=None, U=0.0, X0=0.0, transpose=False, interpolate=False, squeeze=True)

Simulate the output of a linear system.

As a convenience for parameters U, X0: Numbers (scalars) are converted to constant arrays with the correct shape. The correct shape is inferred from arguments sys and T.

For information on the shape of parameters U, T, X0 and return values T, yout, xout, see Time series data.

Parameters:
  • sys (LTI (StateSpace, or TransferFunction)) – LTI system to simulate
  • T (array-like, optional for discrete LTI sys) – Time steps at which the input is defined; values must be evenly spaced.
  • U (array-like or number, optional) –

    Input array giving input at each time T (default = 0).

    If U is None or 0, a special algorithm is used. This special algorithm is faster than the general algorithm, which is used otherwise.

  • X0 (array-like or number, optional) – Initial condition (default = 0).
  • transpose (bool, optional (default=False)) – If True, transpose all input and output arrays (for backward compatibility with MATLAB and scipy.signal.lsim)
  • interpolate (bool, optional (default=False)) – If True and system is a discrete time system, the input will be interpolated between the given time steps and the output will be given at system sampling rate. Otherwise, only return the output at the times given in T. No effect on continuous time simulations (default = False).
  • squeeze (bool, optional (default=True)) – If True, remove single-dimensional entries from the shape of the output. For single output systems, this converts the output response to a 1D array.
Returns:

  • T (array) – Time values of the output.
  • yout (array) – Response of the system.
  • xout (array) – Time evolution of the state vector.

Notes

For discrete time systems, the input/output response is computed using the scipy.signal.dlsim function.

For continuous time systems, the output is computed using the matrix exponential exp(A t) and assuming linear interpolation of the inputs between time points.

Examples

>>> T, yout, xout = forced_response(sys, T, u, X0)

See Time series data.