Update docs to match implementation of $build_and_dump_html_index
[maxima.git] / doc / info / es / contrib_ode.texi
blob7977d7a53cfe0fa7dc82bd4e65bdb5929959a31b
1 @c English version: 2013-08-03
2 @menu
3 * Introducción a contrib_ode::
4 * Funciones y variables para contrib_ode::
5 * Posibles mejoras a contrib_ode::
6 * Pruebas realizadas con contrib_ode::
7 * Referencias para contrib_ode::
8 @end menu
10 @node Introducción a contrib_ode, Funciones y variables para contrib_ode, contrib_ode, contrib_ode
12 @section Introducción a contrib_ode 
14 La función @code{ode2} de Maxima resuelve ecuaciones diferenciales
15 ordinarias (EDO) simples de primer y segundo orden. La función 
16 @code{contrib_ode} extiende las posibilidades de @code{ode2}
17 con métodos adicionales para ODEs lineales y no lineales de
18 primer orden y homogéneas lineales de segundo orden.
19 El código se encuentra en estado de desarrollo y la
20 syntaxis puede cambiar en futuras versiones. Una vez el código
21 se haya estabilizado podrá pasar a integrarse dentro de
22 Maxima.
24 El paquete debe cargarse con la instrucción @code{load("contrib_ode")}
25 antes de utilizarlo.
27 La sintaxis de @code{contrib_ode} es similar a la de @code{ode2}.
28 Necesita tres argumentos: una EDO (sólo se necesita el miembro
29 izquierdo si el derecho es igual cero), la variable dependiente y
30 la independiente. Si encuentra la solución, devolverá una
31 lista de resultados.
33 La forma de los resultados devueltos es diferente de la utilizada
34 por @code{ode2}.
35 Puesto que las ecuaciones no lineales pueden tener múltiples
36 soluciones, @code{contrib_ode} devuelve una lista de soluciones.
37 Las soluciones pueden tener diferentes formatos:
38 @itemize @bullet
39 @item
40 una función explícita para la variable dependiente,
42 @item
43 una función implícita para la variable dependiente,
45 @item
46 una solución paramétrica en términos de la variable @code{%t} o
48 @item
49 una transformación en otra EDO de variable @code{%u}.
51 @end itemize
53 @code{%c} hace referencia a la constante de integración en 
54 las ecuaciones de primer orden.
55 @code{%k1} y @code{%k2} son las constantes para las ecuaciones
56 de segundo orden.
57 Si por cualquier razón contrib_ode no pudiese encontrar una
58 solución, devolverá @code{false}, quizás después de 
59 mostrar un mensaje de error.
61 Ejemplos:
63 En ocasiones es necesario devolver una lista de soluciones,
64 pues algunas EDOs pueden tener múltiples soluciones:
66 @c ===beg===
67 @c load("contrib_ode")$
68 @c eqn:x*'diff(y,x)^2-(1+x*y)*'diff(y,x)+y=0;
69 @c contrib_ode(eqn,y,x);
70 @c method;
71 @c ===end===
72 @example
73 (%i1) load("contrib_ode")$
75 (%i2) eqn:x*'diff(y,x)^2-(1+x*y)*'diff(y,x)+y=0;
77                     dy 2             dy
78 (%o2)            x (--)  - (x y + 1) -- + y = 0
79                     dx               dx
80 (%i3) contrib_ode(eqn,y,x);
82                                              x
83 (%o3)             [y = log(x) + %c, y = %c %e ]
84 (%i4) method;
86 (%o4)                        factor
87 @end example
89 Las EDOs no lineales pueden tener soluciones singulares sin
90 constantes de integración, como en la segunda solución
91 del ejemplo siguiente:
93 @c ===beg===
94 @c load("contrib_ode")$
95 @c eqn:'diff(y,x)^2+x*'diff(y,x)-y=0;
96 @c contrib_ode(eqn,y,x);
97 @c method;
98 @c ===end===
99 @example
100 (%i1) load("contrib_ode")$
102 (%i2) eqn:'diff(y,x)^2+x*'diff(y,x)-y=0;
104                        dy 2     dy
105 (%o2)                 (--)  + x -- - y = 0
106                        dx       dx
107 (%i3) contrib_ode(eqn,y,x);
109                                            2
110                                  2        x
111 (%o3)              [y = %c x + %c , y = - --]
112                                           4
113 (%i4) method;
115 (%o4)                       clairault
116 @end example
118 La siguiente ODE tiene dos soluciones paramétricas en términos
119 de la variable @code{%t}. En este caso, las soluciones paramétricas
120 se pueden manipular para dar soluciones explícitas.
122 @c ===beg===
123 @c load("contrib_ode")$
124 @c eqn:'diff(y,x)=(x+y)^2;
125 @c contrib_ode(eqn,y,x);
126 @c method;
127 @c ===end===
128 @example
129 (%i1) load("contrib_ode")$
131 (%i2) eqn:'diff(y,x)=(x+y)^2;
133                           dy          2
134 (%o2)                     -- = (y + x)
135                           dx
136 (%i3) contrib_ode(eqn,y,x);
138 (%o3) [[x = %c - atan(sqrt(%t)), y = - x - sqrt(%t)], 
139                      [x = atan(sqrt(%t)) + %c, y = sqrt(%t) - x]]
140 (%i4) method;
142 (%o4)                       lagrange
143 @end example
145 En el siguiente ejemplo (Kamke 1.112) se obtiene una solución 
146 implícita.
148 @c ===beg===
149 @c load("contrib_ode")$
150 @c assume(x>0,y>0);
151 @c eqn:x*'diff(y,x)-x*sqrt(y^2+x^2)-y;
152 @c contrib_ode(eqn,y,x);
153 @c method;
154 @c ===end===
155 @example
156 (%i1) load("contrib_ode")$
158 (%i2) assume(x>0,y>0);
160 (%o2)                    [x > 0, y > 0]
161 (%i3) eqn:x*'diff(y,x)-x*sqrt(y^2+x^2)-y;
163                      dy           2    2
164 (%o3)              x -- - x sqrt(y  + x ) - y
165                      dx
166 (%i4) contrib_ode(eqn,y,x);
168                                   y
169 (%o4)                  [x - asinh(-) = %c]
170                                   x
171 (%i5) method;
173 (%o5)                          lie
174 @end example
176 La siguiente ecuación de Riccati se transforma en
177 una EDO lineal de segundo orden de variable @code{%u}. Maxima
178 es incapaz de resolver la nueva EDO, por lo que la devuelve si
179 resolver:
181 @c ===beg===
182 @c load("contrib_ode")$
183 @c eqn:x^2*'diff(y,x)=a+b*x^n+c*x^2*y^2;
184 @c contrib_ode(eqn,y,x);
185 @c method;
186 @c ===end===
187 @example
188 (%i1) load("contrib_ode")$
190 (%i2) eqn:x^2*'diff(y,x)=a+b*x^n+c*x^2*y^2;
192                     2 dy      2  2      n
193 (%o2)              x  -- = c x  y  + b x  + a
194                       dx
195 (%i3) contrib_ode(eqn,y,x);
197                d%u
198                ---                            2
199                dx        2     n - 2   a     d %u
200 (%o3)  [[y = - ----, %u c  (b x      + --) + ---- c = 0]]
201                %u c                     2      2
202                                        x     dx
203 (%i4) method;
205 (%o4)                        riccati
206 @end example
208 Para EDOs de primer orden, @code{contrib_ode} llama a @code{ode2}.
209 Entonces trata de aplicar los siguientes métodos: factorización,
210 Clairault, Lagrange, Riccati, Abel y Lie. El método de Lie no
211 se intenta aplicar a las ecuaciones de Abel si el propio
212 método de Abel no obtiene solución, pero sí
213 se utiliza si el método de Riccati devuelve una EDO de
214 segundo orden sin resolver.
216 Para EDOs de segundo orden, @code{contrib_ode} llama a @code{ode2}
217 y luego a @code{odelin}.
219 Se mostrarán mensajes de depurado si se ejecuta la sentencia
220 @code{put('contrib_ode,true,'verbose)}.
224 @node Funciones y variables para contrib_ode, Posibles mejoras a contrib_ode, Introducción a contrib_ode, contrib_ode
225 @section Funciones y variables para contrib_ode
227 @deffn {Función} contrib_ode (@var{eqn}, @var{y}, @var{x})
229 Devuelve la lista de soluciones de la ecuación diferencia
230 ordinaria (EDO) @var{eqn} de variable independiente @var{x}
231 y variable dependiente @var{y}.
233 @end deffn
236 @deffn {Función} odelin (@var{eqn}, @var{y}, @var{x})
238 La función @code{odelin} resulve EDOs homogéneas lineales
239 de primer y segundo orden con variable independiente @var{x}
240 y variable dependiente @var{y}. Devuelve un conjunto fundamental
241 de soluciones de la EDO.
243 Para EDOs de segundo orden, @code{odelin} utiliza un
244 método desarrollado por Bronstein y Lafaille, que busca las soluciones
245 en términos de funciones especiales dadas.
247 @c ===beg===
248 @c load("contrib_ode")$
249 @c odelin(x*(x+1)*'diff(y,x,2)+(x+5)*'diff(y,x,1)+(-4)*y,y,x);
250 @c ===end===
251 @example
252 (%i1) load("contrib_ode");
254 (%i2) odelin(x*(x+1)*'diff(y,x,2)+(x+5)*'diff(y,x,1)+(-4)*y,y,x);
255 ...trying factor method
256 ...solving 7 equations in 4 variables
257 ...trying the Bessel solver
258 ...solving 1 equations in 2 variables
259 ...trying the F01 solver
260 ...solving 1 equations in 3 variables
261 ...trying the spherodial wave solver
262 ...solving 1 equations in 4 variables
263 ...trying the square root Bessel solver
264 ...solving 1 equations in 2 variables
265 ...trying the 2F1 solver
266 ...solving 9 equations in 5 variables
267        gauss_a(- 6, - 2, - 3, - x)  gauss_b(- 6, - 2, - 3, - x)
268 (%o2) @{---------------------------, ---------------------------@}
269                     4                            4
270                    x                            x
272 @end example
274 @end deffn
277 @deffn {Función} ode_check (@var{eqn}, @var{soln})
279 Devuelve el valor de la ecuación diferencia
280 ordinaria (EDO) @var{eqn} después de sustituir
281 una posible solución @var{soln}. El valor es
282 cero si @var{soln} es una solución de @var{eqn}.
284 @c ===beg===
285 @c load("contrib_ode")$
286 @c eqn:'diff(y,x,2)+(a*x+b)*y;
287 @c ans:[y = bessel_y(1/3,2*(a*x+b)^(3/2)/(3*a))*%k2*sqrt(a*x+b)
288 @c          +bessel_j(1/3,2*(a*x+b)^(3/2)/(3*a))*%k1*sqrt(a*x+b)];
289 @c ode_check(eqn,ans[1]);
290 @c ===end===
291 @example
292 (%i1) load("contrib_ode")$
294 (%i2) eqn:'diff(y,x,2)+(a*x+b)*y;
296                          2
297                         d y
298 (%o2)                   --- + (a x + b) y
299                           2
300                         dx
301 (%i3) ans:[y = bessel_y(1/3,2*(a*x+b)^(3/2)/(3*a))*%k2*sqrt(a*x+b)
302          +bessel_j(1/3,2*(a*x+b)^(3/2)/(3*a))*%k1*sqrt(a*x+b)];
304                                   3/2
305                     1  2 (a x + b)
306 (%o3) [y = bessel_y(-, --------------) %k2 sqrt(a x + b)
307                     3       3 a
308                                           3/2
309                             1  2 (a x + b)
310                  + bessel_j(-, --------------) %k1 sqrt(a x + b)]
311                             3       3 a
312 (%i4) ode_check(eqn,ans[1]);
314 (%o4)                           0
315 @end example
317 @end deffn
319 @defvr {Variable opcional} @code{method}
321 A la variable @code{method} se le asigna el método aplicado. 
323 @end defvr
325 @defvr {Variable} @code{%c}
327 @code{%c} es la constante de integración para EDOs de primer
328 orden.
330 @end defvr
332 @defvr {Variable} @code{%k1}
334 @code{%k1} es la primera constante de integración para EDOs de segundo
335 orden.
337 @end defvr
339 @defvr {Variable} @code{%k2}
341 @code{%k2} es la segunda constante de integración para EDOs de segundo
342 orden.
344 @end defvr
346 @deffn {Función} gauss_a (@var{a}, @var{b}, @var{c}, @var{x})
348 @code{gauss_a(a,b,c,x)} y @code{gauss_b(a,b,c,x)} son funciones
349 geométricas 2F1 . Representan dos soluciones independientes
350 cualesquiera de la ecuación diferencial hipergeométrica
351 @code{x(1-x) diff(y,x,2) + [c-(a+b+1)x] diff(y,x) - aby = 0} (A&S 15.5.1).
353 El único uso que se hace de estas funciones es en las soluciones de
354 EDOs que devuelven @code{odelin} y @code{contrib_ode}. La definición
355 y utilización de estas funciones puede cambiar en futuras distribuciones
356 de Maxima.
358 Véanse también @code{gauss_b}, @code{dgauss_a} y @code{gauss_b}.
360 @end deffn
362 @deffn {Función} gauss_b (@var{a}, @var{b}, @var{c}, @var{x})
363 Véase  también @code{gauss_a}.
364 @end deffn
366 @deffn {Función} dgauss_a (@var{a}, @var{b}, @var{c}, @var{x})
367 The derivative with respect to x of @code{gauss_a(a,b,c,x)}.
368 @end deffn
370 @deffn {Función} dgauss_b (@var{a}, @var{b}, @var{c}, @var{x})
371 Derivada de @code{gauss_b(@var{a},@var{b},@var{c},@var{x})} respecto de @var{x}.
372 @end deffn
375 @deffn {Función} kummer_m (@var{a}, @var{b}, @var{x})
377 Función M de Kummer, tal como la definen Abramowitz y Stegun,
378 @i{Handbook of Mathematical Functions}, Sección 13.1.2.
380 El único uso que se hace de esta función es en las soluciones de
381 EDOs que devuelven @code{odelin} y @code{contrib_ode}. La definición
382 y utilización de estas funciones puede cambiar en futuras distribuciones
383 de Maxima.
385 Véanse también @code{kummer_u}, @code{dkummer_m} y @code{dkummer_u}.
386 @end deffn
388 @deffn {Función} kummer_u (@var{a}, @var{b}, @var{x})
390 Función U de Kummer, tal como la definen Abramowitz y Stegun,
391 @i{Handbook of Mathematical Functions}, Sección 13.1.3.
393 Véase  también @code{kummer_m}.
394 @end deffn
396 @deffn {Función} dkummer_m (@var{a}, @var{b}, @var{x})
397 Derivada de @code{kummer_m(@var{a},@var{b},@var{x})} respecto de @var{x}.
398 @end deffn
400 @deffn {Función} dkummer_u (@var{a}, @var{b}, @var{x})
401 Derivada de @code{kummer_u(@var{a},@var{b},@var{x})} respecto de @var{x}.
402 @end deffn
405 @node Posibles mejoras a contrib_ode, Pruebas realizadas con contrib_ode, Funciones y variables para contrib_ode, contrib_ode
406 @section Posibles mejoras a contrib_ode
408 Este paquete aún se encuentra en fase de desarrollo. Aspectos pendientes:
410 @itemize @bullet
412 @item
413 Extender el método FACTOR @code{ode1_factor} para que trabaje con
414 raíces múltiples.
416 @item
417 Extender el método FACTOR @code{ode1_factor} para que intente
418 resolver factores de orden superior. En este momento sólo
419 intenta resolver factores lineales.
421 @item
422 Modificar la rutina LAGRANGE @code{ode1_lagrange} para que prefiera
423 raíces reales a las complejas.
425 @item
426 Añadir más métodos para las ecuaciones de RIccati.
428 @item
429 Mejorar la identificación de las ecuaciones de Abel de segunda especie.
430 El procedimiento actual no es muy bueno.
432 @item
433 Trabajar la rutina del grupo simétrico de Lie @code{ode1_lie}.
434 Existen algunos problemas: algunas partes no están implementadas,
435 algunos ejemplos no terminan de ejecutarse, otros producen errors,
436 otros devuelven respuestas muy complejas. 
438 @item
439 Hacer más pruebas.
441 @end itemize
443 @node Pruebas realizadas con contrib_ode, Referencias para contrib_ode, Posibles mejoras a contrib_ode, contrib_ode
444 @section Pruebas realizadas con contrib_ode
446 Los procedimientos fueron probados con cerca de mil ecuaciones tomadas
447 de Murphy, Kamke, Zwillinger y otros. Éstas se encuentran en el directorio
448 de pruebas.
450 @itemize @bullet
451 @item
452 La rutina de Clairault @code{ode1_clairault} encuentra todas las
453 soluciones conocidas, incluídas las singulares,
454 de las ecuaciones de Clairault en Murphy y Kamke.
456 @item
457 Las otras rutinas a veces devuelven una sola solución cuando
458 existen más.
460 @item
461 Algunas de las soluciones devueltas por @code{ode1_lie} son
462 demasiado complejas e imposibles de interpretar.
464 @item
465 A veces se producen detenciones imprevistas del procedimiento.
467 @end itemize
469 @node Referencias para contrib_ode, ,Pruebas realizadas con contrib_ode, contrib_ode
470 @section Referencias para contrib_ode
473 @enumerate
474 @item
475 E. Kamke, Differentialgleichungen Losungsmethoden und Losungen, Vol 1,
476     Geest & Portig, Leipzig, 1961
478 @item
479 G. M. Murphy, Ordinary Differential Equations and Their Solutions,
480     Van Nostrand, New York, 1960
482 @item
483 D. Zwillinger, Handbook of Differential Equations, 3rd edition,
484     Academic Press, 1998
486 @item
487 F. Schwarz, Symmetry Analysis of Abel's Equation, Studies in
488     Applied Mathematics, 100:269-294 (1998)
490 @item
491 F. Schwarz, Algorithmic Solution of Abel's Equation,
492     Computing 61, 39-49 (1998)
494 @item
495 E. S. Cheb-Terrab, A. D. Roche, Symmetries and First Order
496     ODE Patterns, Computer Physics Communications 113 (1998), p 239.
497 @ifnottex
498     (@url{http://lie.uwaterloo.ca/papers/ode_vii.pdf})
499 @end ifnottex
500 @tex
501     (\texttt{http://lie.uwaterloo.ca/\-papers/\-ode\_vii.pdf})
502 @end tex
504 @item
505 E. S. Cheb-Terrab, T. Kolokolnikov,  First Order ODEs,
506     Symmetries and Linear Transformations, European Journal of
507     Applied Mathematics, Vol. 14, No. 2, pp. 231-246 (2003).
508 @c @ifnottex
509     (@url{http://arxiv.org/abs/math-ph/0007023},@*
510     @url{http://lie.uwaterloo.ca/papers/ode_iv.pdf})
511 @c @end ifnottex
512 @c @tex
513 @c     (\texttt{http://\-arxiv.org/\-abs/\-math-ph/\-0007023},
514 @c     \texttt{http://\-lie.\-uwaterloo.ca/\-papers/\-ode\_iv.pdf})
515 @c @end tex
517 @item
518 G. W. Bluman, S. C. Anco, Symmetry and Integration Methods for
519     Differential Equations, Springer, (2002)
521 @item 
522 M Bronstein, S Lafaille,
523 Solutions of linear ordinary differential equations in terms
524 of special functions,
525 Proceedings of ISSAC 2002, Lille, ACM Press, 23-28. 
526 (@url{http://www-sop.inria.fr/cafe/Manuel.Bronstein/publications/issac2002.pdf})
527 @end enumerate