DynamicSystems
NormHinf
Compute the H∞ norm of a linear system
Calling Sequence
Parameters
Options
Description
Examples
References
Compatibility
NormHinf(sys)
NormHinf(sys, eps)
sys
-
System; system object
eps
(optional) nonnegative; relative accuracy. The default value is 10^(-6).
opts
(optional) equation(s) of the form option = value; specify options for the NormHinf command
output = norm or peakfreq or list of these names.
Specifies the returned values. By default, only the H∞ norm is returned. If peakfreq is specified, the angular frequency (rad/s) at which the peak gain of sys occurs is returned.
checkstability = truefalse
True means check whether the system is stable; if it is not stable, raise a warning. False means skip the check. The default is true.
The NormHinf command computes the H∞ norm of a linear system sys, with relative accuracy eps. Both continuous-time and discrete-time systems, and both single-input single-output (SISO) and multiple-input multiple-output (MIMO) systems are supported.
Continuous-time
For a stable SISO linear system with transfer function G⁡s, the H∞ norm is defined in the frequency domain as:
‖G‖∞ = supω∈ℝ⁡G⁡jω
For a MIMO linear system with transfer function Matrix G⁡s, the definition of H∞ norm in the frequency domain is generalized to:
‖G‖∞ = supω∈ℝ⁡σmax⁡G⁡j⁢ω
where σmax is the maximum singular value.
In the time domain, the H∞ norm of a transfer function is calculated assuming that the stable transfer function G⁡s has a state-space representation:
x.=Ax+Bw
y=Cx+Dw
where: A ∈ ℝn×n, B ∈ ℝn×m, C ∈ ℝp×n, and D ∈ ℝp×m, and n, m, and p are the number of states, inputs and outputs of the linear system respectively.
G⁡s=Y⁡sW⁡s and G⁡s=C. sI−A−1. B+D, with A stable (all eigenvalues of A have a negative real part).
Then the H∞ norm of the transfer function Matrix G⁡s is ‖G‖∞<γ for some 0<γ, not equal to a singular value of Matrix D, if and only if σmax⁡H<γ has no eigenvalues on the imaginary axis. The Matrix H is defined as:
Hγ = A−BR−1DTC−γBR−1BTγCTS−1C−AT+CTDR−1BT
where R=DT·D−γ2⁢Im and S=D·DT−γ2⁢Ip (subscripts m and p indicate the dimensions of the respective identity Matrices).
Discrete-time
For a stable SISO linear system with transfer function G⁡z, the H∞ norm is defined in the frequency domain as:
‖G‖∞ = sup0≤⁢ω<2⁢π⁡G⁡ⅇj⁢ω
For a MIMO linear system with transfer function Matrix G⁡z, the definition of H∞ norm in the frequency domain is generalized to:
‖G‖∞ = sup0≤⁢ω<2⁢π⁡σmax⁡G⁡ⅇj⁢ω
In the time domain, the H∞ norm of a transfer function is calculated assuming that the stable transfer function G⁡z has a state-space representation:
x⁡k+1=Ax⁡k+Bw⁡k
y⁡k=Cx⁡k+Dw⁡k
so that G⁡z=Y⁡zW⁡z and G⁡z=C. zI−A−1. B+D, with A stable (all eigenvalues of A have a magnitude less than 1).
The H∞ norm of the transfer function Matrix G⁡z is calculated using the bilinear transformation, since the H∞ norm for a discrete-time LTI system is preserved in the continuous-time domain under such transformation.
The H∞ norm provides a measure of the worst-case system gain, i.e., the largest factor by which any sinusoidal input is magnified by the system. For instance, the H∞ norm of the transfer function G from w (disturbance input) to y (output) provides a measure of the worst-case influence of the noise w on the output y of an LTI system.
For a SISO linear system, the H∞ norm is the maximum gain of the frequency response of the system. In an analogous way, for a MIMO linear system, the H∞ norm is the maximum gain across all inputs and outputs of the system.
The H∞ norm of G equals the peak value on the Bode magnitude plot of G. It also equals the distance from the origin to the farthest point on the Nyquist plot of G.
The H∞ norm is finite if and only if the transfer function G is proper (degree of denominator greater than or equal to degree of numerator) and has no poles on the imaginary axis (continuous-time) or on the unit circle (discrete-time).
with( DynamicSystems ):
Example 1 : Find the H∞ norm of a continuous-time system.
sys1 := TransferFunction(100/(s+5)):
PrintSystem(sys1);
Transfer Functioncontinuous1 output(s); 1 input(s)inputvariable=u1⁡soutputvariable=y1⁡stf1,1=100s+5
hinfnorm1 := NormHinf(sys1, 10^(-10));
hinfnorm1≔20.00000000
MagnitudePlot(sys1, decibels = false, range = 0.001..100);
mag := MagnitudePlot(sys1, decibels = false, range = 0.001..100, output = data):
Hinfgraph := max(mag(1..-1, 2..2));
Hinfgraph≔19.9999996000000
Example 2: Find the H∞ norm of the system given by the following differential equation. Show the peak frequency and the norm in that order.
sys2 := DiffEquation(diff(diff(x(t),t),t) = -10*x(t) - diff(x(t),t) + w(t), [w(t)], [x(t)]):
PrintSystem(sys2);
Diff. Equationcontinuous1 output(s); 1 input(s)inputvariable=w⁡toutputvariable=x⁡tde=ⅆ2ⅆt2x⁡t=−10⁢x⁡t−ⅆⅆtx⁡t+w⁡t
hinfnorm2 := NormHinf(sys2, 'output' = [peakfreq, norm]);
hinfnorm2≔3.08220698300548,0.320256627866482
MagnitudePlot(sys2, decibels = false);
mag := MagnitudePlot(sys2, decibels = false, output = data):
member(max(mag(1..-1, 2..2)), mag(1..-1, 2..2), 'p'): fHinf := mag(p);
fHinf≔3.079785057
Hinfgraph≔0.320252649756933
Example 3 : Find the H∞ norm of a continuous state-space MIMO system.
sys3 := StateSpace( <<0,0,-3>|<1,0,-4>|<0,1,-7>>, <<0,0,1>>, <<1>|<0>|<0>>, Matrix(1,1) ):
PrintSystem(sys3);
State Spacecontinuous1 output(s); 1 input(s); 3 state(s)inputvariable=u1⁡toutputvariable=y1⁡tstatevariable=x1⁡t,x2⁡t,x3⁡ta=010001−3−4−7b=001c=100d=0
hinfnorm3 := NormHinf(sys3, 'output' = [norm, peakfreq]);
hinfnorm3≔0.451322261502234,0.559605319105211
MagnitudePlot(sys3, decibels = false);
mag := MagnitudePlot(sys3, decibels = false, output = data):
Hinfgraph≔0.451320291397442
member(Hinfgraph, mag(1..-1, 2..2), 'p'): fHinf := mag(p);
fHinf≔0.5590478459
Example 4: Find the H∞ norm of a continuous transfer function G(s) with .1% of tolerance.
sys4 := TransferFunction(Matrix([[1/(s^3+s^2+5*s+2)],[s/(s^3+s^2+5*s+2)],[(s^2)/(s^3+s^2+5*s+2)]])):
PrintSystem(sys4);
Transfer Functioncontinuous3 output(s); 1 input(s)inputvariable=u1⁡soutputvariable=y1⁡s,y2⁡s,y3⁡stf1,1=1s3+s2+5⁢s+2tf2,1=ss3+s2+5⁢s+2tf3,1=s2s3+s2+5⁢s+2
hinfnorm4 := NormHinf(sys4, 0.001, 'output' = [norm, peakfreq]);
hinfnorm4≔1.89966130541915,2.180899209
MagnitudePlot(sys4, decibels = false);
mag := MagnitudePlot(sys4, decibels = false, output = data):
Hinfgraph≔1.69438112239631
member(Hinfgraph, mag[3](1..-1, 2..2), 'p'): fHinf := mag[3](p);
fHinf≔2.184166359
Example 5: Find the H∞ norm of a continuous transfer function matrix.
sys5 := TransferFunction(Matrix([[1/(s^2+s+4), 0],[0, 1/(s^2+s+4)]]) ):
PrintSystem(sys5);
Transfer Functioncontinuous2 output(s); 2 input(s)inputvariable=u1⁡s,u2⁡soutputvariable=y1⁡s,y2⁡stf1,1=1s2+s+4tf2,1=0tf1,2=0tf2,2=1s2+s+4
hinfnorm5 := NormHinf(sys5, 'output' = [norm, peakfreq]);
hinfnorm5≔0.516398295858964,1.87082283018653
MagnitudePlot(sys5, decibels = false);
mag := MagnitudePlot(sys5, decibels = false, output = data):
Hinfgraph≔0.516350854134402
member(Hinfgraph, mag[1](1..-1, 2..2), 'p'): fHinf := mag[1](p);
fHinf≔1.863838004
Example 6: Find the H∞ norm of a continuous state-space SISO system.
sys6 := StateSpace(Matrix([[0,1],[-25,-0.1]]),Matrix([[0],[1]]),Matrix([[1,0]]),Matrix([[0]])):
PrintSystem(sys6);
State Spacecontinuous1 output(s); 1 input(s); 2 state(s)inputvariable=u1⁡toutputvariable=y1⁡tstatevariable=x1⁡t,x2⁡ta=01−25−0.1b=01c=10d=0
hinfnorm6 := NormHinf(sys6, 'output' = [norm, peakfreq]);
hinfnorm6≔2.00010200760040,4.99949995099030
MagnitudePlot(sys6, decibels = false);
mag := MagnitudePlot(sys6, decibels = false, output = data):
Hinfgraph≔1.99995097863956
fHinf≔5.000110374
Example 7 : Find the H∞ norm of a system with discrete-time transfer function shown below.
sys7 := TransferFunction(10*(2*z+1)/(10*z^2 + 2*z + 5), discrete, sampletime = 0.1):
PrintSystem(sys7);
Transfer Functiondiscrete; sampletime = .11 output(s); 1 input(s)inputvariable=u1⁡zoutputvariable=y1⁡ztf1,1=20⁢z+1010⁢z2+2⁢z+5
hinfnorm7 := NormHinf(sys7, 10^(-8), 'output' = [norm, peakfreq]);
hinfnorm7≔4.28984428905026,16.6685073027065
MagnitudePlot(sys7, decibels = false, range = 0.01..Pi/sys7:-sampletime);
mag := MagnitudePlot(sys7, decibels = false, range = 0.01..Pi/sys7:-sampletime, output = data):
Hinfgraph≔4.289843575
fHinf≔16.66285136
Example 8 : Find the H∞ norm of a system with discrete-time transfer function shown below.
sys8 := TransferFunction([5, -14.2, 14.4, -5],[5, -12.1, 10, -2.7], discrete, sampletime=0.5):
PrintSystem(sys8);
Transfer Functiondiscrete; sampletime = .51 output(s); 1 input(s)inputvariable=u1⁡zoutputvariable=y1⁡ztf1,1=5.⁢z3−14.20000000⁢z2+14.40000000⁢z−5.5.⁢z3−12.10000000⁢z2+10.⁢z−2.700000000
hinfnorm8 := NormHinf(sys8, 'output' = [norm, peakfreq]);
hinfnorm8≔4.63571003774221,0.615651253991577
MagnitudePlot(sys8, decibels = false, range = 0.01..Pi/sys8:-sampletime);
mag := MagnitudePlot(sys8, decibels = false, range = 0.01..Pi/sys8:-sampletime, output = data):
Hinfgraph≔4.635634989
fHinf≔0.6152990634
S. Boyd, V. Balakrishnan, P. Kabamba, On computing the H∞ norm of a transfer matrix, 1988.
N. A. Bruinsma, M. Steinbuch, A fast algortihm to compute the H∞-norm of a transfer function matrix, 1990.
The DynamicSystems[NormHinf] command was introduced in Maple 18.
For more information on Maple 18 changes, see Updates in Maple 18.
See Also
DynamicSystems[MagnitudePlot]
DynamicSystems[NormH2]
DynamicSystems[ToContinuous]
Download Help Document
What kind of issue would you like to report? (Optional)