~ubuntu-branches/ubuntu/hoary/scilab/hoary

« back to all changes in this revision

Viewing changes to man/fr/nonlinear/ode.xml

  • Committer: Bazaar Package Importer
  • Author(s): Torsten Werner
  • Date: 2005-01-09 22:58:21 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20050109225821-473xr8vhgugxxx5j
Tags: 3.0-12
changed configure.in to build scilab's own malloc.o, closes: #255869

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?> 
 
2
<!DOCTYPE MAN SYSTEM "../../manrev.dtd">
 
3
<MAN>
 
4
  <LANGUAGE>fr</LANGUAGE>
 
5
  <TITLE>ode  </TITLE>
 
6
  <TYPE>Scilab Function  </TYPE>
 
7
  <DATE>February 1998  </DATE>
 
8
  <SHORT_DESCRIPTION name="ode"> solveur d&apos;�quations diff�rentielles ordinaires  </SHORT_DESCRIPTION>
 
9
  <CALLING_SEQUENCE>
 
10
    <CALLING_SEQUENCE_ITEM>y=ode(y0,t0,t,f)  </CALLING_SEQUENCE_ITEM>
 
11
    <CALLING_SEQUENCE_ITEM>[y,w,iw]=ode([type],y0,t0,t [,rtol [,atol]],f [,jac] [,w,iw])  </CALLING_SEQUENCE_ITEM>
 
12
    <CALLING_SEQUENCE_ITEM>[y,rd,w,iw]=ode(&quot;root&quot;,y0,t0,t [,rtol [,atol]],f  [,jac],ng,g [,w,iw])  </CALLING_SEQUENCE_ITEM>
 
13
    <CALLING_SEQUENCE_ITEM>y=ode(&quot;discrete&quot;,y0,k0,kvect,f)  </CALLING_SEQUENCE_ITEM>
 
14
  </CALLING_SEQUENCE>
 
15
  <PARAM>
 
16
    <PARAM_INDENT>
 
17
      <PARAM_ITEM>
 
18
        <PARAM_NAME>y0  </PARAM_NAME>
 
19
        <PARAM_DESCRIPTION>
 
20
          <SP>
 
21
            : vecteur ou matrice r�elle (conditions initiales).
 
22
          </SP>
 
23
        </PARAM_DESCRIPTION> 
 
24
      </PARAM_ITEM>
 
25
      <PARAM_ITEM>
 
26
        <PARAM_NAME>t0  </PARAM_NAME>
 
27
        <PARAM_DESCRIPTION>
 
28
          <SP>
 
29
            : r�el (instant initial).
 
30
          </SP>
 
31
        </PARAM_DESCRIPTION> 
 
32
      </PARAM_ITEM>
 
33
      <PARAM_ITEM>
 
34
        <PARAM_NAME>t  </PARAM_NAME>
 
35
        <PARAM_DESCRIPTION>
 
36
          <SP>
 
37
            : vecteur r�el (instants o� la solution est renvoy�e).
 
38
          </SP>
 
39
        </PARAM_DESCRIPTION> 
 
40
      </PARAM_ITEM>
 
41
      <PARAM_ITEM>
 
42
        <PARAM_NAME>f  </PARAM_NAME>
 
43
        <PARAM_DESCRIPTION>
 
44
          <SP>
 
45
            : fonction externe (fonction Scilab ou cha�ne de caract�res ou liste).
 
46
          </SP>
 
47
        </PARAM_DESCRIPTION> 
 
48
      </PARAM_ITEM>
 
49
      <PARAM_ITEM>
 
50
        <PARAM_NAME>type  </PARAM_NAME>
 
51
        <PARAM_DESCRIPTION>
 
52
          <SP>
 
53
            : une des cha�nes de caract�res : <VERB>&quot;adams&quot; &quot;stiff&quot; &quot;rk&quot; &quot;rkf&quot; &quot;fix&quot; &quot;discrete&quot; &quot;roots&quot;</VERB>
 
54
          </SP>
 
55
        </PARAM_DESCRIPTION> 
 
56
      </PARAM_ITEM>
 
57
      <PARAM_ITEM>
 
58
        <PARAM_NAME>rtol,atol  </PARAM_NAME>
 
59
        <PARAM_DESCRIPTION>
 
60
          <SP>
 
61
            : constantes ou vecteurs r�els de m�me taille que <VERB>y</VERB>.
 
62
          </SP>
 
63
        </PARAM_DESCRIPTION> 
 
64
      </PARAM_ITEM>
 
65
      <PARAM_ITEM>
 
66
        <PARAM_NAME>jac  </PARAM_NAME>
 
67
        <PARAM_DESCRIPTION>
 
68
          <SP>
 
69
            : fonction externe (fonction Scilab, cha�ne de caract�res ou liste).
 
70
          </SP>
 
71
        </PARAM_DESCRIPTION> 
 
72
      </PARAM_ITEM>
 
73
      <PARAM_ITEM>
 
74
        <PARAM_NAME>w,iw  </PARAM_NAME>
 
75
        <PARAM_DESCRIPTION>
 
76
          <SP>
 
77
            : vecteurs r�els
 
78
          </SP>
 
79
        </PARAM_DESCRIPTION> 
 
80
      </PARAM_ITEM>
 
81
      <PARAM_ITEM>
 
82
        <PARAM_NAME>ng  </PARAM_NAME>
 
83
        <PARAM_DESCRIPTION>
 
84
          <SP>
 
85
            : entier
 
86
          </SP>
 
87
        </PARAM_DESCRIPTION> 
 
88
      </PARAM_ITEM>
 
89
      <PARAM_ITEM>
 
90
        <PARAM_NAME>g  </PARAM_NAME>
 
91
        <PARAM_DESCRIPTION>
 
92
          <SP>
 
93
            : fonction externe (fonction Scilab, cha�ne de caract�res ou liste).
 
94
          </SP>
 
95
        </PARAM_DESCRIPTION> 
 
96
      </PARAM_ITEM>
 
97
      <PARAM_ITEM>
 
98
        <PARAM_NAME>k0  </PARAM_NAME>
 
99
        <PARAM_DESCRIPTION>
 
100
          <SP>
 
101
            : entier (instant initial). kvect : vecteur d&apos;entiers
 
102
          </SP>
 
103
        </PARAM_DESCRIPTION> 
 
104
      </PARAM_ITEM>
 
105
    </PARAM_INDENT>
 
106
  </PARAM>
 
107
  <DESCRIPTION>
 
108
    <P>
 
109
      <VERB>ode</VERB> est la fonction utilis�e pour approcher la solution d&apos;une �quation diff�rentielle ordinaire (EDO) explicite du premier ordre en temps, d�finie par :
 
110
    </P>
 
111
    <P>
 
112
      dy/dt=f(t,y) , y(t0)=y0.
 
113
    </P>
 
114
    <P>
 
115
      Il s&apos;agit d&apos;une interface vers diverses librairies, en particulier ODEPACK.
 
116
      Le type du probl�me et la m�thode utilis�e d�pendent de la valeur du
 
117
      premier argument optionnel <VERB>type</VERB> qui peut �tre �gal � :
 
118
    </P>
 
119
    
 
120
    <DESCRIPTION_INDENT>
 
121
      <DESCRIPTION_ITEM  label='&lt;aucun&gt; :'> 
 
122
        <SP>
 
123
          le solveur <VERB>lsoda</VERB> du package ODEPACK est utilis� par d�faut. Il choisit automatiquement entre un sch�ma pr�dicteur-correcteur d&apos;Adams et un sch�ma adapt� au syst�mes raides (stiff) de type &quot;Backward Differentiation Formula&quot; (BDF). Initialement le sch�ma adapt� aux syst�me non raides est choisi puis la m�thode adapt�e est ensuite choisie dynamiquement. 
 
124
        </SP>
 
125
      </DESCRIPTION_ITEM>
 
126
 
 
127
      <DESCRIPTION_ITEM  label='&quot;adams&quot; :'> 
 
128
        <SP>
 
129
          Probl�mes non raides. Le solveur <VERB>lsode</VERB> du package ODEPACK est utilis� (sch�ma d&apos;Adams).
 
130
        </SP>
 
131
      </DESCRIPTION_ITEM>
 
132
 
 
133
      <DESCRIPTION_ITEM  label='&quot;stiff&quot; :'> 
 
134
        <SP>
 
135
          Pour les syst�mes raides. Le solveur <VERB>lsode</VERB> du package ODEPACK est utilis� avec le sch�ma BDF.
 
136
        </SP>
 
137
      </DESCRIPTION_ITEM>
 
138
 
 
139
      <DESCRIPTION_ITEM  label='&quot;rk&quot; :'> 
 
140
        <SP>
 
141
          Sch�ma de Runge-Kutta adaptatif d&apos;ordre 4 (RK4).
 
142
        </SP>
 
143
      </DESCRIPTION_ITEM>
 
144
 
 
145
      <DESCRIPTION_ITEM  label='&quot;rkf&quot; :'> 
 
146
        <SP>
 
147
          Formules de Shampine et Watts bas�es sur les paires de Runge-Kutta Fehlberg d&apos;ordre 4 et 5 (RKF45). Bien pour les probl�mes non raides ou moyennement raides, lorsque le calcul du second membre n&apos;est pas trop co�teux. Cette m�thode est � �viter si l&apos;on recherche une tr�s grande pr�cision.
 
148
        </SP>
 
149
      </DESCRIPTION_ITEM>
 
150
 
 
151
      <DESCRIPTION_ITEM  label='&quot;fix&quot;:'> 
 
152
        <SP>
 
153
          Identique � &quot;rkf&quot;, mais l&apos;interface est simplifi�e, i.e. uniquement <VERB>rtol</VERB> et <VERB>atol</VERB>  sont communiqu�s au solveur. 
 
154
        </SP>
 
155
      </DESCRIPTION_ITEM>
 
156
 
 
157
      <DESCRIPTION_ITEM  label='&quot;root&quot;:'> 
 
158
        <SP>
 
159
          Solveur d&apos;EDO avec recherche de racines.  Le solveur <VERB>lsodar</VERB> du package ODEPACK est utilis�. C&apos;est une variante de <VERB>lsoda</VERB> permettant la recherche d&apos;une racine d&apos;une fonction vectorielle donn�e. Voir ode_root pour plus de d�tails.
 
160
        </SP>
 
161
      </DESCRIPTION_ITEM>
 
162
 
 
163
      <DESCRIPTION_ITEM  label='&quot;discrete&quot;:'> 
 
164
        <SP>
 
165
          Simulation en temps discret. Voir ode_discrete pour plus de d�tails.
 
166
        </SP>
 
167
      </DESCRIPTION_ITEM>
 
168
    </DESCRIPTION_INDENT>
 
169
    <P>
 
170
      Ici on ne d�crit l&apos;usage de <VERB>ode</VERB> que pour des EDO explicites.
 
171
    </P>
 
172
    <P>
 
173
      L&apos;appel le plus simple de <VERB>ode</VERB> est du type :
 
174
      <VERB>y=ode(y0,t0,t,f)</VERB>
 
175
      o� <VERB>y0</VERB> est le vecteur des conditions initiales, <VERB>t0</VERB> est le temps initial, et <VERB>t</VERB> est le vecteur des instants o� l&apos;on veut une approximation de la solution. 
 
176
      <VERB>y</VERB> est calcul�e et <VERB>y</VERB>  est la matrice 
 
177
      <VERB>y=[y(t(1)),y(t(2)),...]</VERB>.
 
178
    </P>
 
179
    <P>
 
180
      Le param�tre <VERB>f</VERB> de <VERB>ode</VERB> est par exemple une fonction Scilab, dont
 
181
      la syntaxe est impos�e, ou le nom d&apos;une subroutine Fortran ou C 
 
182
      (cha�ne de caract�res) ou une liste.
 
183
    </P>
 
184
    <P>
 
185
      Si <VERB>f</VERB> est une fonction Scilab, sa syntaxe doit �tre :
 
186
    </P>
 
187
    <VERBATIM><![CDATA[
 
188
      ydot = f(t,y)
 
189
      ]]></VERBATIM>
 
190
    <P>
 
191
      o� <VERB>t</VERB> est un scalaire (le temps) et <VERB>y</VERB> un vecteur (l&apos;�tat).
 
192
      Cette fonction renvoie le second membre de l&apos;�quation diff�rentielle dy/dt=f(t,y).
 
193
    </P>
 
194
    <P>
 
195
      Si <VERB>f</VERB> est une cha�ne de caract�res, elle d�signe le nom d&apos;une subroutine Fortran
 
196
      ou C, i.e. si <VERB>ode(y0,t0,t,&quot;fex&quot;)</VERB> est la
 
197
      commande, alors la subroutine <VERB>fex</VERB> est appel�e. 
 
198
      Cette routine doit avoir la liste d&apos;appel suivante : 
 
199
      <VERB>f(n,t,y,ydot)</VERB>. La routine doit �tre li�e dynamiquement � Scilab avec la fonction
 
200
      <VERB>link</VERB>. Voir les exemples dans les fichiers
 
201
      <VERB>SCIDIR/routines/default/README</VERB> et 
 
202
      <VERB>SCIDIR/routines/default/Ex-ode.f</VERB>.
 
203
    </P>
 
204
    <P>
 
205
      L&apos;argument <VERB>f</VERB> peut aussi �tre une liste :
 
206
      si <VERB>ode(y0,t0,t,lst)</VERB>
 
207
      est la commande, alors <VERB>lst</VERB> doit �tre une liste avec la structure suivante :
 
208
    </P>
 
209
    <VERBATIM><![CDATA[
 
210
      lst=list(f,u1,u2,...un)
 
211
      ]]></VERBATIM>
 
212
    <P>
 
213
      o� <VERB>f</VERB> est une fonction avec la syntaxe :
 
214
    </P>
 
215
    <VERBATIM><![CDATA[
 
216
      ydot = f(t,y,u1,u2,...,un)
 
217
      ]]></VERBATIM>
 
218
    <P>
 
219
      cela permet de passer des param�tres sous forme d&apos;arguments suppl�mentaires de <VERB>f</VERB>.
 
220
    </P>
 
221
    <P>
 
222
      La fonction <VERB>f</VERB> peut renvoyer une matrice <VERB>p x q</VERB> au lieu d&apos;un vecteur. 
 
223
      Dans ce cas, on r�sout le syst�me d&apos;EDO <VERB>n=p+q</VERB> 
 
224
      <VERB>dY/dt=F(t,Y)</VERB> o� <VERB>Y</VERB> est une matrice <VERB>p x q</VERB>.
 
225
      La condition initiale <VERB>Y0</VERB> doit aussi �tre une matrice <VERB>p x q</VERB> matrix et le r�sultat renvoy� par <VERB>ode</VERB> est la matrice
 
226
      <VERB>p x q(T+1)</VERB> �gale � <VERB>[Y(t_0),Y(t_1),...,Y(t_T)]</VERB>.
 
227
    </P>
 
228
    <P>
 
229
      Des param�tres optionnels contr�lent la tol�rance du sch�ma :
 
230
      <VERB>rtol</VERB> et <VERB>atol</VERB> 
 
231
      sont des valeurs seuil sur les erreurs estim�es (relative et absolue) 
 
232
      L&apos;erreur estim�e sur <VERB>y(i)</VERB> est :
 
233
    </P>
 
234
    <VERBATIM><![CDATA[
 
235
      rtol(i)*abs(y(i))+atol(i)
 
236
      ]]></VERBATIM>
 
237
    <P>
 
238
      Si <VERB>rtol</VERB> et/ou <VERB>atol</VERB> sont des constantes <VERB>rtol(i)</VERB> et/ou 
 
239
      <VERB>atol(i)</VERB> prennent ces valeurs. Les valeurs par d�faut de <VERB>rtol</VERB> et <VERB>atol</VERB>
 
240
      sont respectivement <VERB>rtol=1.d-5</VERB> et <VERB>atol=1.d-7</VERB> pour la plupart des solveurs et <VERB>rtol=1.d-3</VERB> et <VERB>atol=1.d-4</VERB> pour <VERB>&quot;rfk&quot;</VERB> et <VERB>&quot;fix&quot;</VERB>.
 
241
    </P>
 
242
    <P>
 
243
      Pour les probl�mes raides, il est recommand� de fournir la jacobienne du second membre
 
244
      sous forme de l&apos;argument optionnel <VERB>jac</VERB>. Le param�tre <VERB>jac</VERB> de <VERB>ode</VERB> est par exemple une fonction Scilab, dont la syntaxe est impos�e, ou le nom d&apos;une subroutine Fortran ou C 
 
245
      (cha�ne de caract�res) ou une liste.
 
246
    </P>
 
247
    <P>
 
248
      Si <VERB>jac</VERB> est une fonction Scilab sa syntaxe doit �tre :
 
249
    </P>
 
250
    <VERBATIM><![CDATA[
 
251
      J=jac(t,y)
 
252
      ]]></VERBATIM>
 
253
    <P>
 
254
      o� <VERB>t</VERB> est un scalaire (le temps) et <VERB>y</VERB> un vecteur (l&apos;�tat).
 
255
      La matrice <VERB>J</VERB> doit renvoyer df/dx i.e. 
 
256
      <VERB>J(k,i) = dfk /dxi</VERB> avec <VERB>fk</VERB> = k-i�me composante de f.
 
257
    </P>
 
258
    <P>
 
259
      Si <VERB>f</VERB> est une cha�ne de caract�res, elle d�signe le nom d&apos;une subroutine Fortran
 
260
      ou C. Cette routine doit avoir la liste d&apos;appel suivante : 
 
261
      <VERB>jac(n,t,y,ml,mu,J,nrpd)</VERB>. Dans la plupart des cas il n&apos;est pas n�cessaire d&apos;utiliser <VERB>ml</VERB>,
 
262
      <VERB>mu</VERB> et <VERB>nrpd</VERB> (voir les exemples dans 
 
263
      <VERB>SCIDIR/routines/default/Ex-ode.f</VERB>).
 
264
    </P>
 
265
    <P>
 
266
      Si <VERB>jac</VERB> est une liste, les m�mes conventions que pour <VERB>f</VERB> s&apos;appliquent.
 
267
    </P>
 
268
    <P>
 
269
      Les arguments optionnels <VERB>w</VERB> et <VERB>iw</VERB> sont 
 
270
      des vecteurs permettant de red�marrer l&apos;int�gration au point o� elle s&apos;�tait arr�t�e � la sortie de ode.
 
271
    </P>
 
272
    <P>
 
273
      Plus d&apos;options peuvent �tre pass�es aux solveurs d&apos;ODEPACK en utilisant la variable
 
274
      <VERB>%ODEOPTIONS</VERB>. Voir le help de odeoptions.
 
275
    </P>
 
276
  </DESCRIPTION>
 
277
  <EXAMPLE><![CDATA[
 
278
    // EDO � une dimension
 
279
    // dy/dt=y^2-y sin(t)+cos(t), y(0)=0
 
280
    deff("[ydot]=f(t,y)","ydot=y^2-y*sin(t)+cos(t)")
 
281
    y0=0;t0=0;t=0:0.1:%pi;
 
282
    y=ode(y0,t0,t,f)
 
283
    plot(t,y)
 
284
    // Simulation de dx/dt = A x(t) + B u(t) avec u(t)=sin(omega*t),
 
285
    // x0=[1;0]
 
286
    // la solution x(t) est d�sir�e en t=0.1, 0.2, 0.5 ,1.
 
287
    // A et u sont pass�es dans une liste 
 
288
    // et B et omega sont des variables globales
 
289
    deff("[xdot]=linear(t,x,A,u)","xdot=A*x+B*u(t)")
 
290
    deff("[ut]=u(t)","ut=sin(omega*t)")
 
291
    A=[1 1;0 2];B=[1;1];omega=5;
 
292
    ode([1;0],0,[0.1,0.2,0.5,1],list(linear,A,u))
 
293
    //
 
294
    // EDO matricielle
 
295
    // Equation diff�rentielle de Ricatti
 
296
    // Xdot=A'*X + X*A - X'*B*X + C , X(0)=Identit�
 
297
    // Solution en t=[1,2] 
 
298
    deff("[Xdot]=ric(t,X)","Xdot=A''*X+X*A-X''*B*X+C")   
 
299
    A=[1,1;0,2]; B=[1,0;0,1]; C=[1,0;0,1];
 
300
    t0=0;t=0:0.1:%pi;
 
301
    X=ode(eye(A),0,t,ric)
 
302
    //
 
303
    // Calcul de exp(A)
 
304
    A=[1,1;0,2];
 
305
    deff("[xdot]=f(t,x)","xdot=A*x");
 
306
    ode(eye(A),0,1,f)
 
307
    ode("adams",eye(A),0,1,f)
 
308
    // EDO raide, avec la jacobienne fournie
 
309
    A=[10,0;0,-1];
 
310
    deff("[xdot]=f(t,x)","xdot=A*x");
 
311
    deff("[J]=Jacobian(t,y)","J=A")
 
312
    ode("stiff",[0;1],0,1,f,Jacobian)
 
313
    ]]></EXAMPLE>
 
314
  <SEE_ALSO>
 
315
    <SEE_ALSO_ITEM> <LINK>ode_discrete</LINK> </SEE_ALSO_ITEM>  
 
316
    <SEE_ALSO_ITEM> <LINK>ode_root</LINK> </SEE_ALSO_ITEM>  
 
317
    <SEE_ALSO_ITEM> <LINK>dassl</LINK> </SEE_ALSO_ITEM> 
 
318
    <SEE_ALSO_ITEM> <LINK>impl</LINK> </SEE_ALSO_ITEM> 
 
319
    <SEE_ALSO_ITEM> <LINK>odedc</LINK> </SEE_ALSO_ITEM> 
 
320
    <SEE_ALSO_ITEM> <LINK>odeoptions</LINK> </SEE_ALSO_ITEM> 
 
321
    <SEE_ALSO_ITEM> <LINK>csim</LINK> </SEE_ALSO_ITEM> 
 
322
    <SEE_ALSO_ITEM> <LINK>ltitr</LINK> </SEE_ALSO_ITEM> 
 
323
    <SEE_ALSO_ITEM> <LINK>rtitr</LINK> </SEE_ALSO_ITEM>
 
324
  </SEE_ALSO>
 
325
 
 
326
  <AUTHORS>
 
327
    <AUTHORS_ITEM label='Alan C. Hindmarsh'>,  mathematics and statistics division, l-316
 
328
      livermore, ca 94550.19</AUTHORS_ITEM>
 
329
  </AUTHORS>
 
330
  <BIBLIO>
 
331
    <SP>Alan C. Hindmarsh,  lsode and lsodi, two new initial value
 
332
    ordinary differential equation solvers,
 
333
    acm-signum newsletter, vol. 15, no. 4 (1980), pp. 10-11.</SP>
 
334
  </BIBLIO>
 
335
 
 
336
  <USED_FUNCTIONS>
 
337
    <SP>Les sous programmes associ�s se trouvent dans le repertoire  routines/integ:
 
338
      lsode.f lsodar.f
 
339
    </SP>
 
340
  </USED_FUNCTIONS>
 
341
</MAN>