summaryrefslogtreecommitdiffstats
path: root/scilab/modules
diff options
context:
space:
mode:
authorSerge Steer <serge.steer@scilab.org>2011-04-18 11:06:16 +0200
committerVincent COUVERT <vincent.couvert@scilab.org>2011-05-06 10:17:41 +0200
commitb60a50edbacbeaf727153ebef85819c83e29f3dd (patch)
treef6656991b3d490aff48458c353faa05bbc03723f /scilab/modules
parent6d00b119d811819bfa621e0c0a8cefc584f2d29d (diff)
downloadscilab-b60a50edbacbeaf727153ebef85819c83e29f3dd.zip
scilab-b60a50edbacbeaf727153ebef85819c83e29f3dd.tar.gz
bug 9205 fix : make the locus symetrization optionnal and function added for high definition zoom
Change-Id: I75313d7c4275dcc669a722c6b552be52b6f3ccab
Diffstat (limited to 'scilab/modules')
-rw-r--r--scilab/modules/cacsd/help/en_US/nyquist.xml35
-rw-r--r--scilab/modules/cacsd/help/en_US/nyquistfrequencybounds.xml131
-rw-r--r--scilab/modules/cacsd/help/images/nyquistfrequencybounds.svg501
-rw-r--r--scilab/modules/cacsd/macros/nyquist.sci66
-rw-r--r--scilab/modules/cacsd/macros/nyquistfrequencybounds.sci132
-rw-r--r--scilab/modules/cacsd/macros/repfreq.sci59
6 files changed, 872 insertions, 52 deletions
diff --git a/scilab/modules/cacsd/help/en_US/nyquist.xml b/scilab/modules/cacsd/help/en_US/nyquist.xml
index 6b3a9aa..b7c766a 100644
--- a/scilab/modules/cacsd/help/en_US/nyquist.xml
+++ b/scilab/modules/cacsd/help/en_US/nyquist.xml
@@ -32,10 +32,10 @@
32 <title>Calling Sequence</title> 32 <title>Calling Sequence</title>
33 33
34 <synopsis> 34 <synopsis>
35 nyquist( sl,[fmin,fmax] [,step] [,comments] ) 35 nyquist( sl,[fmin,fmax] [,step] [,comments] [,symmetry])
36 nyquist( sl, frq [,comments] ) 36 nyquist( sl, frq [,comments] [,symmetry])
37 nyquist(frq,db,phi [,comments]) 37 nyquist(frq,db,phi [,comments] [,symmetry])
38 nyquist(frq, repf [,comments]) 38 nyquist(frq, repf [,comments] [,symmetry])
39 </synopsis> 39 </synopsis>
40 </refsynopsisdiv> 40 </refsynopsisdiv>
41 41
@@ -43,6 +43,7 @@
43 <title>Arguments</title> 43 <title>Arguments</title>
44 44
45 <variablelist> 45 <variablelist>
46
46 <varlistentry> 47 <varlistentry>
47 <term>sl</term> 48 <term>sl</term>
48 49
@@ -55,15 +56,15 @@
55 <term>fmin,fmax</term> 56 <term>fmin,fmax</term>
56 57
57 <listitem> 58 <listitem>
58 <para>real scalars (frequency bounds (in Hz))</para> 59 <para>real scalars (frequency lower and upper bounds (in Hz)).</para>
59 </listitem> 60 </listitem>
60 </varlistentry> 61 </varlistentry>
61 62
62 <varlistentry> 63 <varlistentry>
63 <term>step</term> 64 <term>step</term>
64
65 <listitem> 65 <listitem>
66 <para>real (logarithmic discretization step)</para> 66 <para>real (logarithmic discretization step), if not given
67 an adaptative discretization is used.</para>
67 </listitem> 68 </listitem>
68 </varlistentry> 69 </varlistentry>
69 70
@@ -76,6 +77,14 @@
76 </varlistentry> 77 </varlistentry>
77 78
78 <varlistentry> 79 <varlistentry>
80 <term>symmetry</term>
81
82 <listitem>
83 <para>a boolean, default value is %t.</para>
84 </listitem>
85 </varlistentry>
86
87 <varlistentry>
79 <term>frq</term> 88 <term>frq</term>
80 89
81 <listitem> 90 <listitem>
@@ -98,17 +107,21 @@
98 107
99 <listitem> 108 <listitem>
100 <para>matrix of complex numbers. Frequency response (one row for 109 <para>matrix of complex numbers. Frequency response (one row for
101 aech output of <literal>sl</literal>)</para> 110 each output of <literal>sl</literal>)</para>
102 </listitem> 111 </listitem>
103 </varlistentry> 112 </varlistentry>
113
104 </variablelist> 114 </variablelist>
105 </refsection> 115 </refsection>
106 116
107 <refsection> 117 <refsection>
108 <title>Description</title> 118 <title>Description</title>
109 119
110 <para>Nyquist plot i.e Imaginary part versus Real part of the frequency 120 <para>Nyquist plot i.e Imaginary part versus Real part of the
111 response of <literal>sl</literal>.</para> 121 frequency response of <literal>sl</literal>. If the
122 <literal>symmetry</literal> argument is true or omitted the
123 Nyquist plot displays the symetric graph (positive and negative
124 frequencies).</para>
112 125
113 <para>For continuous time systems <literal>sl(2*%i*%pi*w)</literal> is 126 <para>For continuous time systems <literal>sl(2*%i*%pi*w)</literal> is
114 plotted. For discrete time system or discretized systems 127 plotted. For discrete time system or discretized systems
@@ -228,6 +241,8 @@
228 <member><link linkend="bode">bode</link></member> 241 <member><link linkend="bode">bode</link></member>
229 242
230 <member><link linkend="black">black</link></member> 243 <member><link linkend="black">black</link></member>
244
245 <member><link linkend="nyquistfrequencybounds">nyquistfrequencybounds</link></member>
231 246
232 <member><link linkend="calfrq">calfrq</link></member> 247 <member><link linkend="calfrq">calfrq</link></member>
233 248
diff --git a/scilab/modules/cacsd/help/en_US/nyquistfrequencybounds.xml b/scilab/modules/cacsd/help/en_US/nyquistfrequencybounds.xml
new file mode 100644
index 0000000..6d134f0
--- /dev/null
+++ b/scilab/modules/cacsd/help/en_US/nyquistfrequencybounds.xml
@@ -0,0 +1,131 @@
1<?xml version="1.0" encoding="UTF-8"?>
2<!--
3 * Add some comments about XML file
4-->
5<refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" version="5.0-subset Scilab" xml:lang="en_US" xml:id="nyquistfrequencybounds">
6 <info>
7 <pubdate>$LastChangedDate: 18-04-2011 $</pubdate>
8 </info>
9 <refnamediv>
10 <refname>nyquistfrequencybounds</refname>
11 <refpurpose>Computes the frequencies for which the nyquist locus enters and leaves a given rectangle. </refpurpose>
12 </refnamediv>
13 <refsynopsisdiv>
14 <title>Calling Sequence</title>
15 <synopsis>[fmin,fmax] = nyquistfrequencybounds(H,bounds)</synopsis>
16 </refsynopsisdiv>
17 <refsection>
18 <title>Parameters</title>
19 <variablelist>
20 <varlistentry>
21 <term>H</term>
22 <listitem>
23 <para>
24 A SISO linear dynamical system.
25 </para>
26 </listitem>
27 </varlistentry>
28 <varlistentry>
29 <term>bounds</term>
30 <listitem>
31 <para>
32 A 2 by 2 array: [Rmin Imin;Rmax Imax] that defines a complex-plane rectangle.
33 </para>
34 </listitem>
35 </varlistentry>
36 <varlistentry>
37 <term>fmin</term>
38 <listitem>
39 <para>
40 a real: the lowest frequency (Hz) such that the nyquist
41 locus enters the given rectangle or 0 if the 0 Hz point
42 lies in the rectangle or [] if the locus is completely
43 outside the rectangle.
44 </para>
45 </listitem>
46 </varlistentry>
47 <varlistentry>
48 <term>fmax</term>
49 <listitem>
50 <para>
51 a real: the highest frequency (Hz) such that the nyquist
52 locus leaves the given rectangle or %inf if the %inf (hz)
53 point is in the rectangle or [] if the locus is completely
54 outside the rectangle.
55 </para>
56 </listitem>
57 </varlistentry>
58 </variablelist>
59 </refsection>
60 <refsection>
61 <title>Description</title>
62 <para>
63 Given a C plane rectangle,
64 <literal>nyquistfrequencybounds</literal> Computes the lowest
65 frequency for which the nyquist locus enters the rectangle and
66 the highest frequency for which the nyquist locus leaves the
67 rectangle.
68 </para>
69 This function is useful for high definition zoom of a nyquist locus.
70 <para>
71 </para>
72 </refsection>
73 <refsection>
74 <title>Examples</title>
75 <programlisting role="example"><![CDATA[
76 s=%s
77 num=2+9*s-9*s^2-11*s^3+0.01*s^4;
78 den=43*s^2+65*s^3+34*s^4+8*s^5+s^6+0.1*s^7
79 H=syslin('c',num,den)-1
80
81 clf;set(gcf(),'axes_size',[805,549])
82 subplot(221)
83 nyquist(H)
84
85
86 subplot(222)
87 bounds=[-2 -2;2 2]
88 [fmin,fmax]=nyquistfrequencybounds(H,bounds)
89 nyquist(H,fmin,fmax)
90 title("bounds:"+sci2exp(bounds,0));
91
92
93 subplot(223)
94 bounds=[-1.3 -0.3;0 0.3]
95 [fmin,fmax]=nyquistfrequencybounds(H,bounds)
96 nyquist(H,fmin,fmax)
97 title("bounds:"+sci2exp(bounds,0));
98
99 subplot(224)
100 bounds=[-1.1 -0.1;-0.8 0.1]
101 [fmin,fmax]=nyquistfrequencybounds(H,bounds)
102 nyquist(H,fmin,1d8)
103 title("bounds:"+sci2exp(bounds,0));
104
105 ]]></programlisting>
106
107 <para>
108 <mediaobject>
109 <imageobject>
110 <imagedata fileref="../images/nyquistfrequencybounds.svg"/>
111 </imageobject>
112 </mediaobject>
113 </para>
114 </refsection>
115
116 <refsection>
117 <title>See Also</title>
118 <simplelist type="inline">
119 <member>
120 <link linkend="nyquist" >nyquist</link>
121 </member>
122 </simplelist>
123 </refsection>
124 <refsection>
125 <title>Authors</title>
126 <simplelist type="vert">
127 <member>Serge Steer, INRIA</member>
128 </simplelist>
129 </refsection>
130
131</refentry>
diff --git a/scilab/modules/cacsd/help/images/nyquistfrequencybounds.svg b/scilab/modules/cacsd/help/images/nyquistfrequencybounds.svg
new file mode 100644
index 0000000..f9d0546
--- /dev/null
+++ b/scilab/modules/cacsd/help/images/nyquistfrequencybounds.svg
@@ -0,0 +1,501 @@
1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2<svg xmlns="http://www.w3.org/2000/svg"
3 xmlns:xlink="http://www.w3.org/1999/xlink"
4 width="805px" height="549px" viewBox="0 0 805 549"
5 style="stroke:none">
6<title>Figure n°0</title>
7<desc>
8Creator: GL2PS 1.3.2, (C) 1999-2006 Christophe Geuzaine (geuz@geuz.org)
9For: Scilab
10CreationDate: Tue Apr 19 16:27:00 2011
11</desc>
12<defs>
13</defs>
14<polygon fill="#ffffff" points="0,0 805,0 805,549 0,549"/>
15<g>
16<polygon fill="#ffffff" points="50.3125,240.188 50.3125,34.3125 50.3125,34.3125"/>
17<polygon fill="#ffffff" points="50.3125,240.188 50.3125,34.3125 50.3125,240.188"/>
18<polygon fill="#ffffff" points="50.3125,240.188 352.188,240.188 352.188,240.188"/>
19<polygon fill="#ffffff" points="50.3125,240.188 352.188,240.188 50.3125,240.188"/>
20<polygon fill="#ffffff" points="50.3125,240.188 352.188,240.188 352.188,34.3125"/>
21<polygon fill="#ffffff" points="50.3125,240.188 352.188,34.3125 50.3125,34.3125"/>
22<polyline fill="none" stroke="#000000" stroke-width="0.5" points="78.2329,225.065 85.3936,223.566 92.1973,222.118 98.667,220.717 104.825,219.361 110.69,218.049 116.281,216.778 121.615,215.546 126.707,214.352 131.571,213.193 136.221,212.069 140.67,210.977 144.928,209.917 149.007,208.887 152.917,207.885 156.665,206.911 160.263,205.963 163.716,205.042 167.034,204.144 170.223,203.269 173.289,202.417 176.239,201.587 181.813,199.988 186.988,198.466 191.8,197.017 196.283,195.633 200.466,194.312 204.375,193.05 208.034,191.842 211.464,190.685 214.683,189.576 217.708,188.511 220.554,187.489 223.235,186.507 225.765,185.562 228.153,184.652 230.411,183.776 232.548,182.932 234.571,182.117 238.311,180.571 241.685,179.128 244.739,177.777 247.513,176.51 250.04,175.319 252.348,174.197 254.462,173.139 256.403,172.14 258.19,171.194 259.838,170.297 261.361,169.446 264.082,167.868 266.433,166.435 268.479,165.128 270.27,163.931 271.847,162.832 273.243,161.817 274.484,160.879 275.592,160.008 276.587,159.197 277.482,158.441 278.291,157.733 279.691,156.448 280.855,155.309 281.833,154.293 282.664,153.381 283.375,152.558 283.988,151.81 284.52,151.128 284.985,150.504 285.395,149.93 286.077,148.909 286.62,148.028 287.06,147.26 287.42,146.584 287.719,145.983 287.97,145.445 288.183,144.96 288.522,144.121 288.778,143.416 288.976,142.814 289.131,142.293 289.256,141.836 289.443,141.068 289.575,140.442 289.671,139.917 289.745,139.467 289.803,139.074 289.889,138.414 289.95,137.873 289.999,137.416 290.039,137.021 290.105,136.372 290.164,135.866 290.218,135.471 290.27,135.17 290.319,134.949 290.367,134.797 290.411,134.704 290.49,134.659 290.556,134.747 290.609,134.917 290.683,135.358 290.728,135.826 290.768,136.752 290.734,137.717 290.71,137.872 290.684,137.951 290.659,137.958 290.623,137.843 290.605,137.687 290.596,137.468 290.597,137.364 290.601,137.288 290.603,137.265 290.604,137.254 290.605,137.25 290.605,137.25 290.605,137.25 290.605,137.25 290.605,137.25 290.605,137.25 290.605,137.25 290.605,137.25 290.605,137.25 290.605,137.25 290.605,137.25 290.605,137.25 290.605,137.25 290.605,137.25 290.605,137.25 290.605,137.25 290.605,137.25 290.605,137.25 290.605,137.25 290.605,137.25 290.604,137.246 290.603,137.235 290.601,137.212 290.597,137.136 290.596,137.032 290.605,136.813 290.623,136.657 290.659,136.542 290.684,136.549 290.71,136.628 290.734,136.783 290.768,137.748 290.728,138.674 290.683,139.142 290.609,139.583 290.556,139.753 290.49,139.841 290.411,139.796 290.367,139.703 290.319,139.551 290.27,139.33 290.218,139.029 290.164,138.634 290.105,138.128 290.039,137.479 289.999,137.084 289.95,136.627 289.889,136.086 289.803,135.426 289.745,135.033 289.671,134.583 289.575,134.058 289.443,133.432 289.256,132.664 289.131,132.207 288.976,131.686 288.778,131.084 288.522,130.379 288.183,129.54 287.97,129.055 287.719,128.517 287.42,127.916 287.06,127.24 286.62,126.472 286.077,125.591 285.395,124.57 284.985,123.996 284.52,123.372 283.988,122.69 283.375,121.942 282.664,121.119 281.833,120.207 280.855,119.191 279.691,118.052 278.291,116.767 277.482,116.059 276.587,115.303 275.592,114.492 274.484,113.621 273.243,112.683 271.847,111.668 270.27,110.569 268.479,109.372 266.433,108.065 264.082,106.632 261.361,105.054 259.838,104.203 258.19,103.306 256.403,102.36 254.462,101.361 252.348,100.303 250.04,99.1812 247.513,97.9902 244.739,96.7231 241.685,95.3721 238.311,93.9287 234.571,92.3828 232.548,91.5684 230.411,90.7236 228.153,89.8477 225.765,88.938 223.235,87.9932 220.554,87.0107 217.708,85.9888 214.683,84.9243 211.464,83.8149 208.034,82.6577 204.375,81.4497 200.466,80.1875 196.283,78.8667 191.8,77.4834 186.988,76.0337 181.813,74.5122 176.239,72.9131 173.289,72.083 170.223,71.231 167.034,70.3564 163.716,69.4585 160.263,68.5366 156.665,67.5889 152.917,66.6147 149.007,65.6133 144.928,64.583 140.67,63.5229 136.221,62.4312 131.571,61.3071 126.707,60.1484 121.615,58.9541 116.281,57.7222 110.69,56.4512 104.825,55.1392 98.667,53.7832 92.1973,52.3823 85.3936,50.9336 78.2329,49.4351"/>
23<polygon fill="#000000" points="73.1313,228.291 78.3794,225.035 72.2656,224.156"/>
24<polyline fill="none" stroke="#000000" stroke-width="0.5" points="78.2329,225.065 78.3794,225.035"/>
25<polygon fill="#000000" points="121.695,217.716 126.852,214.317 120.717,213.606"/>
26<polyline fill="none" stroke="#000000" stroke-width="0.5" points="126.707,214.352 126.852,214.317"/>
27<polygon fill="#000000" points="165.339,206.818 170.366,203.229 164.208,202.748"/>
28<polyline fill="none" stroke="#000000" stroke-width="0.5" points="170.223,203.269 170.366,203.229"/>
29<polygon fill="#000000" points="210.048,193.446 214.821,189.527 208.646,189.46"/>
30<polyline fill="none" stroke="#000000" stroke-width="0.5" points="214.683,189.576 214.821,189.527"/>
31<polygon fill="#000000" points="252.39,176.655 256.531,172.072 250.413,172.921"/>
32<polyline fill="none" stroke="#000000" stroke-width="0.5" points="256.403,172.14 256.531,172.072"/>
33<polygon fill="#000000" points="262.521,103.209 256.403,102.36 260.544,106.943"/>
34<polyline fill="none" stroke="#000000" stroke-width="0.5" points="256.531,102.428 256.403,102.36"/>
35<polygon fill="#000000" points="220.858,84.8579 214.683,84.9243 219.456,88.8433"/>
36<polyline fill="none" stroke="#000000" stroke-width="0.5" points="214.821,84.9731 214.683,84.9243"/>
37<polygon fill="#000000" points="176.38,70.7495 170.223,71.231 175.249,74.8198"/>
38<polyline fill="none" stroke="#000000" stroke-width="0.5" points="170.366,71.2705 170.223,71.231"/>
39<polygon fill="#000000" points="132.842,59.438 126.707,60.1484 131.863,63.5479"/>
40<polyline fill="none" stroke="#000000" stroke-width="0.5" points="126.852,60.1831 126.707,60.1484"/>
41<polygon fill="#000000" points="84.3462,48.5566 78.2329,49.4351 83.4805,52.6914"/>
42<polyline fill="none" stroke="#000000" stroke-width="0.5" points="78.3794,49.4653 78.2329,49.4351"/>
43<text fill="#000000" style="stroke:none" x="292" y="135" transform="rotate(0, 292, 135)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">1e+03</text>
44<text fill="#000000" style="stroke:none" x="257" y="100" transform="rotate(0, 257, 100)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.0065</text>
45<text fill="#000000" style="stroke:none" x="257" y="170" transform="rotate(0, 257, 170)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.0065</text>
46<text fill="#000000" style="stroke:none" x="216" y="83" transform="rotate(0, 216, 83)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.00434</text>
47<text fill="#000000" style="stroke:none" x="216" y="188" transform="rotate(0, 216, 188)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.00434</text>
48<text fill="#000000" style="stroke:none" x="171" y="69" transform="rotate(0, 171, 69)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.00345</text>
49<text fill="#000000" style="stroke:none" x="171" y="201" transform="rotate(0, 171, 201)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.00345</text>
50<text fill="#000000" style="stroke:none" x="128" y="58" transform="rotate(0, 128, 58)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.00295</text>
51<text fill="#000000" style="stroke:none" x="128" y="212" transform="rotate(0, 128, 212)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.00295</text>
52<text fill="#000000" style="stroke:none" x="79" y="47" transform="rotate(0, 79, 47)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.00259</text>
53<text fill="#000000" style="stroke:none" x="79" y="223" transform="rotate(0, 79, 223)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.00259</text>
54<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,240.188 50.3125,34.3125"/>
55<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,240.188 45.7974,240.188"/>
56<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,219.6 45.7974,219.6"/>
57<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,199.013 45.7974,199.013"/>
58<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,178.425 45.7974,178.425"/>
59<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,157.837 45.7974,157.837"/>
60<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,137.25 45.7974,137.25"/>
61<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,116.663 45.7974,116.663"/>
62<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,96.0752 45.7974,96.0752"/>
63<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,75.4873 45.7974,75.4873"/>
64<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,54.8999 45.7974,54.8999"/>
65<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,34.3125 45.7974,34.3125"/>
66<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,229.894 47.6035,229.894"/>
67<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,209.306 47.6035,209.306"/>
68<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,188.719 47.6035,188.719"/>
69<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,168.131 47.6035,168.131"/>
70<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,147.544 47.6035,147.544"/>
71<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,126.956 47.6035,126.956"/>
72<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,106.369 47.6035,106.369"/>
73<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,85.7812 47.6035,85.7812"/>
74<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,65.1938 47.6035,65.1938"/>
75<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,44.6064 47.6035,44.6064"/>
76<text fill="#000000" style="stroke:none" x="27" y="245" transform="rotate(-0, 27, 245)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-10</text>
77<text fill="#000000" style="stroke:none" x="33" y="225" transform="rotate(-0, 33, 225)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-8</text>
78<text fill="#000000" style="stroke:none" x="33" y="204" transform="rotate(-0, 33, 204)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-6</text>
79<text fill="#000000" style="stroke:none" x="33" y="183" transform="rotate(-0, 33, 183)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-4</text>
80<text fill="#000000" style="stroke:none" x="34" y="163" transform="rotate(-0, 34, 163)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-2</text>
81<text fill="#000000" style="stroke:none" x="37" y="142" transform="rotate(-0, 37, 142)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0</text>
82<text fill="#000000" style="stroke:none" x="38" y="122" transform="rotate(-0, 38, 122)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">2</text>
83<text fill="#000000" style="stroke:none" x="37" y="101" transform="rotate(-0, 37, 101)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">4</text>
84<text fill="#000000" style="stroke:none" x="37" y="80" transform="rotate(-0, 37, 80)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">6</text>
85<text fill="#000000" style="stroke:none" x="38" y="60" transform="rotate(-0, 38, 60)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">8</text>
86<text fill="#000000" style="stroke:none" x="32" y="39" transform="rotate(-0, 32, 39)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">10</text>
87<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,240.188 352.188,240.188 352.188,240.188"/>
88<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,219.6 352.188,219.6 352.188,219.6"/>
89<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,199.013 352.188,199.013 352.188,199.013"/>
90<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,178.425 352.188,178.425 352.188,178.425"/>
91<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,157.837 352.188,157.837 352.188,157.837"/>
92<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,137.25 352.188,137.25 352.188,137.25"/>
93<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,116.663 352.188,116.663 352.188,116.663"/>
94<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,96.0752 352.188,96.0752 352.188,96.0752"/>
95<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,75.4873 352.188,75.4873 352.188,75.4873"/>
96<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,54.8999 352.188,54.8999 352.188,54.8999"/>
97<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,34.3125 352.188,34.3125 352.188,34.3125"/>
98<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,240.188 352.188,240.188"/>
99<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,240.188 50.3125,243.263"/>
100<polyline fill="none" stroke="#000000" stroke-width="0.5" points="110.688,240.188 110.688,243.263"/>
101<polyline fill="none" stroke="#000000" stroke-width="0.5" points="171.062,240.188 171.062,243.263"/>
102<polyline fill="none" stroke="#000000" stroke-width="0.5" points="231.438,240.188 231.438,243.263"/>
103<polyline fill="none" stroke="#000000" stroke-width="0.5" points="291.812,240.188 291.812,243.263"/>
104<polyline fill="none" stroke="#000000" stroke-width="0.5" points="352.188,240.188 352.188,243.263"/>
105<polyline fill="none" stroke="#000000" stroke-width="0.5" points="62.3877,240.188 62.3877,242.033"/>
106<polyline fill="none" stroke="#000000" stroke-width="0.5" points="74.4624,240.188 74.4624,242.033"/>
107<polyline fill="none" stroke="#000000" stroke-width="0.5" points="86.5376,240.188 86.5376,242.033"/>
108<polyline fill="none" stroke="#000000" stroke-width="0.5" points="98.6123,240.188 98.6123,242.033"/>
109<polyline fill="none" stroke="#000000" stroke-width="0.5" points="122.763,240.188 122.763,242.033"/>
110<polyline fill="none" stroke="#000000" stroke-width="0.5" points="134.837,240.188 134.837,242.033"/>
111<polyline fill="none" stroke="#000000" stroke-width="0.5" points="146.913,240.188 146.913,242.033"/>
112<polyline fill="none" stroke="#000000" stroke-width="0.5" points="158.987,240.188 158.987,242.033"/>
113<polyline fill="none" stroke="#000000" stroke-width="0.5" points="183.138,240.188 183.138,242.033"/>
114<polyline fill="none" stroke="#000000" stroke-width="0.5" points="195.212,240.188 195.212,242.033"/>
115<polyline fill="none" stroke="#000000" stroke-width="0.5" points="207.288,240.188 207.288,242.033"/>
116<polyline fill="none" stroke="#000000" stroke-width="0.5" points="219.362,240.188 219.362,242.033"/>
117<polyline fill="none" stroke="#000000" stroke-width="0.5" points="243.513,240.188 243.513,242.033"/>
118<polyline fill="none" stroke="#000000" stroke-width="0.5" points="255.587,240.188 255.587,242.033"/>
119<polyline fill="none" stroke="#000000" stroke-width="0.5" points="267.663,240.188 267.663,242.033"/>
120<polyline fill="none" stroke="#000000" stroke-width="0.5" points="279.737,240.188 279.737,242.033"/>
121<polyline fill="none" stroke="#000000" stroke-width="0.5" points="303.888,240.188 303.888,242.033"/>
122<polyline fill="none" stroke="#000000" stroke-width="0.5" points="315.962,240.188 315.962,242.033"/>
123<polyline fill="none" stroke="#000000" stroke-width="0.5" points="328.038,240.188 328.038,242.033"/>
124<polyline fill="none" stroke="#000000" stroke-width="0.5" points="340.112,240.188 340.112,242.033"/>
125<text fill="#000000" style="stroke:none" x="38" y="254" transform="rotate(-0, 38, 254)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-200</text>
126<text fill="#000000" style="stroke:none" x="99" y="254" transform="rotate(-0, 99, 254)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-150</text>
127<text fill="#000000" style="stroke:none" x="159" y="254" transform="rotate(-0, 159, 254)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-100</text>
128<text fill="#000000" style="stroke:none" x="222" y="254" transform="rotate(-0, 222, 254)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-50</text>
129<text fill="#000000" style="stroke:none" x="288" y="254" transform="rotate(-0, 288, 254)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0</text>
130<text fill="#000000" style="stroke:none" x="346" y="254" transform="rotate(-0, 346, 254)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">50</text>
131<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,240.188 50.3125,34.3125 50.3125,34.3125"/>
132<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="110.688,240.188 110.688,34.3125 110.688,34.3125"/>
133<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="171.062,240.188 171.062,34.3125 171.062,34.3125"/>
134<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="231.438,240.188 231.438,34.3125 231.438,34.3125"/>
135<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="291.812,240.188 291.812,34.3125 291.812,34.3125"/>
136<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="352.188,240.188 352.188,34.3125 352.188,34.3125"/>
137<text fill="#000000" style="stroke:none" x="139" y="26" transform="rotate(0, 139, 26)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">Diagramme de Nyquist</text>
138<text fill="#000000" style="stroke:none" x="173" y="268" transform="rotate(0, 173, 268)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">Re(h(2i&#x03c0;f))</text>
139<text fill="#000000" style="stroke:none" x="20" y="166" transform="rotate(270, 20, 166)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">Im(h(2i&#x03c0;f))</text>
140<polygon fill="#ffffff" points="452.812,240.188 452.812,34.3125 452.812,34.3125"/>
141<polygon fill="#ffffff" points="452.812,240.188 452.812,34.3125 452.812,240.188"/>
142<polygon fill="#ffffff" points="452.812,240.188 754.688,240.188 754.688,240.188"/>
143<polygon fill="#ffffff" points="452.812,240.188 754.688,240.188 452.812,240.188"/>
144<polygon fill="#ffffff" points="452.812,240.188 754.688,240.188 754.688,34.3125"/>
145<polygon fill="#ffffff" points="452.812,240.188 754.688,34.3125 452.812,34.3125"/>
146<polyline fill="none" stroke="#000000" stroke-width="0.5" points="495.938,217.623 502.188,214.588 507.986,211.683 513.375,208.898 518.395,206.226 523.08,203.657 527.461,201.186 531.564,198.805 535.415,196.509 539.035,194.292 542.443,192.15 545.657,190.078 548.692,188.072 551.563,186.128 554.283,184.243 556.863,182.413 561.645,178.908 565.983,175.592 569.938,172.446 573.56,169.454 576.894,166.602 579.976,163.878 582.837,161.272 585.504,158.774 588,156.376 590.343,154.071 592.553,151.851 596.627,147.645 600.32,143.72 603.707,140.042 606.847,136.586 609.787,133.33 612.563,130.255 615.206,127.347 617.737,124.592 620.176,121.98 622.54,119.503 624.838,117.15 627.084,114.917 629.283,112.796 631.443,110.783 635.666,107.06 639.782,103.715 643.811,100.722 647.761,98.0571 651.639,95.7007 655.445,93.6333 659.177,91.8379 662.832,90.2979 666.406,88.9971 669.894,87.9209 673.292,87.0537 676.595,86.3809 679.799,85.8887 682.902,85.5635 685.9,85.3921 688.792,85.3613 691.576,85.459 694.252,85.6738 699.278,86.4106 703.878,87.4902 708.066,88.8403 711.862,90.3994 715.29,92.1147 718.376,93.9434 721.15,95.8491 723.639,97.8042 725.871,99.7866 727.871,101.779 729.665,103.772 731.274,105.756 732.72,107.729 734.019,109.688 736.235,113.573 738.011,117.446 739.387,121.358 740.352,125.365 740.66,127.418 740.834,129.508 740.858,131.632 740.711,133.784 740.372,135.95 739.821,138.108 739.041,140.231 738.023,142.281 736.765,144.217 735.279,145.993 733.591,147.567 731.739,148.899 729.774,149.963 727.751,150.746 725.729,151.248 723.762,151.485 721.895,151.485 720.161,151.282 718.584,150.915 717.176,150.423 715.938,149.841 714.863,149.202 713.943,148.531 713.164,147.85 711.967,146.516 711.154,145.282 710.624,144.182 710.294,143.224 710.105,142.4 710.011,141.697 709.996,140.59 710.095,139.79 710.236,139.206 710.384,138.775 710.653,138.209 710.864,137.879 711.142,137.547 711.297,137.405 711.444,137.302 711.529,137.26 711.557,137.251 711.562,137.25 711.562,137.25 711.562,137.25 711.562,137.25 711.562,137.25 711.562,137.25 711.562,137.25 711.562,137.25 711.562,137.25 711.562,137.25 711.562,137.25 711.562,137.25 711.562,137.25 711.562,137.25 711.562,137.25 711.562,137.25 711.557,137.249 711.529,137.24 711.444,137.198 711.297,137.095 711.142,136.953 710.864,136.621 710.653,136.291 710.384,135.725 710.236,135.294 710.095,134.71 709.996,133.91 710.011,132.803 710.105,132.1 710.294,131.276 710.624,130.318 711.154,129.218 711.967,127.984 713.164,126.65 713.943,125.969 714.863,125.298 715.938,124.659 717.176,124.077 718.584,123.585 720.161,123.218 721.895,123.015 723.762,123.015 725.729,123.252 727.751,123.754 729.774,124.537 731.739,125.601 733.591,126.933 735.279,128.507 736.765,130.283 738.023,132.219 739.041,134.269 739.821,136.392 740.372,138.55 740.711,140.716 740.858,142.868 740.834,144.992 740.66,147.082 740.352,149.135 739.387,153.142 738.011,157.054 736.235,160.927 734.019,164.812 732.72,166.771 731.274,168.744 729.665,170.728 727.871,172.721 725.871,174.713 723.639,176.696 721.15,178.651 718.376,180.557 715.29,182.385 711.862,184.101 708.066,185.66 703.878,187.01 699.278,188.089 694.252,188.826 691.576,189.041 688.792,189.139 685.9,189.108 682.902,188.937 679.799,188.611 676.595,188.119 673.292,187.446 669.894,186.579 666.406,185.503 662.832,184.202 659.177,182.662 655.445,180.867 651.639,178.799 647.761,176.443 643.811,173.778 639.782,170.785 635.666,167.44 631.443,163.717 629.283,161.704 627.084,159.583 624.838,157.35 622.54,154.997 620.176,152.52 617.737,149.908 615.206,147.153 612.563,144.245 609.787,141.17 606.847,137.914 603.707,134.458 600.32,130.78 596.627,126.855 592.553,122.649 590.343,120.429 588,118.124 585.504,115.726 582.837,113.228 579.976,110.622 576.894,107.898 573.56,105.046 569.938,102.054 565.983,98.9082 561.645,95.5918 556.863,92.0869 554.283,90.2573 551.563,88.3721 548.692,86.4282 545.657,84.4224 542.443,82.3501 539.035,80.208 535.415,77.9912 531.564,75.6953 527.461,73.3145 523.08,70.8428 518.395,68.2739 513.375,65.6016 507.986,62.8169 502.188,59.9116 495.938,56.877"/>
147<polygon fill="#000000" points="491.779,221.99 496.078,217.555 489.934,218.19"/>
148<polyline fill="none" stroke="#000000" stroke-width="0.5" points="495.938,217.623 496.078,217.555"/>
149<polygon fill="#000000" points="535.371,199.09 539.161,194.213 533.123,195.513"/>
150<polyline fill="none" stroke="#000000" stroke-width="0.5" points="539.035,194.292 539.161,194.213"/>
151<polygon fill="#000000" points="574.048,171.937 576.998,166.51 571.25,168.771"/>
152<polyline fill="none" stroke="#000000" stroke-width="0.5" points="576.894,166.602 576.998,166.51"/>
153<polygon fill="#000000" points="604.615,142.211 606.936,136.488 601.479,139.38"/>
154<polyline fill="none" stroke="#000000" stroke-width="0.5" points="606.847,136.586 606.936,136.488"/>
155<polygon fill="#000000" points="632.604,112.27 635.775,106.97 629.939,108.991"/>
156<polyline fill="none" stroke="#000000" stroke-width="0.5" points="635.666,107.06 635.775,106.97"/>
157<polygon fill="#000000" points="718,95.6211 723.742,97.896 720.806,92.4624"/>
158<polyline fill="none" stroke="#000000" stroke-width="0.5" points="723.639,97.8042 723.742,97.896"/>
159<polygon fill="#000000" points="739.139,125.812 740.85,131.747 743.354,126.101"/>
160<polyline fill="none" stroke="#000000" stroke-width="0.5" points="740.858,131.632 740.85,131.747"/>
161<polygon fill="#000000" points="738.354,137.222 740.858,142.868 742.569,136.933"/>
162<polyline fill="none" stroke="#000000" stroke-width="0.5" points="740.85,142.753 740.858,142.868"/>
163<polygon fill="#000000" points="726.575,171.262 723.639,176.696 729.381,174.421"/>
164<polyline fill="none" stroke="#000000" stroke-width="0.5" points="723.742,176.604 723.639,176.696"/>
165<polygon fill="#000000" points="641.502,169.461 635.666,167.441 638.838,172.74"/>
166<polyline fill="none" stroke="#000000" stroke-width="0.5" points="635.775,167.53 635.666,167.44"/>
167<polygon fill="#000000" points="612.304,140.806 606.847,137.914 609.168,143.638"/>
168<polyline fill="none" stroke="#000000" stroke-width="0.5" points="606.936,138.012 606.847,137.914"/>
169<polygon fill="#000000" points="582.642,110.158 576.894,107.898 579.844,113.324"/>
170<polyline fill="none" stroke="#000000" stroke-width="0.5" points="576.998,107.99 576.894,107.898"/>
171<polygon fill="#000000" points="545.073,81.5083 539.035,80.208 542.824,85.0854"/>
172<polyline fill="none" stroke="#000000" stroke-width="0.5" points="539.161,80.2871 539.035,80.208"/>
173<polygon fill="#000000" points="502.081,57.5117 495.938,56.877 500.236,61.312"/>
174<polyline fill="none" stroke="#000000" stroke-width="0.5" points="496.078,56.9448 495.938,56.877"/>
175<text fill="#000000" style="stroke:none" x="713" y="135" transform="rotate(0, 713, 135)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">1e+03</text>
176<text fill="#000000" style="stroke:none" x="742" y="141" transform="rotate(0, 742, 141)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.824</text>
177<text fill="#000000" style="stroke:none" x="742" y="130" transform="rotate(0, 742, 130)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.824</text>
178<text fill="#000000" style="stroke:none" x="725" y="175" transform="rotate(0, 725, 175)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.492</text>
179<text fill="#000000" style="stroke:none" x="725" y="96" transform="rotate(0, 725, 96)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.492</text>
180<text fill="#000000" style="stroke:none" x="637" y="165" transform="rotate(0, 637, 165)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.169</text>
181<text fill="#000000" style="stroke:none" x="637" y="105" transform="rotate(0, 637, 105)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.169</text>
182<text fill="#000000" style="stroke:none" x="608" y="135" transform="rotate(0, 608, 135)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.111</text>
183<text fill="#000000" style="stroke:none" x="578" y="106" transform="rotate(0, 578, 106)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.0766</text>
184<text fill="#000000" style="stroke:none" x="578" y="165" transform="rotate(0, 578, 165)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.0766</text>
185<text fill="#000000" style="stroke:none" x="540" y="78" transform="rotate(0, 540, 78)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.057</text>
186<text fill="#000000" style="stroke:none" x="540" y="192" transform="rotate(0, 540, 192)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.057</text>
187<text fill="#000000" style="stroke:none" x="497" y="55" transform="rotate(0, 497, 55)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.046</text>
188<text fill="#000000" style="stroke:none" x="497" y="216" transform="rotate(0, 497, 216)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.046</text>
189<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,240.188 452.812,34.3125"/>
190<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,240.188 448.297,240.188"/>
191<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,219.6 448.297,219.6"/>
192<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,199.013 448.297,199.013"/>
193<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,178.425 448.297,178.425"/>
194<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,157.837 448.297,157.837"/>
195<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,137.25 448.297,137.25"/>
196<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,116.663 448.297,116.663"/>
197<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,96.0752 448.297,96.0752"/>
198<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,75.4873 448.297,75.4873"/>
199<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,54.8999 448.297,54.8999"/>
200<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,34.3125 448.297,34.3125"/>
201<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,229.894 450.104,229.894"/>
202<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,209.306 450.104,209.306"/>
203<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,188.719 450.104,188.719"/>
204<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,168.131 450.104,168.131"/>
205<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,147.544 450.104,147.544"/>
206<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,126.956 450.104,126.956"/>
207<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,106.369 450.104,106.369"/>
208<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,85.7812 450.104,85.7812"/>
209<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,65.1938 450.104,65.1938"/>
210<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,44.6064 450.104,44.6064"/>
211<text fill="#000000" style="stroke:none" x="427" y="245" transform="rotate(-0, 427, 245)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.5</text>
212<text fill="#000000" style="stroke:none" x="426" y="225" transform="rotate(-0, 426, 225)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.4</text>
213<text fill="#000000" style="stroke:none" x="426" y="204" transform="rotate(-0, 426, 204)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.3</text>
214<text fill="#000000" style="stroke:none" x="427" y="183" transform="rotate(-0, 427, 183)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.2</text>
215<text fill="#000000" style="stroke:none" x="427" y="163" transform="rotate(-0, 427, 163)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.1</text>
216<text fill="#000000" style="stroke:none" x="430" y="142" transform="rotate(-0, 430, 142)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.0</text>
217<text fill="#000000" style="stroke:none" x="431" y="122" transform="rotate(-0, 431, 122)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.1</text>
218<text fill="#000000" style="stroke:none" x="431" y="101" transform="rotate(-0, 431, 101)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.2</text>
219<text fill="#000000" style="stroke:none" x="431" y="80" transform="rotate(-0, 431, 80)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.3</text>
220<text fill="#000000" style="stroke:none" x="430" y="60" transform="rotate(-0, 430, 60)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.4</text>
221<text fill="#000000" style="stroke:none" x="431" y="39" transform="rotate(-0, 431, 39)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.5</text>
222<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,240.188 754.688,240.188 754.688,240.188"/>
223<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,219.6 754.688,219.6 754.688,219.6"/>
224<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,199.013 754.688,199.013 754.688,199.013"/>
225<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,178.425 754.688,178.425 754.688,178.425"/>
226<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,157.837 754.688,157.837 754.688,157.837"/>
227<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,137.25 754.688,137.25 754.688,137.25"/>
228<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,116.663 754.688,116.663 754.688,116.663"/>
229<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,96.0752 754.688,96.0752 754.688,96.0752"/>
230<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,75.4873 754.688,75.4873 754.688,75.4873"/>
231<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,54.8999 754.688,54.8999 754.688,54.8999"/>
232<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,34.3125 754.688,34.3125 754.688,34.3125"/>
233<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,240.188 754.688,240.188"/>
234<polyline fill="none" stroke="#000000" stroke-width="0.5" points="495.938,240.188 495.938,243.263"/>
235<polyline fill="none" stroke="#000000" stroke-width="0.5" points="603.75,240.188 603.75,243.263"/>
236<polyline fill="none" stroke="#000000" stroke-width="0.5" points="711.562,240.188 711.562,243.263"/>
237<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,240.188 452.812,242.033"/>
238<polyline fill="none" stroke="#000000" stroke-width="0.5" points="474.375,240.188 474.375,242.033"/>
239<polyline fill="none" stroke="#000000" stroke-width="0.5" points="517.5,240.188 517.5,242.033"/>
240<polyline fill="none" stroke="#000000" stroke-width="0.5" points="539.062,240.188 539.062,242.033"/>
241<polyline fill="none" stroke="#000000" stroke-width="0.5" points="560.625,240.188 560.625,242.033"/>
242<polyline fill="none" stroke="#000000" stroke-width="0.5" points="582.188,240.188 582.188,242.033"/>
243<polyline fill="none" stroke="#000000" stroke-width="0.5" points="625.312,240.188 625.312,242.033"/>
244<polyline fill="none" stroke="#000000" stroke-width="0.5" points="646.875,240.188 646.875,242.033"/>
245<polyline fill="none" stroke="#000000" stroke-width="0.5" points="668.438,240.188 668.438,242.033"/>
246<polyline fill="none" stroke="#000000" stroke-width="0.5" points="690,240.188 690,242.033"/>
247<polyline fill="none" stroke="#000000" stroke-width="0.5" points="733.125,240.188 733.125,242.033"/>
248<polyline fill="none" stroke="#000000" stroke-width="0.5" points="754.688,240.188 754.688,242.033"/>
249<text fill="#000000" style="stroke:none" x="485" y="254" transform="rotate(-0, 485, 254)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-2.0</text>
250<text fill="#000000" style="stroke:none" x="594" y="254" transform="rotate(-0, 594, 254)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-1.5</text>
251<text fill="#000000" style="stroke:none" x="701" y="254" transform="rotate(-0, 701, 254)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-1.0</text>
252<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="495.938,240.188 495.938,34.3125 495.938,34.3125"/>
253<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="603.75,240.188 603.75,34.3125 603.75,34.3125"/>
254<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="711.562,240.188 711.562,34.3125 711.562,34.3125"/>
255<text fill="#000000" style="stroke:none" x="555" y="26" transform="rotate(0, 555, 26)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">bounds:[-2,-2;2,2]</text>
256<text fill="#000000" style="stroke:none" x="575" y="268" transform="rotate(0, 575, 268)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">Re(h(2i&#x03c0;f))</text>
257<text fill="#000000" style="stroke:none" x="419" y="166" transform="rotate(270, 419, 166)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">Im(h(2i&#x03c0;f))</text>
258<polygon fill="#ffffff" points="50.3125,514.688 50.3125,308.812 50.3125,308.812"/>
259<polygon fill="#ffffff" points="50.3125,514.688 50.3125,308.812 50.3125,514.688"/>
260<polygon fill="#ffffff" points="50.3125,514.688 352.188,514.688 352.188,514.688"/>
261<polygon fill="#ffffff" points="50.3125,514.688 352.188,514.688 50.3125,514.688"/>
262<polygon fill="#ffffff" points="50.3125,514.688 352.188,514.688 352.188,308.812"/>
263<polygon fill="#ffffff" points="50.3125,514.688 352.188,308.812 50.3125,308.812"/>
264<polyline fill="none" stroke="#000000" stroke-width="0.5" points="77.7559,347.386 86.7373,343.706 95.5688,340.43 104.249,337.534 112.771,334.999 121.13,332.804 129.316,330.93 137.322,329.357 145.138,328.068 152.757,327.045 160.17,326.27 167.373,325.725 174.358,325.396 181.123,325.264 193.979,325.537 205.932,326.428 216.986,327.831 227.163,329.652 236.496,331.809 245.024,334.228 252.795,336.847 259.862,339.615 266.276,342.488 272.092,345.431 277.36,348.415 282.132,351.419 286.455,354.428 290.373,357.429 293.926,360.417 297.15,363.386 300.077,366.338 305.146,372.199 309.297,378.041 312.611,383.927 315.082,389.929 316.606,396.105 316.954,399.268 316.981,402.477 316.652,405.723 315.925,408.99 314.763,412.252 313.131,415.477 311.007,418.622 308.38,421.637 305.261,424.468 301.682,427.06 297.7,429.358 293.393,431.32 288.856,432.913 284.199,434.121 279.53,434.945 274.953,435.4 270.558,435.519 266.418,435.341 262.585,434.913 259.093,434.282 255.955,433.497 253.17,432.601 250.726,431.63 248.602,430.618 245.212,428.567 242.776,426.594 241.077,424.776 239.931,423.146 239.189,421.71 238.497,419.373 238.402,417.625 238.59,416.321 238.896,415.345 239.236,414.606 239.887,413.606 240.425,413 241.167,412.367 241.606,412.083 242.038,411.868 242.302,411.773 242.394,411.752 242.412,411.75 242.415,411.75 242.415,411.75 242.415,411.75 242.415,411.75 242.415,411.75 242.415,411.75 242.415,411.75 242.415,411.75 242.415,411.75 242.415,411.75 242.415,411.75 242.415,411.75 242.415,411.75 242.415,411.75 242.412,411.75 242.394,411.748 242.302,411.727 242.038,411.632 241.606,411.417 241.167,411.133 240.425,410.5 239.887,409.894 239.236,408.894 238.896,408.155 238.59,407.179 238.402,405.875 238.497,404.127 239.189,401.79 239.931,400.354 241.077,398.724 242.776,396.906 245.212,394.933 248.602,392.882 250.726,391.87 253.17,390.899 255.955,390.003 259.093,389.218 262.585,388.587 266.418,388.159 270.558,387.981 274.953,388.1 279.53,388.555 284.199,389.379 288.856,390.587 293.393,392.18 297.7,394.142 301.682,396.44 305.261,399.032 308.38,401.863 311.007,404.878 313.131,408.023 314.763,411.248 315.925,414.51 316.652,417.777 316.981,421.023 316.954,424.232 316.606,427.395 315.082,433.571 312.611,439.573 309.297,445.459 305.146,451.301 300.077,457.162 297.15,460.114 293.926,463.083 290.373,466.071 286.455,469.072 282.132,472.081 277.36,475.085 272.092,478.069 266.276,481.012 259.862,483.885 252.795,486.653 245.024,489.272 236.496,491.691 227.163,493.848 216.986,495.669 205.932,497.072 193.979,497.963 181.123,498.236 174.358,498.104 167.373,497.775 160.17,497.23 152.757,496.455 145.138,495.432 137.322,494.143 129.316,492.57 121.13,490.696 112.771,488.501 104.249,485.966 95.5688,483.07 86.7373,479.794 77.7559,476.114"/>
265<polygon fill="#000000" points="73.334,351.48 77.9038,347.325 71.7324,347.57"/>
266<polyline fill="none" stroke="#000000" stroke-width="0.5" points="77.7559,347.386 77.9038,347.325"/>
267<polygon fill="#000000" points="124.193,334.089 129.48,330.897 123.378,329.943"/>
268<polyline fill="none" stroke="#000000" stroke-width="0.5" points="129.316,330.93 129.48,330.897"/>
269<polygon fill="#000000" points="175.446,327.257 181.293,325.268 175.536,323.033"/>
270<polyline fill="none" stroke="#000000" stroke-width="0.5" points="181.123,325.264 181.293,325.268"/>
271<polygon fill="#000000" points="230.494,332.303 236.654,331.854 231.646,328.238"/>
272<polyline fill="none" stroke="#000000" stroke-width="0.5" points="236.496,331.809 236.654,331.854"/>
273<polygon fill="#000000" points="276.284,349.924 282.255,351.504 278.697,346.456"/>
274<polyline fill="none" stroke="#000000" stroke-width="0.5" points="282.132,351.419 282.255,351.504"/>
275<polygon fill="#000000" points="308.498,379.482 312.66,384.045 312.404,377.875"/>
276<polyline fill="none" stroke="#000000" stroke-width="0.5" points="312.611,383.927 312.66,384.045"/>
277<polygon fill="#000000" points="311.152,416.269 308.274,421.733 313.991,419.396"/>
278<polyline fill="none" stroke="#000000" stroke-width="0.5" points="308.38,421.637 308.274,421.733"/>
279<polygon fill="#000000" points="302.663,399.526 308.38,401.863 305.502,396.398"/>
280<polyline fill="none" stroke="#000000" stroke-width="0.5" points="308.274,401.767 308.38,401.863"/>
281<polygon fill="#000000" points="312.866,433.402 312.611,439.573 316.773,435.009"/>
282<polyline fill="none" stroke="#000000" stroke-width="0.5" points="312.66,439.455 312.611,439.573"/>
283<polygon fill="#000000" points="285.69,467.032 282.132,472.081 288.103,470.5"/>
284<polyline fill="none" stroke="#000000" stroke-width="0.5" points="282.255,471.996 282.132,472.081"/>
285<polygon fill="#000000" points="241.503,488.076 236.496,491.691 242.655,492.14"/>
286<polyline fill="none" stroke="#000000" stroke-width="0.5" points="236.654,491.646 236.496,491.691"/>
287<polygon fill="#000000" points="186.881,496 181.123,498.236 186.97,500.225"/>
288<polyline fill="none" stroke="#000000" stroke-width="0.5" points="181.293,498.232 181.123,498.236"/>
289<polygon fill="#000000" points="135.418,491.616 129.316,492.57 134.604,495.762"/>
290<polyline fill="none" stroke="#000000" stroke-width="0.5" points="129.48,492.603 129.316,492.57"/>
291<polygon fill="#000000" points="83.9272,476.36 77.7559,476.114 82.3252,480.27"/>
292<polyline fill="none" stroke="#000000" stroke-width="0.5" points="77.9038,476.175 77.7559,476.114"/>
293<text fill="#000000" style="stroke:none" x="243" y="410" transform="rotate(0, 243, 410)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">1e+03</text>
294<text fill="#000000" style="stroke:none" x="309" y="400" transform="rotate(0, 309, 400)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.931</text>
295<text fill="#000000" style="stroke:none" x="309" y="420" transform="rotate(0, 309, 420)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.931</text>
296<text fill="#000000" style="stroke:none" x="314" y="438" transform="rotate(0, 314, 438)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.719</text>
297<text fill="#000000" style="stroke:none" x="314" y="382" transform="rotate(0, 314, 382)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.719</text>
298<text fill="#000000" style="stroke:none" x="283" y="470" transform="rotate(0, 283, 470)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.524</text>
299<text fill="#000000" style="stroke:none" x="283" y="349" transform="rotate(0, 283, 349)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.524</text>
300<text fill="#000000" style="stroke:none" x="237" y="490" transform="rotate(0, 237, 490)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.4</text>
301<text fill="#000000" style="stroke:none" x="237" y="330" transform="rotate(0, 237, 330)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.4</text>
302<text fill="#000000" style="stroke:none" x="182" y="496" transform="rotate(0, 182, 496)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.312</text>
303<text fill="#000000" style="stroke:none" x="182" y="323" transform="rotate(0, 182, 323)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.312</text>
304<text fill="#000000" style="stroke:none" x="130" y="491" transform="rotate(0, 130, 491)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.25</text>
305<text fill="#000000" style="stroke:none" x="130" y="329" transform="rotate(0, 130, 329)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.25</text>
306<text fill="#000000" style="stroke:none" x="79" y="474" transform="rotate(0, 79, 474)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.197</text>
307<text fill="#000000" style="stroke:none" x="79" y="345" transform="rotate(0, 79, 345)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.197</text>
308<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,514.688 50.3125,308.812"/>
309<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,514.688 45.7974,514.688"/>
310<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,480.375 45.7974,480.375"/>
311<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,446.062 45.7974,446.062"/>
312<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,411.75 45.7974,411.75"/>
313<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,377.438 45.7974,377.438"/>
314<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,343.125 45.7974,343.125"/>
315<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,308.812 45.7974,308.812"/>
316<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,497.531 47.6035,497.531"/>
317<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,463.219 47.6035,463.219"/>
318<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,428.906 47.6035,428.906"/>
319<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,394.594 47.6035,394.594"/>
320<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,360.281 47.6035,360.281"/>
321<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,325.969 47.6035,325.969"/>
322<text fill="#000000" style="stroke:none" x="24" y="520" transform="rotate(-0, 24, 520)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.3</text>
323<text fill="#000000" style="stroke:none" x="25" y="485" transform="rotate(-0, 25, 485)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.2</text>
324<text fill="#000000" style="stroke:none" x="25" y="451" transform="rotate(-0, 25, 451)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.1</text>
325<text fill="#000000" style="stroke:none" x="28" y="417" transform="rotate(-0, 28, 417)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.0</text>
326<text fill="#000000" style="stroke:none" x="29" y="382" transform="rotate(-0, 29, 382)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.1</text>
327<text fill="#000000" style="stroke:none" x="29" y="348" transform="rotate(-0, 29, 348)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.2</text>
328<text fill="#000000" style="stroke:none" x="29" y="314" transform="rotate(-0, 29, 314)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.3</text>
329<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,514.688 352.188,514.688 352.188,514.688"/>
330<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,480.375 352.188,480.375 352.188,480.375"/>
331<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,446.062 352.188,446.062 352.188,446.062"/>
332<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,411.75 352.188,411.75 352.188,411.75"/>
333<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,377.438 352.188,377.438 352.188,377.438"/>
334<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,343.125 352.188,343.125 352.188,343.125"/>
335<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="50.3125,308.812 352.188,308.812 352.188,308.812"/>
336<polyline fill="none" stroke="#000000" stroke-width="0.5" points="50.3125,514.688 352.188,514.688"/>
337<polyline fill="none" stroke="#000000" stroke-width="0.5" points="77.7559,514.688 77.7559,517.763"/>
338<polyline fill="none" stroke="#000000" stroke-width="0.5" points="132.642,514.688 132.642,517.763"/>
339<polyline fill="none" stroke="#000000" stroke-width="0.5" points="187.528,514.688 187.528,517.763"/>
340<polyline fill="none" stroke="#000000" stroke-width="0.5" points="242.415,514.688 242.415,517.763"/>
341<polyline fill="none" stroke="#000000" stroke-width="0.5" points="297.301,514.688 297.301,517.763"/>
342<polyline fill="none" stroke="#000000" stroke-width="0.5" points="352.188,514.688 352.188,517.763"/>
343<polyline fill="none" stroke="#000000" stroke-width="0.5" points="55.8013,514.688 55.8013,516.533"/>
344<polyline fill="none" stroke="#000000" stroke-width="0.5" points="66.7783,514.688 66.7783,516.533"/>
345<polyline fill="none" stroke="#000000" stroke-width="0.5" points="88.7329,514.688 88.7329,516.533"/>
346<polyline fill="none" stroke="#000000" stroke-width="0.5" points="99.7104,514.688 99.7104,516.533"/>
347<polyline fill="none" stroke="#000000" stroke-width="0.5" points="110.688,514.688 110.688,516.533"/>
348<polyline fill="none" stroke="#000000" stroke-width="0.5" points="121.665,514.688 121.665,516.533"/>
349<polyline fill="none" stroke="#000000" stroke-width="0.5" points="143.619,514.688 143.619,516.533"/>
350<polyline fill="none" stroke="#000000" stroke-width="0.5" points="154.597,514.688 154.597,516.533"/>
351<polyline fill="none" stroke="#000000" stroke-width="0.5" points="165.574,514.688 165.574,516.533"/>
352<polyline fill="none" stroke="#000000" stroke-width="0.5" points="176.551,514.688 176.551,516.533"/>
353<polyline fill="none" stroke="#000000" stroke-width="0.5" points="198.506,514.688 198.506,516.533"/>
354<polyline fill="none" stroke="#000000" stroke-width="0.5" points="209.483,514.688 209.483,516.533"/>
355<polyline fill="none" stroke="#000000" stroke-width="0.5" points="220.46,514.688 220.46,516.533"/>
356<polyline fill="none" stroke="#000000" stroke-width="0.5" points="231.438,514.688 231.438,516.533"/>
357<polyline fill="none" stroke="#000000" stroke-width="0.5" points="253.392,514.688 253.392,516.533"/>
358<polyline fill="none" stroke="#000000" stroke-width="0.5" points="264.369,514.688 264.369,516.533"/>
359<polyline fill="none" stroke="#000000" stroke-width="0.5" points="275.347,514.688 275.347,516.533"/>
360<polyline fill="none" stroke="#000000" stroke-width="0.5" points="286.324,514.688 286.324,516.533"/>
361<polyline fill="none" stroke="#000000" stroke-width="0.5" points="308.278,514.688 308.278,516.533"/>
362<polyline fill="none" stroke="#000000" stroke-width="0.5" points="319.256,514.688 319.256,516.533"/>
363<polyline fill="none" stroke="#000000" stroke-width="0.5" points="330.233,514.688 330.233,516.533"/>
364<polyline fill="none" stroke="#000000" stroke-width="0.5" points="341.21,514.688 341.21,516.533"/>
365<text fill="#000000" style="stroke:none" x="67" y="529" transform="rotate(-0, 67, 529)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-1.3</text>
366<text fill="#000000" style="stroke:none" x="123" y="529" transform="rotate(-0, 123, 529)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-1.2</text>
367<text fill="#000000" style="stroke:none" x="178" y="529" transform="rotate(-0, 178, 529)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-1.1</text>
368<text fill="#000000" style="stroke:none" x="232" y="529" transform="rotate(-0, 232, 529)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-1.0</text>
369<text fill="#000000" style="stroke:none" x="287" y="529" transform="rotate(-0, 287, 529)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.9</text>
370<text fill="#000000" style="stroke:none" x="342" y="529" transform="rotate(-0, 342, 529)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.8</text>
371<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="77.7559,514.688 77.7559,308.812 77.7559,308.812"/>
372<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="132.642,514.688 132.642,308.812 132.642,308.812"/>
373<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="187.528,514.688 187.528,308.812 187.528,308.812"/>
374<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="242.415,514.688 242.415,308.812 242.415,308.812"/>
375<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="297.301,514.688 297.301,308.812 297.301,308.812"/>
376<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="352.188,514.688 352.188,308.812 352.188,308.812"/>
377<text fill="#000000" style="stroke:none" x="139" y="300" transform="rotate(0, 139, 300)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">bounds:[-1.3,-0.3;0,0.3]</text>
378<text fill="#000000" style="stroke:none" x="173" y="543" transform="rotate(0, 173, 543)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">Re(h(2i&#x03c0;f))</text>
379<text fill="#000000" style="stroke:none" x="16" y="440" transform="rotate(270, 16, 440)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">Im(h(2i&#x03c0;f))</text>
380<polygon fill="#ffffff" points="452.812,514.688 452.812,308.812 452.812,308.812"/>
381<polygon fill="#ffffff" points="452.812,514.688 452.812,308.812 452.812,514.688"/>
382<polygon fill="#ffffff" points="452.812,514.688 754.688,514.688 754.688,514.688"/>
383<polygon fill="#ffffff" points="452.812,514.688 754.688,514.688 452.812,514.688"/>
384<polygon fill="#ffffff" points="452.812,514.688 754.688,514.688 754.688,308.812"/>
385<polygon fill="#ffffff" points="452.812,514.688 754.688,308.812 452.812,308.812"/>
386<polyline fill="none" stroke="#000000" stroke-width="0.5" points="689.529,343.125 699.954,354.933 707.794,366.958 712.762,379.328 713.992,385.662 714.256,392.092 713.439,398.601 711.42,405.158 708.078,411.716 703.304,418.21 697.02,424.557 689.189,430.659 679.833,436.406 669.04,441.685 656.976,446.387 643.875,450.421 630.028,453.718 615.765,456.241 601.425,457.986 587.332,458.983 573.772,459.292 560.977,458.994 549.115,458.181 538.293,456.95 528.561,455.399 519.918,453.614 512.332,451.675 505.738,449.646 500.061,447.583 491.104,443.51 484.768,439.68 480.42,436.204 477.545,433.118 475.739,430.415 474.189,426.037 474.182,422.773 474.883,420.341 475.866,418.517 476.917,417.136 478.876,415.262 480.474,414.12 482.668,412.925 483.962,412.387 485.235,411.976 486.018,411.795 486.292,411.755 486.346,411.75 486.353,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.354,411.75 486.353,411.75 486.346,411.75 486.292,411.745 486.018,411.705 485.235,411.524 483.962,411.113 482.668,410.575 480.474,409.38 478.876,408.238 476.917,406.364 475.866,404.983 474.883,403.159 474.182,400.727 474.189,397.463 475.739,393.085 477.545,390.382 480.42,387.296 484.768,383.82 491.104,379.99 500.061,375.917 505.738,373.854 512.332,371.825 519.918,369.886 528.561,368.101 538.293,366.55 549.115,365.319 560.977,364.506 573.772,364.208 587.332,364.517 601.425,365.515 615.765,367.259 630.028,369.782 643.875,373.079 656.976,377.113 669.04,381.815 679.833,387.094 689.189,392.841 697.02,398.943 703.304,405.29 708.078,411.784 711.42,418.342 713.439,424.899 714.256,431.408 713.992,437.838 712.762,444.172 707.794,456.542 699.954,468.567 689.529,480.375"/>
387<polygon fill="#000000" points="684.183,340.257 689.606,343.212 687.351,337.462"/>
388<polyline fill="none" stroke="#000000" stroke-width="0.5" points="689.529,343.125 689.606,343.212"/>
389<polygon fill="#000000" points="709.598,374.132 712.78,379.425 713.745,373.324"/>
390<polyline fill="none" stroke="#000000" stroke-width="0.5" points="712.762,379.328 712.78,379.425"/>
391<polygon fill="#000000" points="709.749,405.879 708.011,411.806 713.152,408.382"/>
392<polyline fill="none" stroke="#000000" stroke-width="0.5" points="708.078,411.716 708.011,411.806"/>
393<polygon fill="#000000" points="683.988,432.022 679.703,436.469 685.844,435.817"/>
394<polyline fill="none" stroke="#000000" stroke-width="0.5" points="679.833,436.406 679.703,436.469"/>
395<polygon fill="#000000" points="635.212,450.657 629.865,453.747 635.948,454.817"/>
396<polyline fill="none" stroke="#000000" stroke-width="0.5" points="630.028,453.718 629.865,453.747"/>
397<polygon fill="#000000" points="579.453,457.312 573.602,459.289 579.354,461.536"/>
398<polyline fill="none" stroke="#000000" stroke-width="0.5" points="573.772,459.292 573.602,459.289"/>
399<polygon fill="#000000" points="525.909,452.965 519.763,453.575 524.862,457.059"/>
400<polyline fill="none" stroke="#000000" stroke-width="0.5" points="519.918,453.614 519.763,453.575"/>
401<polygon fill="#000000" points="482.461,436.685 477.484,433.027 478.946,439.028"/>
402<polyline fill="none" stroke="#000000" stroke-width="0.5" points="477.545,433.118 477.485,433.027"/>
403<polygon fill="#000000" points="476.083,396.383 477.545,390.382 472.568,394.039"/>
404<polyline fill="none" stroke="#000000" stroke-width="0.5" points="477.485,390.473 477.545,390.382"/>
405<polygon fill="#000000" points="514.818,373.37 519.918,369.886 513.772,369.276"/>
406<polyline fill="none" stroke="#000000" stroke-width="0.5" points="519.763,369.925 519.918,369.886"/>
407<polygon fill="#000000" points="568.019,366.455 573.772,364.208 567.92,362.231"/>
408<polyline fill="none" stroke="#000000" stroke-width="0.5" points="573.602,364.211 573.772,364.208"/>
409<polygon fill="#000000" points="623.945,370.852 630.028,369.782 624.681,366.691"/>
410<polyline fill="none" stroke="#000000" stroke-width="0.5" points="629.865,369.753 630.028,369.782"/>
411<polygon fill="#000000" points="673.69,386.442 679.832,387.094 675.546,382.647"/>
412<polyline fill="none" stroke="#000000" stroke-width="0.5" points="679.703,387.031 679.833,387.094"/>
413<polygon fill="#000000" points="702.938,408.36 708.078,411.784 706.341,405.857"/>
414<polyline fill="none" stroke="#000000" stroke-width="0.5" points="708.011,411.694 708.078,411.784"/>
415<polygon fill="#000000" points="711.797,438.072 712.762,444.172 715.944,438.879"/>
416<polyline fill="none" stroke="#000000" stroke-width="0.5" points="712.78,444.075 712.762,444.172"/>
417<polygon fill="#000000" points="691.785,474.625 689.529,480.375 694.953,477.42"/>
418<polyline fill="none" stroke="#000000" stroke-width="0.5" points="689.606,480.288 689.529,480.375"/>
419<text fill="#000000" style="stroke:none" x="487" y="410" transform="rotate(0, 487, 410)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">1e+08</text>
420<text fill="#000000" style="stroke:none" x="479" y="388" transform="rotate(0, 479, 388)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-1.37</text>
421<text fill="#000000" style="stroke:none" x="479" y="431" transform="rotate(0, 479, 431)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">1.37</text>
422<text fill="#000000" style="stroke:none" x="521" y="368" transform="rotate(0, 521, 368)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-1.18</text>
423<text fill="#000000" style="stroke:none" x="521" y="452" transform="rotate(0, 521, 452)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">1.18</text>
424<text fill="#000000" style="stroke:none" x="575" y="362" transform="rotate(0, 575, 362)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-1.09</text>
425<text fill="#000000" style="stroke:none" x="575" y="457" transform="rotate(0, 575, 457)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">1.09</text>
426<text fill="#000000" style="stroke:none" x="631" y="368" transform="rotate(0, 631, 368)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-1.02</text>
427<text fill="#000000" style="stroke:none" x="631" y="452" transform="rotate(0, 631, 452)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">1.02</text>
428<text fill="#000000" style="stroke:none" x="681" y="385" transform="rotate(0, 681, 385)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.946</text>
429<text fill="#000000" style="stroke:none" x="681" y="434" transform="rotate(0, 681, 434)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.946</text>
430<text fill="#000000" style="stroke:none" x="709" y="410" transform="rotate(0, 709, 410)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.875</text>
431<text fill="#000000" style="stroke:none" x="714" y="442" transform="rotate(0, 714, 442)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.786</text>
432<text fill="#000000" style="stroke:none" x="714" y="377" transform="rotate(0, 714, 377)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.786</text>
433<text fill="#000000" style="stroke:none" x="691" y="478" transform="rotate(0, 691, 478)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.68</text>
434<text fill="#000000" style="stroke:none" x="691" y="341" transform="rotate(0, 691, 341)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.68</text>
435<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,514.688 452.812,308.812"/>
436<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,514.688 448.297,514.688"/>
437<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,480.375 448.297,480.375"/>
438<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,446.062 448.297,446.062"/>
439<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,411.75 448.297,411.75"/>
440<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,377.438 448.297,377.438"/>
441<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,343.125 448.297,343.125"/>
442<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,308.812 448.297,308.812"/>
443<text fill="#000000" style="stroke:none" x="421" y="520" transform="rotate(-0, 421, 520)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.15</text>
444<text fill="#000000" style="stroke:none" x="420" y="485" transform="rotate(-0, 420, 485)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.10</text>
445<text fill="#000000" style="stroke:none" x="421" y="451" transform="rotate(-0, 421, 451)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.05</text>
446<text fill="#000000" style="stroke:none" x="424" y="417" transform="rotate(-0, 424, 417)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.00</text>
447<text fill="#000000" style="stroke:none" x="425" y="382" transform="rotate(-0, 425, 382)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.05</text>
448<text fill="#000000" style="stroke:none" x="424" y="348" transform="rotate(-0, 424, 348)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.10</text>
449<text fill="#000000" style="stroke:none" x="425" y="314" transform="rotate(-0, 425, 314)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">0.15</text>
450<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,514.688 754.688,514.688 754.688,514.688"/>
451<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,480.375 754.688,480.375 754.688,480.375"/>
452<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,446.062 754.688,446.062 754.688,446.062"/>
453<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,411.75 754.688,411.75 754.688,411.75"/>
454<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,377.438 754.688,377.438 754.688,377.438"/>
455<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,343.125 754.688,343.125 754.688,343.125"/>
456<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,308.812 754.688,308.812 754.688,308.812"/>
457<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,514.688 754.688,514.688"/>
458<polyline fill="none" stroke="#000000" stroke-width="0.5" points="452.812,514.688 452.812,517.763"/>
459<polyline fill="none" stroke="#000000" stroke-width="0.5" points="486.354,514.688 486.354,517.763"/>
460<polyline fill="none" stroke="#000000" stroke-width="0.5" points="519.896,514.688 519.896,517.763"/>
461<polyline fill="none" stroke="#000000" stroke-width="0.5" points="553.438,514.688 553.438,517.763"/>
462<polyline fill="none" stroke="#000000" stroke-width="0.5" points="586.979,514.688 586.979,517.763"/>
463<polyline fill="none" stroke="#000000" stroke-width="0.5" points="620.521,514.688 620.521,517.763"/>
464<polyline fill="none" stroke="#000000" stroke-width="0.5" points="654.062,514.688 654.062,517.763"/>
465<polyline fill="none" stroke="#000000" stroke-width="0.5" points="687.604,514.688 687.604,517.763"/>
466<polyline fill="none" stroke="#000000" stroke-width="0.5" points="721.146,514.688 721.146,517.763"/>
467<polyline fill="none" stroke="#000000" stroke-width="0.5" points="754.688,514.688 754.688,517.763"/>
468<polyline fill="none" stroke="#000000" stroke-width="0.5" points="469.583,514.688 469.583,516.533"/>
469<polyline fill="none" stroke="#000000" stroke-width="0.5" points="503.125,514.688 503.125,516.533"/>
470<polyline fill="none" stroke="#000000" stroke-width="0.5" points="536.667,514.688 536.667,516.533"/>
471<polyline fill="none" stroke="#000000" stroke-width="0.5" points="570.208,514.688 570.208,516.533"/>
472<polyline fill="none" stroke="#000000" stroke-width="0.5" points="603.75,514.688 603.75,516.533"/>
473<polyline fill="none" stroke="#000000" stroke-width="0.5" points="637.292,514.688 637.292,516.533"/>
474<polyline fill="none" stroke="#000000" stroke-width="0.5" points="670.833,514.688 670.833,516.533"/>
475<polyline fill="none" stroke="#000000" stroke-width="0.5" points="704.375,514.688 704.375,516.533"/>
476<polyline fill="none" stroke="#000000" stroke-width="0.5" points="737.917,514.688 737.917,516.533"/>
477<text fill="#000000" style="stroke:none" x="440" y="529" transform="rotate(-0, 440, 529)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-1.02</text>
478<text fill="#000000" style="stroke:none" x="473" y="529" transform="rotate(-0, 473, 529)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-1.00</text>
479<text fill="#000000" style="stroke:none" x="506" y="529" transform="rotate(-0, 506, 529)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.98</text>
480<text fill="#000000" style="stroke:none" x="540" y="529" transform="rotate(-0, 540, 529)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.96</text>
481<text fill="#000000" style="stroke:none" x="573" y="529" transform="rotate(-0, 573, 529)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.94</text>
482<text fill="#000000" style="stroke:none" x="608" y="529" transform="rotate(-0, 608, 529)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.92</text>
483<text fill="#000000" style="stroke:none" x="641" y="529" transform="rotate(-0, 641, 529)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.90</text>
484<text fill="#000000" style="stroke:none" x="674" y="529" transform="rotate(-0, 674, 529)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.88</text>
485<text fill="#000000" style="stroke:none" x="708" y="529" transform="rotate(-0, 708, 529)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.86</text>
486<text fill="#000000" style="stroke:none" x="741" y="529" transform="rotate(-0, 741, 529)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">-0.84</text>
487<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="452.812,514.688 452.812,308.812 452.812,308.812"/>
488<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="486.354,514.688 486.354,308.812 486.354,308.812"/>
489<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="519.896,514.688 519.896,308.812 519.896,308.812"/>
490<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="553.438,514.688 553.438,308.812 553.438,308.812"/>
491<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="586.979,514.688 586.979,308.812 586.979,308.812"/>
492<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="620.521,514.688 620.521,308.812 620.521,308.812"/>
493<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="654.062,514.688 654.062,308.812 654.062,308.812"/>
494<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="687.604,514.688 687.604,308.812 687.604,308.812"/>
495<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="721.146,514.688 721.146,308.812 721.146,308.812"/>
496<polyline fill="none" stroke="#d3d3d3" stroke-width="0.5" stroke-dasharray="4,4,4,4" points="754.688,514.688 754.688,308.812 754.688,308.812"/>
497<text fill="#000000" style="stroke:none" x="533" y="300" transform="rotate(0, 533, 300)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">bounds:[-1.1,-0.1;-0.8,0.1]</text>
498<text fill="#000000" style="stroke:none" x="575" y="543" transform="rotate(0, 575, 543)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">Re(h(2i&#x03c0;f))</text>
499<text fill="#000000" style="stroke:none" x="412" y="440" transform="rotate(270, 412, 440)" font-size="10" font-family="SansSerif" font-style="normal" font-weight="normal">Im(h(2i&#x03c0;f))</text>
500</g>
501</svg>
diff --git a/scilab/modules/cacsd/macros/nyquist.sci b/scilab/modules/cacsd/macros/nyquist.sci
index 5aa3275..2cdf7cd 100644
--- a/scilab/modules/cacsd/macros/nyquist.sci
+++ b/scilab/modules/cacsd/macros/nyquist.sci
@@ -1,5 +1,5 @@
1// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab 1// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2// Copyright (C) INRIA, Serge Steer 2// Copyright (C) 1984-2011 - INRIA - Serge STEER
3// This file must be used under the terms of the CeCILL. 3// This file must be used under the terms of the CeCILL.
4// This source file is licensed as described in the file COPYING, which 4// This source file is licensed as described in the file COPYING, which
5// you should have received as part of this distribution. The terms 5// you should have received as part of this distribution. The terms
@@ -10,7 +10,11 @@ function nyquist(varargin)
10// Nyquist plot 10// Nyquist plot
11//! 11//!
12 rhs=size(varargin); 12 rhs=size(varargin);
13 13 symmetry=%t
14 if type(varargin(rhs))==4 then //symmetrization flag
15 symmetry=varargin(rhs)
16 rhs=rhs-1
17 end
14 if type(varargin(rhs))==10 then 18 if type(varargin(rhs))==10 then
15 comments=varargin(rhs); 19 comments=varargin(rhs);
16 rhs=rhs-1; 20 rhs=rhs-1;
@@ -87,9 +91,13 @@ function nyquist(varargin)
87 mnx=min(-1,min(repf));// to make the critical point visible 91 mnx=min(-1,min(repf));// to make the critical point visible
88 mxx=max(-1,max(repf)); 92 mxx=max(-1,max(repf));
89 93
90 mxy=max(0,max(abs(repi))); 94 if symmetry then
91 mny=min(0,-mxy); 95 mxy=max(0,max(abs(repi)));
92 96 mny=min(0,-mxy);
97 else
98 mxy=max(0,max(repi));
99 mny=min(0,min(repi));
100 end
93 dx=(mxx-mnx)/30; 101 dx=(mxx-mnx)/30;
94 dy=(mxy-mny)/30; 102 dy=(mxy-mny)/30;
95 rect=[mnx-dx,mny-dy;mxx+dx,mxy+dy]; 103 rect=[mnx-dx,mny-dy;mxx+dx,mxy+dy];
@@ -115,8 +123,13 @@ function nyquist(varargin)
115 ax.y_label.text=_("Im(h(exp(2iπf*dt)))"); 123 ax.y_label.text=_("Im(h(exp(2iπf*dt)))");
116 end 124 end
117 else 125 else
118 ax.data_bounds=[min(ax.data_bounds(1,:),rect(1,:));max(ax.data_bounds(2,:),rect(2,:))]; 126 rect= ax.data_bounds
127 mnx=rect(1,1);
128 mxx=rect(2,1)
129 mny=rect(1,2)
130 mxy=rect(2,2)
119 end 131 end
132
120 // drawing the curves 133 // drawing the curves
121 splitf($+1)=n+1; 134 splitf($+1)=n+1;
122 135
@@ -132,12 +145,22 @@ function nyquist(varargin)
132 Curves=[] 145 Curves=[]
133 146
134 kf=1 147 kf=1
135 for k=1:mn 148 if symmetry then
136 xpoly([R(k,:) R(k,$:-1:1)],[I(k,:) -I(k,$:-1:1)]); 149 for k=1:mn
137 e=gce();e.foreground=k; 150 xpoly([R(k,:) R(k,$:-1:1)],[I(k,:) -I(k,$:-1:1)]);
138 datatipInitStruct(e,"formatfunction","formatNyquistTip","freq",[F(kf,:) F(kf,$:-1:1)]) 151 e=gce();e.foreground=k;
139 Curves=[Curves,e]; 152 datatipInitStruct(e,"formatfunction","formatNyquistTip","freq",[F(kf,:) F(kf,$:-1:1)])
140 kf=kf+ilf; 153 Curves=[Curves,e];
154 kf=kf+ilf;
155 end
156 else
157 for k=1:mn
158 xpoly(R(k,:),I(k,:));
159 e=gce();e.foreground=k;
160 datatipInitStruct(e,"formatfunction","formatNyquistTip","freq",F(kf,:))
161 Curves=[Curves,e];
162 kf=kf+ilf;
163 end
141 end 164 end
142 clear R I 165 clear R I
143 166
@@ -163,7 +186,7 @@ function nyquist(varargin)
163 186
164 if min(abs(frq(:,ks($))-frq(:,kk))./abs(frq(:,kk)))>0.001 then 187 if min(abs(frq(:,ks($))-frq(:,kk))./abs(frq(:,kk)))>0.001 then
165 if min(sqrt(((repf(:,ks)-repf(:,kk)*ones(ks)).^2)/dx2+.. 188 if min(sqrt(((repf(:,ks)-repf(:,kk)*ones(ks)).^2)/dx2+..
166 ((repi(:,ks)-repi(:,kk)*ones(ks)).^2)/dy2)) >DIc then 189 ((repi(:,ks)-repi(:,kk)*ones(ks)).^2)/dy2)) >DIc then
167 ks=[ks kk]; 190 ks=[ks kk];
168 d=0; 191 d=0;
169 end 192 end
@@ -184,7 +207,7 @@ function nyquist(varargin)
184 xstring(repf(k,kks),repi(k,kks),msprintf("%-0.3g",frq(kf,kks)),0); 207 xstring(repf(k,kks),repi(k,kks),msprintf("%-0.3g",frq(kf,kks)),0);
185 e=gce();e.font_foreground=k; 208 e=gce();e.font_foreground=k;
186 L=[e L]; 209 L=[e L];
187 if abs(repi(k,kks))>mxy/20 then //not to overlap labels 210 if symmetry&(abs(repi(k,kks))>mxy/20) then //not to overlap labels
188 xstring(repf(k,kks),-repi(k,kks),msprintf("%-0.3g",-frq(kf,kks)),0); 211 xstring(repf(k,kks),-repi(k,kks),msprintf("%-0.3g",-frq(kf,kks)),0);
189 e=gce();e.font_foreground=k; 212 e=gce();e.font_foreground=k;
190 L=[e L]; 213 L=[e L];
@@ -202,10 +225,17 @@ function nyquist(varargin)
202 // we should use xarrows or xsegs here. 225 // we should use xarrows or xsegs here.
203 // However their displayed arrow size depends 226 // However their displayed arrow size depends
204 // on the data bounds and we want to avoid this 227 // on the data bounds and we want to avoid this
205 xx=[repf(k,ks(1:last)) repf(k,ks(last:-1:1))+dr($:-1:1) ; 228 if symmetry then
206 repf(k,ks(1:last))+dr repf(k,ks(last:-1:1))] 229 xx=[repf(k,ks(1:last)) repf(k,ks(last:-1:1))+dr($:-1:1) ;
207 yy=[repi(k,ks(1:last)) -repi(k,ks(last:-1:1))-di($:-1:1) ; 230 repf(k,ks(1:last))+dr repf(k,ks(last:-1:1))]
208 repi(k,ks(1:last))+di -repi(k,ks(last:-1:1))] 231 yy=[repi(k,ks(1:last)) -repi(k,ks(last:-1:1))-di($:-1:1) ;
232 repi(k,ks(1:last))+di -repi(k,ks(last:-1:1))]
233 else
234 xx=[repf(k,ks(1:last)) ;
235 repf(k,ks(1:last))+dr]
236 yy=[repi(k,ks(1:last));
237 repi(k,ks(1:last))+di]
238 end
209 xpolys(xx,yy) 239 xpolys(xx,yy)
210 //xarrows([repf(k,ks(1:last));repf(k,ks(1:last))+dr],.. 240 //xarrows([repf(k,ks(1:last));repf(k,ks(1:last))+dr],..
211 // [repi(k,ks(1:last));repi(k,ks(1:last))+di],1.5) 241 // [repi(k,ks(1:last));repi(k,ks(1:last))+di],1.5)
diff --git a/scilab/modules/cacsd/macros/nyquistfrequencybounds.sci b/scilab/modules/cacsd/macros/nyquistfrequencybounds.sci
new file mode 100644
index 0000000..e30d228
--- /dev/null
+++ b/scilab/modules/cacsd/macros/nyquistfrequencybounds.sci
@@ -0,0 +1,132 @@
1// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2// Copyright (C) 2011 - INRIA - Serge Steer
3//
4// This file must be used under the terms of the CeCILL.
5// This source file is licensed as described in the file COPYING, which
6// you should have received as part of this distribution. The terms
7// are also available at
8// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
9
10function [fmin,fmax]=nyquistfrequencybounds(H,bounds)
11//find frequencies that reaches the nyquist bounds on real an imag part
12
13 fname="nyquistFrequencyBounds" //for error messages
14
15 if or(size(bounds)<>[2 2]) then
16 error(msprintf(_("%s: Wrong size for argument %d: (%d,%d) expected.\n"),fname,2,2,2))
17 end
18 if or(bounds(2,:)<bounds(1,:)) then
19 error(msprintf(_("%s: Wrong value for input argument #%d: second row must be greater than first one.\n"),fname,2))
20 end
21 if and(typeof(H)<>["state-space" "rational"]) then
22 error(msprintf(_("%s: Wrong type for input argument #%d: Linear dynamical system expected.\n"),fname,1))
23 end
24 if size(H,'*')<>1 then
25 error(msprintf(_("Wrong type for argument %d: SISO expected.\n"),fname,1))
26 end
27
28 if typeof(H)=="state-space" then
29 H=ss2tf(H)
30 end
31
32 dom=H.dt
33 if dom==[]|dom=='d' then dom=1,end
34 eps=1d-10
35
36 frq=[];
37 orient=[]
38 if dom=='c' then
39 c=2*%i*%pi
40 function f=arg2freq(y)
41 f=y/c;
42 endfunction
43 Hr=(H+horner(H,-%s))/2;
44 Hi=(H-horner(H,-%s))/2;
45 else
46 c=2*%i*%pi*dom
47 function f=arg2freq(y)
48 f=log(y)/c;
49 endfunction
50 Hr=(H+horner(H,1/%z))/2;
51 Hi=(H-horner(H,1/%z))/2;
52 end
53
54 // computing frequencies that make the nyquist locus to cross
55 // the real part lower bound
56 f=arg2freq(roots(numer(Hr-bounds(1,1))));
57 f=real(f(real(f)>0&abs(imag(f)./abs(f))<eps));
58 //keep only those that give imaginary parts inside the bounds
59 im=imag(repfreq(H,f));
60 f=f(im<=bounds(2,2)&im>=bounds(1,2))
61 if f<>[] then
62 orient=[orient imag(repfreq(derivat(Hr),f))<0]
63 frq=[frq;f];
64 end
65
66 // computing frequencies that make the nyquist locus to cross
67 // the real part upper bound
68 f=arg2freq(roots(numer(Hr-bounds(2,1))));
69 f=real(f(real(f)>0&abs(imag(f)./abs(f))<eps));
70 //keep only those that give imaginary parts inside the bounds
71 im==imag(repfreq(H,f));
72 f=f(im<=bounds(2,2)&im>=bounds(1,2))
73 if f<>[] then
74 orient=[orient imag(repfreq(derivat(Hr),f))>0]
75 frq=[frq;f];
76 end
77
78 // computing frequencies that make the nyquist locus to cross
79 // the imaginary part lower bound
80 f=arg2freq(roots(numer(Hi-%i*bounds(1,2))));
81 f=real(f(real(f)>0&abs(imag(f)./abs(f))<eps));
82 //keep only those that give real parts inside the bounds
83 re=real(repfreq(H,f));
84 f=f(re<=bounds(2,1)&re>=bounds(1,1))
85 if f<>[] then
86 orient=[orient real(repfreq(derivat(Hi),f))>0]
87 frq=[frq;f];
88 end
89
90 // computing frequencies that make the nyquist locus to cross
91 // the imaginary part upper bound
92 f=arg2freq(roots(numer(Hi-%i*bounds(2,2))));
93 f=real(f(real(f)>0&abs(imag(f)./abs(f))<eps));
94 //keep only those that give real parts inside the bounds
95 re=real(repfreq(H,f));
96 f=f(re<=bounds(2,1)&re>=bounds(1,1))
97 if f<>[] then
98 orient=[orient real(repfreq(derivat(Hi),f))<0]
99 frq=[frq;f];
100 end
101
102 if frq==[] then
103 //check if there is at least one point inside the bounds
104 r=repfreq(H,%pi)
105 if real(r)<bounds(1,1)|real(r)>bounds(2,1)|imag(r)<bounds(1,2)| ...
106 imag(r)>bounds(2,2) then
107 fmin=[];fmax=[]
108 else
109 fmin=0;fmax=%inf
110 end
111 else
112 //looking for the lowest frequency for which the locus enters the
113 //area and the highest for which the locus leaves it.
114 [frq,k]=gsort(frq,'g','i');
115 orient=orient(k)
116 if ~orient(1) then
117 //locus starts inside the area
118 frq=[0;frq]
119 end
120 if orient($) then
121 //locus ends inside the area
122 frq=[frq;%inf]
123 end
124
125 fmin=frq(1)
126 fmax=frq($)
127
128 end
129
130
131endfunction
132
diff --git a/scilab/modules/cacsd/macros/repfreq.sci b/scilab/modules/cacsd/macros/repfreq.sci
index ed24694..9cc18a2 100644
--- a/scilab/modules/cacsd/macros/repfreq.sci
+++ b/scilab/modules/cacsd/macros/repfreq.sci
@@ -1,10 +1,10 @@
1// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab 1// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2// Copyright (C) INRIA - Serge Steer 2// Copyright (C) 1984-2011 - INRIA - Serge STEER
3// 3//
4// This file must be used under the terms of the CeCILL. 4// This file must be used under the terms of the CeCILL.
5// This source file is licensed as described in the file COPYING, which 5// This source file is licensed as described in the file COPYING, which
6// you should have received as part of this distribution. The terms 6// you should have received as part of this distribution. The terms
7// are also available at 7// are also available at
8// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt 8// http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
9 9
10function [frq,rep,splitf]=repfreq(sys,fmin,fmax,pas) 10function [frq,rep,splitf]=repfreq(sys,fmin,fmax,pas)
@@ -12,7 +12,7 @@ function [frq,rep,splitf]=repfreq(sys,fmin,fmax,pas)
12 pas_def='auto'; 12 pas_def='auto';
13 l10=log(10); 13 l10=log(10);
14 [lhs,rhs]=argn(0) 14 [lhs,rhs]=argn(0)
15 //discretization 15 //discretization
16 if and(typeof(sys)<>[ 'rational' 'state-space' ]) then 16 if and(typeof(sys)<>[ 'rational' 'state-space' ]) then
17 error(msprintf(gettext("%s: Wrong type for input argument #%d: Linear dynamical system expected.\n"),"repfreq",1)) 17 error(msprintf(gettext("%s: Wrong type for input argument #%d: Linear dynamical system expected.\n"),"repfreq",1))
18 end 18 end
@@ -31,9 +31,9 @@ function [frq,rep,splitf]=repfreq(sys,fmin,fmax,pas)
31 pas=pas_def 31 pas=pas_def
32 if dom=='c' then fmax=1.d3; else fmax=1/(2*dom),end 32 if dom=='c' then fmax=1.d3; else fmax=1/(2*dom),end
33 if fmin=='sym' then 33 if fmin=='sym' then
34 fmin=-fmax 34 fmin=-fmax
35 else 35 else
36 fmin=0 36 fmin=0
37 end 37 end
38 else 38 else
39 frq=fmin 39 frq=fmin
@@ -41,31 +41,42 @@ function [frq,rep,splitf]=repfreq(sys,fmin,fmax,pas)
41 case 3 then 41 case 3 then
42 pas=pas_def 42 pas=pas_def
43 case 4 then , 43 case 4 then ,
44 else 44 else
45 error(msprintf(gettext("%s: Wrong number of input arguments: %d to %d expected.\n"), "repfreq",1,4)) 45 error(msprintf(gettext("%s: Wrong number of input arguments: %d to %d expected.\n"), "repfreq",1,4))
46 end; 46 end;
47 splitf=1 47 splitf=1
48 if rhs<>2 then 48 if rhs<>2 then
49 if fmin==[] then
50 fmin=0,
51 end
52 if fmax==[]|fmax==%inf then
53 if dom=="c" then
54 fmax=1.d3;
55 else
56 fmax=1/(2*dom);
57 end
58 end
59
49 if type(pas)==1 then 60 if type(pas)==1 then
50 splitf=1 61 splitf=1
51 eps=1.e-14 62 eps=1.e-14
52 if fmin<0&fmax>=0 then 63 if fmin<0&fmax>=0 then
53 frq=- [exp(l10*((log(eps)/l10):pas:(log(-fmin)/l10))) -fmin]; 64 frq=- [exp(l10*((log(eps)/l10):pas:(log(-fmin)/l10))) -fmin];
54 if fmax>eps then 65 if fmax>eps then
55 frq1=[exp(l10*((log(eps)/l10):pas:(log(fmax)/l10))) fmax]; 66 frq1=[exp(l10*((log(eps)/l10):pas:(log(fmax)/l10))) fmax];
56 frq=[frq($:-1:1) frq1] 67 frq=[frq($:-1:1) frq1]
57 else 68 else
58 frq=frq($:-1:1); 69 frq=frq($:-1:1);
59 end 70 end
60 elseif fmin<0&fmax<0 then 71 elseif fmin<0&fmax<0 then
61 frq= [exp(l10*((log(-fmax)/l10):pas:(log(-fmin)/l10))) -fmin]; 72 frq= [exp(l10*((log(-fmax)/l10):pas:(log(-fmin)/l10))) -fmin];
62 frq=-frq($:-1:1); 73 frq=-frq($:-1:1);
63 elseif fmin >= fmax then 74 elseif fmin >= fmax then
64 error(msprintf(gettext("%s: Wrong value for input arguments #%d and #%d: %s < %s expected.\n"),.. 75 error(msprintf(gettext("%s: Wrong value for input arguments #%d and #%d: %s < %s expected.\n"),..
65 "repfreq",2,3,"fmin","fmax")); 76 "repfreq",2,3,"fmin","fmax"));
66 else 77 else
67 fmin=max(eps,fmin); 78 fmin=max(eps,fmin);
68 frq=[exp(l10*((log(fmin)/l10):pas:(log(fmax)/l10))) fmax]; 79 frq=[exp(l10*((log(fmin)/l10):pas:(log(fmax)/l10))) fmax];
69 end 80 end
70 else 81 else
71 [frq,bnds,splitf]=calfrq(sys,fmin,fmax) 82 [frq,bnds,splitf]=calfrq(sys,fmin,fmax)
@@ -78,18 +89,18 @@ function [frq,rep,splitf]=repfreq(sys,fmin,fmax,pas)
78 [n,d]=sys(['num','den']), 89 [n,d]=sys(['num','den']),
79 [mn,nn]=size(n) 90 [mn,nn]=size(n)
80 if nn<>1 then error(95,1),end 91 if nn<>1 then error(95,1),end
81 if dom=='c' then 92 if dom=='c' then
82 rep=freq(n,d,2*%pi*%i*frq), 93 rep=freq(n,d,2*%pi*%i*frq),
83 else 94 else
84 rep=freq(n,d,exp(2*%pi*%i*dom*frq)), 95 rep=freq(n,d,exp(2*%pi*%i*dom*frq)),
85 end; 96 end;
86 case 'lss' then 97 case 'lss' then
87 [a,b,c,d,x0]=sys(2:6), 98 [a,b,c,d,x0]=sys(2:6),
88 [mn,nn]=size(b) 99 [mn,nn]=size(b)
89 if nn<>1 then error(95,1),end 100 if nn<>1 then error(95,1),end
90 if dom=='c' then 101 if dom=='c' then
91 rep=freq(a,b,c,d,2*%pi*%i*frq) 102 rep=freq(a,b,c,d,2*%pi*%i*frq)
92 else 103 else
93 rep=freq(a,b,c,d,exp(2*%pi*%i*dom*frq)) 104 rep=freq(a,b,c,d,exp(2*%pi*%i*dom*frq))
94 end; 105 end;
95 else error(97,1), 106 else error(97,1),