a82ce666e3cb1e4d2017561e82d79e60788c52c7
[scilab.git] / scilab / modules / differential_equations / help / fr_FR / daskr.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) 2013 - Scilab Enterprises - Paul Bignier
5  *
6  * Copyright (C) 2012 - 2016 - Scilab Enterprises
7  *
8  * This file is hereby licensed under the terms of the GNU GPL v2.0,
9  * pursuant to article 5.3.4 of the CeCILL v.2.1.
10  * This file was originally licensed under the terms of the CeCILL v2.1,
11  * and continues to be available under such terms.
12  * For more information, see the COPYING file which you should have received
13  * along with this program.
14  *
15  -->
16 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" xmlns:scilab="http://www.scilab.org" xml:id="daskr" xml:lang="fr">
17     <refnamediv>
18         <refname>daskr</refname>
19         <refpurpose>solveur de DAE avec traversées de zéros</refpurpose>
20     </refnamediv>
21     <refsynopsisdiv>
22         <title>Séquence d'appel</title>
23         <synopsis>[r, nn [, hd]] = daskr(x0, t0, t [, atol [, rtol]], res [, jac], ng, surf [, info [, psol] [, pjac]] [, hd])</synopsis>
24     </refsynopsisdiv>
25     <refsection>
26         <title>Paramètres</title>
27         <variablelist>
28             <varlistentry>
29                 <term>x0</term>
30                 <listitem>
31                     <para>
32                         représente soit <literal>y0</literal> (<literal>ydot0</literal> sera
33                         estimé par <literal>daskr</literal> avec zéro comme première estimation),
34                         soir la matrice <literal>[y0 ydot0]</literal>.
35                         <literal>g(t, y0, ydot0)</literal> doit être égal à zéro. Si vous ne connaissez
36                         qu'une estimation de <literal>ydot0</literal>, assignez
37                         <literal>info(7)=1</literal>.
38                     </para>
39                     <variablelist>
40                         <varlistentry>
41                             <term>y0</term>
42                             <listitem>
43                                 <para>vecteur colonne réel des conditions initiales.</para>
44                             </listitem>
45                         </varlistentry>
46                         <varlistentry>
47                             <term>ydot0</term>
48                             <listitem>
49                                 <para>vecteur colonne réel de la dérivée en temps de
50                                     <literal>y</literal> à <literal>t0</literal> (peut être une estimation.
51                                 </para>
52                             </listitem>
53                         </varlistentry>
54                     </variablelist>
55                 </listitem>
56             </varlistentry>
57             <varlistentry>
58                 <term>t0</term>
59                 <listitem>
60                     <para>réel, temps initial.</para>
61                 </listitem>
62             </varlistentry>
63             <varlistentry>
64                 <term>t</term>
65                 <listitem>
66                     <para>réel, scalaire ou vecteur. Temps auxquels la solution est désirée.
67                         Notez que vous pouvez obtenir la solution à chaque étape de daskr en fixant
68                         <literal>info(2)=1</literal>.
69                     </para>
70                 </listitem>
71             </varlistentry>
72             <varlistentry>
73                 <term>atol, rtol</term>
74                 <listitem>
75                     <para>réels scalaires ou vecteurs colonnes de même taille que
76                         <literal>y</literal> ou tous deux de taille <literal>1</literal>. <literal>atol</literal> et <literal>rtol</literal> représentent
77                         les tolérances d'erreur absolue et relative de la solution.
78                         Si ce sont des vecteurs, alors les tolérances sont spécifiées pour chaque composante de
79                         <literal>y</literal>.
80                     </para>
81                 </listitem>
82             </varlistentry>
83             <varlistentry>
84                 <term>res</term>
85                 <listitem>
86                     <para>
87                         <link linkend="external">external</link> (fonction, liste ou chaîne de caractères).
88                         Calcule la valeur de
89                         <literal>g(t, y, ydot)</literal>. Elle peut être :
90                     </para>
91                     <itemizedlist>
92                         <listitem>
93                             <para>Une fonction Scilab.</para>
94                             <para>Sa séquence d'appel doit être
95                                 <literal>[r, ires] = res(t, y, ydot)</literal> et doit retourner le résidu
96                                 <literal>r = g(t, y, ydot)</literal> et un drapeau d'erreur
97                                 <literal>ires</literal>. <literal>ires = 0</literal> si
98                                 <literal>res</literal> a correctement calculé <literal>r</literal>,
99                                 <literal>ires = -1</literal> si le résidu est localement non défini pour
100                                 <literal>(t, y, ydot)</literal>, <literal>ires = -2</literal> si
101                                 des paramètres sont hors du champ admissible.
102                             </para>
103                         </listitem>
104                         <listitem>
105                             <para>Une liste.</para>
106                             <para>Cette forme permet de passer des paramètres autres que t, y, ydot à la fonction.
107                                 Elle doit se présenter comme suit :
108                             </para>
109                             <programlisting role="no-scilab-exec"><![CDATA[
110 list(res, x1, x2, ...)
111  ]]></programlisting>
112                             <para>où la séquence d'appel de la fonction
113                                 <literal>res</literal> est maintenant
114                             </para>
115                             <programlisting role="no-scilab-exec"><![CDATA[
116 r = res(t, y, ydot, x1, x2, ...)
117  ]]></programlisting>
118                             <para>
119                                 <literal>res</literal> retourne toujours
120                                 <literal>r = g(t, y, ydot)</literal> comme fonction de
121                                 <literal>(t, y, ydot, x1, x2, ...)</literal>.
122                             </para>
123                             <para>Attention : cette forme ne doit pas être utilisée s'il n'y pas
124                                 d'argument additionnel à passer à la fonction.
125                             </para>
126                         </listitem>
127                         <listitem>
128                             <para>Une chaîne de caractères.</para>
129                             <para>Elle doit se référer au nom d'une fonction C ou une routine Fortran
130                                 reliée à Scilab.
131                             </para>
132                             <para>En C, la séquence d'appel doit être :</para>
133                             <programlisting role="no-scilab-exec"><![CDATA[
134 void res(double *t, double y[], double yd[], double r[],
135          int *ires, double rpar[], int ipar[])
136  ]]></programlisting>
137                             <para>En Fortran, elle doit être :</para>
138                             <programlisting role="no-scilab-exec"><![CDATA[
139 subroutine res(t, y, yd, r, ires, rpar, ipar)
140 double precision t, y(*), yd(*),r(*),rpar(*)
141 integer ires, ipar(*)
142  ]]></programlisting>
143                             <para>
144                                 Les tableaux <literal>rpar</literal> et <literal>ipar</literal>
145                                 doivent être présents mais ne peuvent pas être utilisés.
146                             </para>
147                         </listitem>
148                     </itemizedlist>
149                 </listitem>
150             </varlistentry>
151             <varlistentry>
152                 <term>jac</term>
153                 <listitem>
154                     <para>
155                         <link linkend="external">external</link> (fonction, liste ou chaîne de caractères).
156                         Calcule la valeur de <literal>dg/dy + cj*dg/dydot</literal> pour une valeur donnée du paramètre
157                         <literal>cj</literal>.
158                     </para>
159                     <itemizedlist>
160                         <listitem>
161                             <para>Une fonction Scilab.</para>
162                             <para>Sa séquence d'appel doit être
163                                 <literal>r = jac(t, y, ydot, cj)</literal> et doit retourner
164                                 <literal>r = dg(t, y, ydot)/dy + cj*dg(t, y, ydot)/dydot</literal> où
165                                 <literal>cj</literal> est un scalaire réel.
166                             </para>
167                         </listitem>
168                         <listitem>
169                             <para>Une liste.</para>
170                             <para>Elle doit se présenter comme suit :</para>
171                             <programlisting role="no-scilab-exec"><![CDATA[
172 list(jac, x1, x2, ...)
173  ]]></programlisting>
174                             <para>où la séquence d'appel de la fonction
175                                 <literal>jac</literal> est désormais
176                             </para>
177                             <programlisting role="no-scilab-exec"><![CDATA[
178 r=jac(t, y, ydot, cj, x1, x2,...)
179  ]]></programlisting>
180                             <para>
181                                 <literal>jac</literal> retourne toujours
182                                 <literal>dg/dy + cj*dg/dydot</literal> comme fonction de
183                                 <literal>(t, y, ydot, cj, x1, x2,...)</literal>.
184                             </para>
185                         </listitem>
186                         <listitem>
187                             <para>Une chaîne de caractères.</para>
188                             <para>Elle doit se référer au nom d'une fonction C ou une routine Fortran reliée à Scilab.
189                             </para>
190                             <para>En C, la séquence d'appel doit être :</para>
191                             <programlisting role="no-scilab-exec"><![CDATA[
192 void jac(double *t, double y[], double yd[], double pd[],
193          double *cj, double rpar[], int ipar[])
194  ]]></programlisting>
195                             <para>En Fortran, elle doit être :</para>
196                             <programlisting role="no-scilab-exec"><![CDATA[
197 subroutine jac(t, y, yd, pd, cj, rpar, ipar)
198 double precision t, y(*), yd(*), pd(*), cj, rpar(*)
199 integer ipar(*)
200  ]]></programlisting>
201                         </listitem>
202                     </itemizedlist>
203                 </listitem>
204             </varlistentry>
205             <varlistentry>
206                 <term>surf</term>
207                 <listitem>
208                     <para>
209                         <link linkend="external">external</link> (fonction, liste ou chaîne de caractères).
210                         Calcule la valeur du vecteur colonne <literal>surf(t, y)</literal> à
211                         <literal>ng</literal> composantes. Chaque composante représente une surface.
212                         Elle doit être définie comme suit :
213                     </para>
214                     <itemizedlist>
215                         <listitem>
216                             <para>Une fonction Scilab.</para>
217                             <para>Sa séquence d'appel doit être
218                                 <literal>surf(t, y)</literal>
219                             </para>
220                         </listitem>
221                         <listitem>
222                             <para>Une liste.</para>
223                             <para>Elle doit se présenter comme suit :</para>
224                             <programlisting role="no-scilab-exec"><![CDATA[
225 list(surf, x1, x2, ...)
226  ]]></programlisting>
227                             <para>où la séquence d'appel de la fonction
228                                 <literal>surf</literal> est maintenant
229                             </para>
230                             <programlisting role="no-scilab-exec"><![CDATA[
231 r = surf(t, y, x1, x2, ...)
232  ]]></programlisting>
233                         </listitem>
234                         <listitem>
235                             <para>Une chaîne de caractères.</para>
236                             <para>Elle doit se référer au nom d'une fonction C ou une routine Fortran reliée à Scilab.
237                             </para>
238                             <para>En C, la séquence d'appel doit être :</para>
239                             <programlisting role="no-scilab-exec"><![CDATA[
240 void surf(int *ny, double *t, double y[], int *ng, double gout[])
241  ]]></programlisting>
242                             <para>En Fortran, elle doit être :</para>
243                             <programlisting role="no-scilab-exec"><![CDATA[
244 subroutine surf(ny, t, y, ng, gout)
245 double precision t, y(*), gout(*)
246 integer ny, ng
247  ]]></programlisting>
248                         </listitem>
249                     </itemizedlist>
250                 </listitem>
251             </varlistentry>
252             <varlistentry>
253                 <term>info</term>
254                 <listitem>
255                     <para>
256                         liste contenant <literal>14</literal> éléments. La valeur par défaut est
257                         <literal>list([], 0, [], [], [], 0, [], 0, [], 0, 0, [], [], 1)</literal>.
258                     </para>
259                     <variablelist>
260                         <varlistentry>
261                             <term>info(1)</term>
262                             <listitem>
263                                 <para>réel scalaire donnant le temps maximal pour lequel
264                                     <literal>g</literal> peut être évalué ou une matrice vide
265                                     <literal>[]</literal> si aucune limite de temps n'est imposée.
266                                 </para>
267                             </listitem>
268                         </varlistentry>
269                         <varlistentry>
270                             <term>info(2)</term>
271                             <listitem>
272                                 <para>
273                                     drapeau indiquant si <literal>daskr</literal> retourne
274                                     ses valeurs intermédiaires calculées (<literal>= 1</literal>)
275                                     ou seulement les temps indiqués par l'utilisateur
276                                     (<literal>= 0</literal>).
277                                 </para>
278                             </listitem>
279                         </varlistentry>
280                         <varlistentry>
281                             <term>info(3)</term>
282                             <listitem>
283                                 <para>
284                                     vecteur de deux éléments donnant la définition
285                                     <literal>[ml,mu]</literal> de la matrice bande calculeé par
286                                     <literal>jac</literal>; <literal>r(i - j + ml + mu + 1,j) = "dg(i)/dy(j)+cj*dg(i)/dydot(j)"</literal>.
287                                     Si <literal>jac</literal> retourne une matrice pleine, fixer
288                                     <literal>info(3)=[]</literal>.
289                                     Inutile si
290                                     <literal>info(8)=1</literal>.
291                                 </para>
292                             </listitem>
293                         </varlistentry>
294                         <varlistentry>
295                             <term>info(4)</term>
296                             <listitem>
297                                 <para>réel scalaire donnant la taille maximale du pas. Fixer
298                                     <literal>info(4)=[]</literal> si illimité.
299                                 </para>
300                             </listitem>
301                         </varlistentry>
302                         <varlistentry>
303                             <term>info(5)</term>
304                             <listitem>
305                                 <para>réel scalaire donnant le pas initial. Fixer
306                                     <literal>info(5)=[]</literal> si non spécifié.
307                                 </para>
308                             </listitem>
309                         </varlistentry>
310                         <varlistentry>
311                             <term>info(6)</term>
312                             <listitem>
313                                 <para>
314                                     fixer <literal>info(6)=1</literal> si la solution est
315                                     non-négative, sinon fixer
316                                     <literal>info(6)=0</literal>.
317                                 </para>
318                             </listitem>
319                         </varlistentry>
320                         <varlistentry>
321                             <term>info(7)</term>
322                             <listitem>
323                                 <para>
324                                     si ydot0 est fixé tel que
325                                     <literal>g(t0, y0, ydot0) = 0</literal>, alors fixer
326                                     <literal>info(7)=[]</literal>. Sinon, fixer
327                                     <literal>info(7)=[+-1, ..., +-1]</literal>, avec
328                                     <literal>info(7)(i) = 1</literal> si y(i) est une variable différentielle et
329                                     <literal>info(7)(i) = -1</literal> si y(i) est une variable algébrique
330                                     (si ses dérivées n'apparaissent pas explicitement dans la fonction g(t, y, ydot)).
331                                 </para>
332                             </listitem>
333                         </varlistentry>
334                         <varlistentry>
335                             <term>info(8)</term>
336                             <listitem>
337                                 <para>
338                                     méthode directe / Krylov. Fixer <literal>info(8)=1</literal> et founrnir une routine <literal>psol</literal>
339                                     si vous souhaitez que le solveur utilise des itérations de Krylov, sinon (méthode directe) fixer
340                                     <literal>info(8)=0</literal>.
341                                 </para>
342                             </listitem>
343                         </varlistentry>
344                         <varlistentry>
345                             <term>info(9)</term>
346                             <listitem>
347                                 <para>
348                                     paramètres de Krylov. Inutile si vous avez fixé
349                                     <literal>info(8)=0</literal>. Sinon, fixer
350                                     <literal>info(9)=[]</literal> ou
351                                     <literal>info(9)=[maxl kmp nrmax epli]</literal>, où :
352                                 </para>
353                                 <para>
354                                     - maxl = nombre maximal d'itérations de l'algorithme GMRes (par défaut
355                                     <literal>min(5, neq)</literal>),
356                                 </para>
357                                 <para>
358                                     - kmp = nombre de vecteurs sur lesquels l'orthogonalisation est faite dans GMRes
359                                     (par défaut maxl),
360                                 </para>
361                                 <para>
362                                     - nrmax = nombre maximal de redémarrages de GMRes par intération non-linéaire
363                                     (par défaut <literal>5</literal>),
364                                 </para>
365                                 <para>
366                                     - epli = constante du test de convergence de GMRes (par défaut <literal>0.05</literal>).
367                                 </para>
368                             </listitem>
369                         </varlistentry>
370                         <varlistentry>
371                             <term>info(10)</term>
372                             <listitem>
373                                 <para>
374                                     conditions initiales. A ignorer si
375                                     <literal>info(7)=[]</literal>. Fixer
376                                     <literal>info(10)=1</literal> si le solveur doit s'arrêter après
377                                     le calcul des valeurs initiales, sinon fixer
378                                     <literal>info(10)=0</literal>.
379                                 </para>
380                             </listitem>
381                         </varlistentry>
382                         <varlistentry>
383                             <term>info(11)</term>
384                             <listitem>
385                                 <para>
386                                     routine pour le calcul et la factorisation LU du préconditionneur pour <literal>psol</literal>.
387                                     Inutile si <literal>info(8)=0</literal>. Fixer
388                                     <literal>info(11)=1</literal> et fournir une routine <literal>pjac</literal> si l'<link linkend="external">external</link>
389                                     <literal>psol</literal> doit utiliser une routine spécifique, sinon fixer
390                                     <literal>info(11)=0</literal>.
391                                 </para>
392                             </listitem>
393                         </varlistentry>
394                         <varlistentry>
395                             <term>info(12)</term>
396                             <listitem>
397                                 <para>
398                                     si vous souhaitez contrôler l'erreur localement sur toutes les variables, fixez
399                                     <literal>info(12)=[]</literal>. Sinon, fixez
400                                     <literal>info(12)=[+-1, ..., +-1]</literal>, avec
401                                     <literal>info(12)(i) = 1</literal> si y(i) est une variable différentielle et
402                                     <literal>info(12)(i) = -1</literal> si y(i) est une variable algébrique
403                                     (si ses dérivées n'apparaissent pas explicitement dans la fonction g(t, y, ydot)).
404                                 </para>
405                             </listitem>
406                         </varlistentry>
407                         <varlistentry>
408                             <term>info(13)</term>
409                             <listitem>
410                                 <para>
411                                     paramètres heuristiques. Ignorer si
412                                     <literal>info(7)=[]</literal>. Sinon, fixer
413                                     <literal>info(13)=[]</literal> ou
414                                     <literal>info(13)=[mxnit mxnj mxnh lsoff stptol epinit]</literal>, où :
415                                 </para>
416                                 <para>
417                                     - mxnit = nombre maximal d'itérations de Newton par évaluation du préconditionneur (par défaut
418                                     <literal>5</literal> si <literal>info(8)=0</literal>, <literal>15</literal> sinon),
419                                 </para>
420                                 <para>
421                                     - mxnj = nombre maximal d'évaluations du préconditionneur (par défaut
422                                     <literal>6</literal> si <literal>info(8)=0</literal>, <literal>2</literal> sinon),
423                                 </para>
424                                 <para>
425                                     - mxnh = nombre maximal de valeurs artificielles du pas <literal>h</literal> à tenter si info(7) ≠ [] (par défaut
426                                     <literal>5</literal>),
427                                 </para>
428                                 <para>
429                                     - lsoff = drapeau pour désactiver l'algorithme de recherche linéaire (lsoff = 0 pour activer, lsoff = 1 pour désactiver)
430                                     (par défaut <literal>0</literal>),
431                                 </para>
432                                 <para>
433                                     - stptol = pas minimal (dimmensionné) dans l'algorithme de recherche linéaire (par défaut <literal>(unit roundoff)^(2/3)</literal>),
434                                 </para>
435                                 <para>
436                                     - epinit = facteur déterminant dans le test de convergence de l'itération Newton (par défaut <literal>0.01</literal>).
437                                 </para>
438                             </listitem>
439                         </varlistentry>
440                         <varlistentry>
441                             <term>info(14)</term>
442                             <listitem>
443                                 <para>
444                                     verbosité. Fixer <literal>info(14)=1</literal> pour une information minimale,
445                                     <literal>info(14)=2</literal> pour une information maximale, sinon fixer
446                                     <literal>info(14)=0</literal>.
447                                 </para>
448                             </listitem>
449                         </varlistentry>
450                     </variablelist>
451                 </listitem>
452             </varlistentry>
453             <varlistentry>
454                 <term>psol</term>
455                 <listitem>
456                     <para>
457                         <link linkend="external">external</link> (fonction, liste ou chaîne de caractères).
458                         Résout un système linéraire <literal>P*x = b</literal>,
459                         où P est le préconditionneur LU-factorisé que <literal>pjac</literal>
460                         a calculé auparavant et stocké dans <literal>wp</literal> et <literal>iwp</literal>.
461                     </para>
462                     <itemizedlist>
463                         <listitem>
464                             <para>Une fonction Scilab.</para>
465                             <para>Sa séquence d'appel doit être
466                                 <literal>[r, ier] = psol(wp, iwp, b)</literal> et doit retourner la solution du système dans
467                                 <literal>r</literal> et un drapeau d'erreur <literal>ier</literal>.
468                             </para>
469                         </listitem>
470                         <listitem>
471                             <para>Une liste.</para>
472                             <para>Elle doit se présenter comme suit :</para>
473                             <programlisting role="no-scilab-exec"><![CDATA[
474 list(psol, x1, x2, ...)
475  ]]></programlisting>
476                             <para>
477                                 où la séquence d'appel de <literal>psol</literal> est
478                             </para>
479                             <programlisting role="no-scilab-exec"><![CDATA[
480 psol(wp, iwp, b, x1, x2, ...)
481  ]]></programlisting>
482                             <para>
483                                 <literal>psol</literal> retourne toujours la solution dans <literal>r</literal>.
484                             </para>
485                         </listitem>
486                         <listitem>
487                             <para>Une chaîne de caractères.</para>
488                             <para>Elle doit se référer au nom d'une fonction C ou une routine Fortran reliée à Scilab
489                             </para>
490                             <para>En C, la séquence d'appel doit être :</para>
491                             <programlisting role="no-scilab-exec"><![CDATA[
492 void psol (int*neq, double*t, double*y, double*ydot, double*savr,
493   double*wk, double*cj, double*wght, double*wp, int*iwp, double*b, double*eplin, int*ier, double*rpar, int*ipar)
494  ]]></programlisting>
495                             où les vecteurs <literal>wp</literal> et <literal>iwp</literal> contiennent le préconditionneur LU-factorisé
496                             <literal>P</literal>, <literal>wp</literal> représentant les valeurs et
497                             <literal>iwp</literal> les pivots utilisés dans la factorisation.
498                             <para>En Fortran, elle doit être :</para>
499                             <programlisting role="no-scilab-exec"><![CDATA[
500 subroutine psol (neq, t, y, ydot, savr, wk, cj, wght,
501   wp, iwp, b, eplin, ier, rpar, ipar)
502 double precision t,y(*), ydot(*), savr(*), wk(*), cj, wght(*), wp(*),
503   b(*), eplin, rpar(*)
504 integer neq, iwp(*), ier, ipar(*)
505  ]]></programlisting>
506                         </listitem>
507                     </itemizedlist>
508                 </listitem>
509             </varlistentry>
510             <varlistentry>
511                 <term>pjac</term>
512                 <listitem>
513                     <para>
514                         <link linkend="external">external</link> (fonction, liste ou chaîne de caractères). Calcule la valeur de
515                         <literal>dg/dy + cj*dg/dydot</literal> pour une valeur donnée du paramètre
516                         <literal>cj</literal> et la LU-factorise en deux vecteurs, réel et entier.
517                     </para>
518                     <itemizedlist>
519                         <listitem>
520                             <para>Une fonction Scilab.</para>
521                             <para>Sa séquence d'appel doit être
522                                 <literal>[wp, iwp, ires] = pjac(neq, t, y, ydot, h, cj, rewt, savr)</literal> et en retour,
523                                 les vecteurs <literal>wp</literal> et <literal>iwp</literal>
524                                 doivent contenir toutes les informations du préconditionneur factorisé.
525                             </para>
526                         </listitem>
527                         <listitem>
528                             <para>Une liste.</para>
529                             <para>Elle doit se présenter comme suit :</para>
530                             <programlisting role="no-scilab-exec"><![CDATA[
531 list(pjac, x1, x2, ...)
532  ]]></programlisting>
533                             <para>
534                                 où la séquence d'appel de <literal>pjac</literal> est
535                             </para>
536                             <programlisting role="no-scilab-exec"><![CDATA[
537 pjac(neq, t, y, ydot, h, cj, rewt, savr, x1, x2,...)
538  ]]></programlisting>
539                             <para>
540                                 <literal>pjac</literal> retourne toujours
541                                 <literal>dg/dy + cj*dg/dydot</literal> comme fonction de
542                                 <literal>(neq, t, y, ydot, h, cj, rewt, savr, x1, x2, ...)</literal>.
543                             </para>
544                         </listitem>
545                         <listitem>
546                             <para>Une chaîne de caractères.</para>
547                             <para>Elle doit se référer au nom d'une fonction C ou une routine Fortran reliée à Scilab
548                             </para>
549                             <para>En C, la séquence d'appel doit être :</para>
550                             <programlisting role="no-scilab-exec"><![CDATA[
551 void pjac (double*res, int*ires, int*neq, double*t, double*y, double*ydot, double*rewt, double*savr,
552 double*wk, double*h, double*cj, double*wp, int*iwp, int*ier, double*rpar, int*ipar)
553  ]]></programlisting>
554                             <para>En Fortran, elle doit être :</para>
555                             <programlisting role="no-scilab-exec"><![CDATA[
556 subroutine pjac (res, ires, neq, t, y, ydot, rewt, savr,
557   wk, h, cj, wp, iwp, ier, rpar, ipar)
558 double precision res(*), t, y(*), ydot(*), rewt(*), savr(*),
559   wk(*), h, cj, wp(*), rpar(*)
560 integer ires, neq, iwp(*), ier, ipar(*)
561  ]]></programlisting>
562                         </listitem>
563                     </itemizedlist>
564                 </listitem>
565             </varlistentry>
566             <varlistentry>
567                 <term>hd</term>
568                 <listitem>
569                     <para>
570                         vecteur réel servant à stocker le contexte de
571                         <literal>daskr</literal> et reprendre l'intégration.
572                     </para>
573                 </listitem>
574             </varlistentry>
575             <varlistentry>
576                 <term>r</term>
577                 <listitem>
578                     <para>
579                         matrice réelle. Chaque colonne est le vecteur <literal>[t; x(t); xdot(t)]</literal> où
580                         <literal>t</literal> est l'indice en temps aulequel la solution a été calculée,
581                         <literal>x(t)</literal> est la valeur de la solution calculée,
582                         <literal>xdot(t)</literal> est la dérivée de la solution calculée.
583                     </para>
584                 </listitem>
585             </varlistentry>
586             <varlistentry>
587                 <term>nn</term>
588                 <listitem>
589                     <para>
590                         vecteur à deux entrées <literal>[times num]</literal>,
591                         <literal>times</literal> est la valeur du temps auquel la surface est traversée,
592                         <literal>num</literal> est le nombre de surfaces traversées.
593                     </para>
594                 </listitem>
595             </varlistentry>
596         </variablelist>
597     </refsection>
598     <refsection>
599         <title>Description</title>
600         <para>Solution de l'équation différentielle implicite :</para>
601         <programlisting role="no-scilab-exec"><![CDATA[
602 g(t, y, ydot) = 0
603 y(t0) = y0  et  ydot(t0) = ydot0
604  ]]></programlisting>
605         <para>Retourne les temps de traversée de surface et le nombre de surfaces traversées
606             dans <literal>nn</literal>.
607         </para>
608         <para>Des exemples détaillés se trouvent dans SCI/modules/differential_equations/tests/unit_tests/daskr.tst</para>
609     </refsection>
610     <refsection>
611         <title>Exemples</title>
612         <programlisting role="example"><![CDATA[
613 // dy/dt = ((2*log(y)+8)/t-5)*y,  y(1) = 1,  1 <= t <= 6
614 // g1 = ((2*log(y)+8)/t-5)*y
615 // g2 = log(y) - 2.2491
616 y0 = 1; t = 2:6; t0 = 1; y0d = 3;
617 atol = 1.d-6; rtol = 0; ng = 2;
618
619 deff('[delta, ires] = res1(t, y, ydot)', 'ires = 0; delta = ydot-((2*log(y)+8)/t-5)*y')
620 deff('[rts] = gr1(t, y)', 'rts = [((2*log(y)+8)/t-5)*y; log(y)-2.2491]')
621
622 [yy, nn] = daskr([y0, y0d], t0, t, atol, rtol, res1, ng, gr1);
623 nn
624
625 // Retourne nn = [2.4698972 2]
626  ]]></programlisting>
627     </refsection>
628     <refsection role="see also">
629         <title>Voir aussi</title>
630         <simplelist type="inline">
631             <member>
632                 <link linkend="ode">ode</link>
633             </member>
634             <member>
635                 <link linkend="dasrt">dasrt</link>
636             </member>
637             <member>
638                 <link linkend="dassl">dassl</link>
639             </member>
640             <member>
641                 <link linkend="impl">impl</link>
642             </member>
643             <member>
644                 <link linkend="call">call</link>
645             </member>
646             <member>
647                 <link linkend="link">link</link>
648             </member>
649             <member>
650                 <link linkend="external">external</link>
651             </member>
652         </simplelist>
653     </refsection>
654     <refsection>
655         <title>Historique</title>
656         <revhistory>
657             <revision>
658                 <revnumber>5.5.0</revnumber>
659                 <revdescription>daskr ajouté</revdescription>
660             </revision>
661         </revhistory>
662     </refsection>
663 </refentry>