1 @c English version: 2013-08-03
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::
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
24 El paquete debe cargarse con la instrucción @code{load("contrib_ode")}
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
33 La forma de los resultados devueltos es diferente de la utilizada
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:
40 una función explícita para la variable dependiente,
43 una función implícita para la variable dependiente,
46 una solución paramétrica en términos de la variable @code{%t} o
49 una transformación en otra EDO de variable @code{%u}.
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
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.
63 En ocasiones es necesario devolver una lista de soluciones,
64 pues algunas EDOs pueden tener múltiples soluciones:
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);
73 (%i1) load("contrib_ode")$
75 (%i2) eqn:x*'diff(y,x)^2-(1+x*y)*'diff(y,x)+y=0;
78 (%o2) x (--) - (x y + 1) -- + y = 0
80 (%i3) contrib_ode(eqn,y,x);
83 (%o3) [y = log(x) + %c, y = %c %e ]
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:
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);
100 (%i1) load("contrib_ode")$
102 (%i2) eqn:'diff(y,x)^2+x*'diff(y,x)-y=0;
105 (%o2) (--) + x -- - y = 0
107 (%i3) contrib_ode(eqn,y,x);
111 (%o3) [y = %c x + %c , y = - --]
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.
123 @c load("contrib_ode")$
124 @c eqn:'diff(y,x)=(x+y)^2;
125 @c contrib_ode(eqn,y,x);
129 (%i1) load("contrib_ode")$
131 (%i2) eqn:'diff(y,x)=(x+y)^2;
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]]
145 En el siguiente ejemplo (Kamke 1.112) se obtiene una solución
149 @c load("contrib_ode")$
151 @c eqn:x*'diff(y,x)-x*sqrt(y^2+x^2)-y;
152 @c contrib_ode(eqn,y,x);
156 (%i1) load("contrib_ode")$
158 (%i2) assume(x>0,y>0);
161 (%i3) eqn:x*'diff(y,x)-x*sqrt(y^2+x^2)-y;
164 (%o3) x -- - x sqrt(y + x ) - y
166 (%i4) contrib_ode(eqn,y,x);
169 (%o4) [x - asinh(-) = %c]
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
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);
188 (%i1) load("contrib_ode")$
190 (%i2) eqn:x^2*'diff(y,x)=a+b*x^n+c*x^2*y^2;
193 (%o2) x -- = c x y + b x + a
195 (%i3) contrib_ode(eqn,y,x);
200 (%o3) [[y = - ----, %u c (b x + --) + ---- c = 0]]
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}.
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.
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);
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) @{---------------------------, ---------------------------@}
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}.
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]);
292 (%i1) load("contrib_ode")$
294 (%i2) eqn:'diff(y,x,2)+(a*x+b)*y;
298 (%o2) --- + (a x + b) y
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)];
306 (%o3) [y = bessel_y(-, --------------) %k2 sqrt(a x + b)
310 + bessel_j(-, --------------) %k1 sqrt(a x + b)]
312 (%i4) ode_check(eqn,ans[1]);
319 @defvr {Variable opcional} @code{method}
321 A la variable @code{method} se le asigna el método aplicado.
325 @defvr {Variable} @code{%c}
327 @code{%c} es la constante de integración para EDOs de primer
332 @defvr {Variable} @code{%k1}
334 @code{%k1} es la primera constante de integración para EDOs de segundo
339 @defvr {Variable} @code{%k2}
341 @code{%k2} es la segunda constante de integración para EDOs de segundo
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
358 Véanse también @code{gauss_b}, @code{dgauss_a} y @code{gauss_b}.
362 @deffn {Función} gauss_b (@var{a}, @var{b}, @var{c}, @var{x})
363 Véase también @code{gauss_a}.
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)}.
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}.
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
385 Véanse también @code{kummer_u}, @code{dkummer_m} y @code{dkummer_u}.
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}.
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}.
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}.
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:
413 Extender el método FACTOR @code{ode1_factor} para que trabaje con
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.
422 Modificar la rutina LAGRANGE @code{ode1_lagrange} para que prefiera
423 raíces reales a las complejas.
426 Añadir más métodos para las ecuaciones de RIccati.
429 Mejorar la identificación de las ecuaciones de Abel de segunda especie.
430 El procedimiento actual no es muy bueno.
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.
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
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.
457 Las otras rutinas a veces devuelven una sola solución cuando
461 Algunas de las soluciones devueltas por @code{ode1_lie} son
462 demasiado complejas e imposibles de interpretar.
465 A veces se producen detenciones imprevistas del procedimiento.
469 @node Referencias para contrib_ode, ,Pruebas realizadas con contrib_ode, contrib_ode
470 @section Referencias para contrib_ode
475 E. Kamke, Differentialgleichungen Losungsmethoden und Losungen, Vol 1,
476 Geest & Portig, Leipzig, 1961
479 G. M. Murphy, Ordinary Differential Equations and Their Solutions,
480 Van Nostrand, New York, 1960
483 D. Zwillinger, Handbook of Differential Equations, 3rd edition,
487 F. Schwarz, Symmetry Analysis of Abel's Equation, Studies in
488 Applied Mathematics, 100:269-294 (1998)
491 F. Schwarz, Algorithmic Solution of Abel's Equation,
492 Computing 61, 39-49 (1998)
495 E. S. Cheb-Terrab, A. D. Roche, Symmetries and First Order
496 ODE Patterns, Computer Physics Communications 113 (1998), p 239.
498 (@url{http://lie.uwaterloo.ca/papers/ode_vii.pdf})
501 (\texttt{http://lie.uwaterloo.ca/\-papers/\-ode\_vii.pdf})
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).
509 (@url{http://arxiv.org/abs/math-ph/0007023},@*
510 @url{http://lie.uwaterloo.ca/papers/ode_iv.pdf})
513 @c (\texttt{http://\-arxiv.org/\-abs/\-math-ph/\-0007023},
514 @c \texttt{http://\-lie.\-uwaterloo.ca/\-papers/\-ode\_iv.pdf})
518 G. W. Bluman, S. C. Anco, Symmetry and Integration Methods for
519 Differential Equations, Springer, (2002)
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})