nengolib.signal.l1_norm¶
-
nengolib.signal.l1_norm(sys, rtol=1e-06, max_length=262144)[source]¶ Computes the L1-norm of a linear system within a relative tolerance.
The L1-norm of a (BIBO stable) linear system is the integral of the absolute value of its impulse response. For unstable systems this will be infinite. The L1-norm is important because it bounds the worst-case output of the system for arbitrary inputs within
[-1, 1]. In fact, this worst-case output is achieved by reversing the input which alternates between-1and1during the intervals where the impulse response is negative or positive, respectively (in the limit asT -> infinity).Algorithm adapted from [1] following the methods of [2]. This works by iteratively refining lower and upper bounds using progressively longer simulations and smaller timesteps. The lower bound is given by the absolute values of the discretized response. The upper bound is given by refining the time-step intervals where zero-crossings may have occurred.
Parameters: - sys :
linear_system_like Linear system representation.
- rtol :
float, optional Desired error (relative tolerance). Smaller tolerances require more compute time. Defaults to
1e-6.- max_length :
integer, optional Maximum number of time-steps to simulate the system’s impulse response. The simulation time-step is varied by the algorithm. Defaults to
2**18.
Returns: - norm :
float L1-norm of the output.
See also
Notes
The algorithm will terminate after either
rtoltolerance is met, ormax_lengthsimulation steps are required — whichever occurs first.References
[1] http://www.mathworks.com/matlabcentral/fileexchange/41587-system-l1-norm/content/l1norm.m J.F. Whidborne (April 28, 1995). [2] Rutland, Neil K., and Paul G. Lane. “Computing the 1-norm of the impulse response of linear time-invariant systems.” Systems & control letters 26.3 (1995): 211-221. - sys :