Description
On this page you will find a synthetic parametric model with one parameter for which one can easily experiment with different system orders, values of the parameter, as well as different poles and residues. Also, the decay of the Hankel singular values can be changed indirectly through the parameter.
Model
We consider a dynamical system in the frequency domain given by its pole-residue form of the transfer function
with the poles of the system,
the imaginary unit, and
the residues.
The parameter
is used to scale the real part of the system poles.
We can write down the state-space realization of the system's transfer function as
with the corresponding system matrices ,
,
, and
given by
One notices that the system matrices and
have complex entries.
For rewriting the system with real matrices, we assume that
is even,
, and that all system poles are complex and ordered in complex conjugate pairs, i.e.,
Corresponding to the system poles, also the residues are written in complex conjugate pairs
Using this, the realization of the dynamical system can be written with matrices having real entries by
with ,
,
,
.
Numerical Values
We construct a system of order . The numerical values for the different variables are
equally spaced in
,
equally spaced in
,
,
,
.
In MATLAB, the system matrices are easily formed as follows:
n = 100;
a = -linspace(1e1,1e3,n/2).'; b = linspace(1e1,1e3,n/2).';
c = ones(n/2,1); d = zeros(n/2,1);
aa(1:2:n-1,1) = a; aa(2:2:n,1) = a;
bb(1:2:n-1,1) = b; bb(2:2:n-2,1) = 0;
Ae = spdiags(aa,0,n,n);
A0 = spdiags([0;bb],1,n,n) + spdiags(-bb,-1,n,n);
B = 2*sparse(mod([1:n],2)).';
C(1:2:n-1) = c.'; C(2:2:n) = d.'; C = sparse(C);
The above system matrices are also available in MatrixMarket format Synth_matrices.tar.gz.
Plots
We plot the frequency response and poles for parameter values
.
In MATLAB, the plots are generated using the following commands:
r(1:2:n-1,1) = c+1j*d; r(2:2:n,1) = c-1j*d;
ep = [1/50; 1/20; 1/10; 1/5; 1/2; 1]; % parameter epsilon
jw = 1j*linspace(0,1.2e3,5000).'; % frequency grid
for j = 1:length(ep)
p(:,j) = [ep(j)*a+1j*b; ep(j)*a-1j*b]; % poles
[jww,pp] = meshgrid(jw,p(:,j));
Hjw(j,:) = (r.')*(1./(jww-pp)); % freq. resp.
end
figure, loglog(imag(jw),abs(Hjw),'LineWidth',2)
axis tight, xlim([6 1200])
xlabel('frequency (rad/sec)')
ylabel('magnitude')
title('Frequency response for different \epsilon')
figure, plot(real(p),imag(p),'.')
title('Poles for different \epsilon')
Other interesting plots result for small values of the parameter. For example, for , the peaks in the frequency response become more pronounced, since the poles move closer to the imaginary axis.
Next, for , we also plot the decay of the Hankel singular values. Notice that for small values of the parameter, the decay of the Hankel singular values is very slow.