| Line 71: | Line 71: | ||
C(1:2:n-1) = c.'; C(2:2:n) = d.'; C = sparse(C); |
C(1:2:n-1) = c.'; C(2:2:n) = d.'; C = sparse(C); |
||
</tt> |
</tt> |
||
| + | |||
| + | |||
| + | The above system matrices <math>A_\varepsilon, A_0, B, C</math> are also available in [http://math.nist.gov/MatrixMarket/formats.html MatrixMarket] format [[Media:Synth_matrices.tar.gz|Synth_matrices.tar.gz]]. |
||
== Plots == |
== Plots == |
||
Revision as of 14:44, 29 November 2011
Introduction
On this page you will find a synthetic parametric model 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
.
System description
The parameter
scales the real part of the system poles, that is,
.
For a system in pole-residue form
we can write down the state-space realisation
with
Notice that the system matrices have complex entries.
For simplicity, assume that
is even,
, and that all system poles are complex and ordered in complex conjugate pairs, i.e.
and the residues also form complex conjugate pairs
Then a realization with matrices having real entries is given 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')

![\varepsilon \widehat{A}_\varepsilon + \widehat{A}_0 = \varepsilon \left[\begin{array}{ccc} a_1 & & \\ & \ddots & \\ & & a_n\end{array}\right] +\left[\begin{array}{ccc} jb_1 & & \\ & \ddots & \\ & & jb_n\end{array}\right] ,](/morwiki/images/math/7/9/0/790c70f3fdd1a7fe269be673f52f5e8c.png)
![\widehat{B} = [1,\ldots,1]^T,\quad \widehat{C} = [r_1,\ldots,r_n],\quad D = 0.](/morwiki/images/math/0/1/9/01952f4b905489c1f4686227dc13e409.png)


![A_\varepsilon = \left[\begin{array}{ccc} A_{\varepsilon,1} & & \\ & \ddots & \\ & & A_{\varepsilon,k}\end{array}\right], \quad A_0 = \left[\begin{array}{ccc} A_{0,1} & & \\ & \ddots & \\ & & A_{0,k}\end{array}\right], \quad B = \left[\begin{array}{c} B_1 \\ \vdots \\ B_k\end{array}\right], \quad C = \left[\begin{array}{ccc} C_1 & \cdots & C_k\end{array}\right], \quad D = 0,](/morwiki/images/math/f/2/4/f24f26251cc0c24bed73a958735c4681.png)

