Xcos help: simplify the HTML characters
[scilab.git] / scilab / modules / xcos / help / fr_FR / solvers / 7-DDaskr.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4  * Copyright (C) Scilab Enterprises - 2013 - Paul Bignier
5  *
6  * This file must be used under the terms of the CeCILL.
7  * This source file is licensed as described in the file COPYING, which
8  * you should have received as part of this distribution.
9  * The terms are also available at
10  * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
11  -->
12 <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" xmlns:scilab="http://www.scilab.org" xml:lang="fr_FR" xml:id="DDaskr">
13     <refnamediv>
14         <refname>DDaskr</refname>
15         <refpurpose>
16             <emphasis>DDaskr</emphasis> (abréviation de "Double-precision Differential Algebraic equations system Solver with Krylov method and Rootfinding") est un solveur numérique fournissant une méthode efficace et stable pour résoudre des Problèmes à Valeur Initiale d'Equations Différentielles Algebriques (EDAs).
17         </refpurpose>
18     </refnamediv>
19     <refsection>
20         <title>Description</title>
21         <para>
22             Appelé par <link linkend="xcos">xcos</link>, <emphasis>DDaskr</emphasis> (abréviation de "Double-precision Differential Algebraic equations system Solver with Krylov method and Rootfinding") est un solveur numérique fournissant une méthode efficace et stable pour résoudre des Problèmes à Valeur Initiale de la forme :
23         </para>
24         <para>
25             <latex>
26                 \begin{eqnarray}
27                 F(t,y,\dot{y}) = 0, \hspace{2 mm} y(t_0)=y_0, \hspace{2 mm} \dot{y}(t_0)=\dot{y}_0, \hspace{3 mm} y, \hspace{1.5 mm} \dot{y}  \hspace{1.5 mm} and \hspace{1.5 mm} F \in R^N \hspace{10 mm} (1)
28                 \end{eqnarray}
29             </latex>
30         </para>
31         <para>
32         </para>
33         Avant de résoudre le problème, <emphasis>DDaskr</emphasis> lance une routine interne pour trouver des valeurs consistantes à
34         <emphasis>
35             y<subscript>0</subscript>
36         </emphasis>
37         et
38         <emphasis>
39             yPrime<subscript>0</subscript>
40         </emphasis>
41         .
42         <para>
43             Partant alors de ces
44             <emphasis>
45                 y<subscript>0</subscript>
46             </emphasis>
47             et
48             <emphasis>
49                 yPrime<subscript>0</subscript>
50             </emphasis>
51             , <emphasis>DDaskr</emphasis> approxime
52             <emphasis>
53                 y<subscript>n+1</subscript>
54             </emphasis>
55             grâce à la formule <emphasis>BDF</emphasis> :
56         </para>
57         <para>
58             <latex>
59                 \begin{eqnarray}
60                 \sum_{i=0}^{q} \alpha_{n,i} y_{n-i} = h_n\dot{y}_{n}
61                 \end{eqnarray}
62             </latex>
63             <para>
64                  avec, comme dans <link linkend="CVode">CVode</link>,
65                 <emphasis>
66                     y<subscript>n</subscript>
67                 </emphasis>
68                 l'approximation de
69                 <emphasis>
70                     y(t<subscript>n</subscript>)
71                 </emphasis>
72                 ,
73                 <emphasis>
74                     h<subscript>n</subscript>
75                 </emphasis>
76                 =
77                 <emphasis>
78                     t<subscript>n</subscript> - t<subscript>n-1</subscript>
79                 </emphasis>
80                 la taille du pas, et les coefficients fixés, déterminés uniformément par le type de méthode, son ordre <emphasis>q</emphasis> allant de 1 à 5 et l'histoire des pas de temps.
81             </para>
82         </para>
83         <para>
84             Injecter cette formule dans <emphasis>(1)</emphasis> fournit le système :
85         </para>
86         <para>
87             <latex>
88                 G(y_n) \equiv F \left( t_n, \hspace{1.5mm} y_n, \hspace{1.5mm} h_n^{-1}\sum_{i=0}^{q} \alpha_{n,i} y_{n-i} \right) = 0
89             </latex>
90         </para>
91         <para>
92             Sa résolution s'effectue par la méthode de Newton, mais les itérations sont soit <emphasis role="bold">directes</emphasis> soit de <emphasis role="bold">Krylov</emphasis> (GMRes préconditionnées).
93         </para>
94         <itemizedlist>
95             <listitem>
96                 <para>
97                     <emphasis role="bold">Itération Directe</emphasis> : on commence par réécrire le système :
98                 </para>
99                 <para>
100                     <latex>
101                         J \left[y_{n(m+1)}-y_{n(m)} \right] = -G(y_{n(m)})
102                     </latex>
103                 </para>
104                 <para>
105                      avec <emphasis>J</emphasis> une approximation du Jacobien :
106                 </para>
107                 <para>
108                      <latex>
109                         J = \frac{\partial{G}}{\partial{y}} = \frac{\partial{F}}{\partial{y}}+\alpha\frac{\partial{F}}{\partial{\dot{y}}}, \hspace{4 mm} \alpha = \frac{\alpha_{n,0}}{h_n},
110                     </latex>
111                 </para>
112                 <para>
113                      <emphasis>α</emphasis> change quand le pas ou l'ordre de la méthode varient.
114                 </para>
115                 <para>
116                     Un solveur direct dense est alors utilisé et on poursuit sur le prochain pas de temps.
117                 </para>
118             </listitem>
119             <listitem>
120                 <para>
121                     <emphasis role="bold">Méthode de GMRes Krylov</emphasis> : d'abord, on préconditionne le système en appliquant le Jacobien mentionné au-dessus.
122                 </para>
123                 <para>
124                     Ensuite, on déterminela base le l'espace de Krylov suivant et on recalcule la matrice de Hessenberg.
125                 </para>
126                 <para>
127                     Premier test de convergence. S'il ne passe pas, on calcule le résidu, qui conduit à une potentielle nouvelle solution, et on itère jusuq'à ce que le résidu converge.
128                 </para>
129             </listitem>
130         </itemizedlist>
131         <para>
132             <emphasis>DDaskr</emphasis> se sert des valeurs passées pour contrôler l'erreur locale
133             <emphasis>
134                 y<subscript>n(m)</subscript> - y<subscript>n(0)</subscript>
135             </emphasis>
136             et recalcule
137             <emphasis>
138                 h<subscript>n</subscript>
139             </emphasis>
140             si cette erreur n'est pas satisfaisante.
141         </para>
142         <para>
143             Cette fonction est appelée entre les activations, parce-que'une acrtivation discrète peut modifier le système.
144         </para>
145         <para>
146             Suivant la criticalité de l'événement (son effet sur le problème continu), soit le solveur poursuit avec temps initial et final différents comme si rien ne s'était passé, soit, si le système a été modifié, il faut "réinitialiser à froid" le solveur et le relancer.
147         </para>
148         <para>
149             En moyenne, <emphasis>DDaskr</emphasis> accepte des tolérances juqu'à 10<superscript>-11</superscript>. Au-delà, il retourne l'erreur <emphasis>Trop de précision demandée</emphasis>.
150         </para>
151         <para>
152             Pour l'instant, <emphasis>DDaskr</emphasis> ne peut être appliqué qu'à des systèmes où les fonctions dont on cherche à détecter les traversées de zéro sont poncutellement nulles, et non nulles sur un segment.
153         </para>
154     </refsection>
155     <refsection id="Exemple_DDaskr">
156         <title>Exemple</title>
157         <para>
158             Le bloc 'Modelica Generic' retourne ses états continus, on peut les évaluer avec <emphasis>DDaskr</emphasis> en lançant l'exemple:
159         </para>
160         <para>
161             <link type="scilab" linkend="scilab.xcos/xcos/examples/solvers/DAE_Example.zcos">
162                 <inlinemediaobject>
163                     <imageobject>
164                         <imagedata align="center" fileref="../../../examples/solvers/DAE_Example.zcos" valign="middle"/>
165                     </imageobject>
166                 </inlinemediaobject>
167             </link>
168             <scilab:image localized="true"><![CDATA[
169 loadScicos();
170 loadXcosLibs();
171 importXcosDiagram(SCI + "/modules/xcos/examples/solvers/DAE_Example.zcos");
172 // Redéfinition de messagebox() pour éviter le popup
173 function messagebox(msg, Title)
174  disp(Title);
175  disp(msg);
176 endfunction
177 scs_m.props.tol(6) = 101;
178 try xcos_simulate(scs_m, 4); catch disp(lasterror()); end
179 ]]></scilab:image>
180         </para>
181     </refsection>
182     <refsection>
183         <title>Voir Aussi</title>
184         <simplelist type="inline">
185             <member>
186                 <link linkend="LSodar">LSodar</link>
187             </member>
188             <member>
189                 <link linkend="CVode">CVode</link>
190             </member>
191             <member>
192                 <link linkend="IDA">IDA</link>
193             </member>
194             <member>
195                 <link linkend="RK">Runge-Kutta 4(5)</link>
196             </member>
197             <member>
198                 <link linkend="DoPri">Dormand-Prince 4(5)</link>
199             </member>
200             <member>
201                 <link linkend="RKImp">Runge-Kutta Implicite 4(5)</link>
202             </member>
203             <member>
204                 <link linkend="Comparaisons">Comparaisons</link>
205             </member>
206             <member>
207                 <link linkend="daskr">daskr</link>
208             </member>
209             <member>
210                 <link linkend="ode">ode</link>
211             </member>
212             <member>
213                 <link linkend="ode_discrete">ode_discrete</link>
214             </member>
215             <member>
216                 <link linkend="ode_root">ode_root</link>
217             </member>
218             <member>
219                 <link linkend="odedc">odedc</link>
220             </member>
221             <member>
222                 <link linkend="impl">impl</link>
223             </member>
224         </simplelist>
225     </refsection>
226     <refsection>
227         <title>Bibliographie</title>
228         <para>
229             <ulink url="http://www.netlib.org/ode/">Netlib</ulink>, documentation à l'intérieur du code.
230         </para>
231         <para>
232             <ulink url="https://computation.llnl.gov/casc/sundials/documentation/documentation.html">Documentation Sundials</ulink>
233         </para>
234     </refsection>
235     <refsection>
236         <title>Histoire</title>
237         <revhistory>
238             <revision>
239                 <revnumber>5.5.0</revnumber>
240                 <revdescription>DDaskr ajouté</revdescription>
241             </revision>
242         </revhistory>
243     </refsection>
244 </refentry>