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-1
and1
during 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
rtol
tolerance is met, ormax_length
simulation 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 :