SciELO - Scientific Electronic Library Online

 
vol.21 número2Aprender Matemática, Haciendo Matemática: la evaluación en el aulaGalileo y la astronomía: una feliz intersección índice de autoresíndice de materiabúsqueda de artículos
Home Pagelista alfabética de revistas  

Educación matemática

versión impresa ISSN 1665-5826

Educ. mat vol.21 no.2 México ago. 2009

 

Ensayo

 

Ecuaciones diferenciales ordinarias con Maxima

 

Maxima and ordinary differential equations

 

Gerardo Mario Ortigoza Capetillo*

 

* Facultad de Ingeniería, Campus Veracruz, Universidad Veracruzana, México. gortigoza@uv.mx

 

Fecha de recepción: 6 de mayo de 2008.

 

Resumen

En este trabajo se presentan soluciones de ecuaciones diferenciales ordinarias (EDOS) mediante el uso del paquete libre Maxima. Los comandos básicos de solución de este paquete se explican mediante una serie de ejemplos representativos de un curso tradicional, donde quedan expuestas algunas de las fortalezas y debilidades de Maxima como herramienta para la enseñanza de ecuaciones diferenciales ordinarias. Además, este trabajo brinda al lector una guía práctica para iniciar el estudio de las ecuaciones diferenciales mediante el uso de Maxima y, de esta manera, beneficiarse con el uso de esta herramienta computacional libre.

Palabras clave: enseñanza, herramientas computacionales libres, ecuaciones diferenciales ordinarias, Maxima.

 

Abstract

In this work we present solutions of ordinary differencial equations by using the open source package Maxima. The basic commands of solutions of this package are explained by a set of selected examples taken from trraditional courses in ordinary differential equations. Here, some of the strengths and the weakenesses of Maxima as a teaching tool in an ode's course exposed. We hope that this work can be used by the reader as a practical introduction to initiate the study of odes by using Maxima, and in this way to obtener a benefit of the use of this open source computational package.

Keywords: open source packages, teaching, ordinary differential equations, Maxima.

 

INTRODUCCIÓN

Día con día se ha venido incrementando el interés por aplicar el uso de herramientas computacionales (paquetes gráficos o paquetes de álgebra computacional; Rielly, 2005; Beaudin, 2002; Galán, 2005; Adie, 1999) a las labores de docencia e investigación. La manera de enseñar está cambiando, como lo demuestra la aparición de algunas obras y materiales didácticos para la física, el álgebra lineal, el cálculo y las ecuaciones diferenciales con el apoyo de los paquetes siguientes: Matlab, Maple y Mathematica (Abell, 2004; Wang, 2006).

Según las posibilidades y restricciones propias de cada institución educativa, los paquetes de cómputo simbólico pueden utilizarse de diferentes maneras, por ejemplo, como herramienta de demostración por parte del instructor con sesiones extraclase de laboratorios de cómputo o como parte integral de las sesiones diarias de clase. Klein (1993) investigó el uso de paquetes de cómputo simbólico como herramienta de demostración por parte del instructor; lo cual, aunque no incrementó las habilidades analíticas de los alumnos para resolver EDOS, sí produjo una mejora en la actitud de los alumnos respecto al uso de las computadoras en matemáticas. En lo que respecta a los laboratorios de cómputo, la investigación de Rasmussen (1996) mostró que los estudiantes consideraron que los laboratorios de cómputo no estaban relacionados con las ideas principales del curso y no pensaron que el empeño puesto en ellos ayudaría a mejorar su entendimiento de las ideas y métodos principales del curso, lo cual está en contra de los objetivos del instructor. Un efecto positivo de la integración de la tecnología en el curso que promueve un mejor entendimiento de representaciones gráficas puede encontrarse en el estudio de Habre (2002), en el que los estudiantes utilizaron módulos computacionales diseñados para objetivos específicos con la intención de introducir conceptos específicos del curso.

En Ortigoza (2007) se muestran algunos de los beneficios del uso de Maple y Mathematica para la enseñanza de las ecuaciones diferenciales ordinarias. Como se menciona en Ortigoza (2008), una limitante para el uso de estos paquetes es su alto costo. En ese mismo artículo se propone Maxima como una opción de software libre para el cómputo simbólico. Desde hace algunos años, se ha tenido interés por conocer las limitaciones y capacidades de los diferentes sistemas de cómputo para resolver ecuaciones diferenciales ordinarias. En Postel (1996) se muestra una comparación de los paquetes Maple, Mathematica, Macsyma y Mupad para resolver EDOS, mientras que Cheb (2001) muestra una comparación de Maple y Mathematica. En este trabajo nos proponemos investigar las fortalezas y debilidades de Maxima como herramienta para la enseñanza de ecuaciones diferenciales ordinarias. Para ello, abordaremos el mismo conjunto de problemas que fueron resueltos en Ortigoza (2007) con Maple y Mathematica.

De esta manera, esperamos brindar al lector una idea de las capacidades y limitaciones de Maxima para resolver EDOS, así como una introducción práctica a los comandos básicos de Maxima para el estudio de ecuaciones diferenciales ordinarias.

El trabajo está organizado de la siguiente manera: en la sección "¿Qué es Maxima?", se presentan algunos aspectos de Maxima; en la sección "Comandos básicos para resolver ecuaciones diferenciales en Maxima", se ofrece la sintaxis de los comandos básicos para resolver EDOS; la sección "Ejemplos de solución de EDOS " muestra, mediante una serie de ejemplos, el uso de estos comandos para resolver EDOS y, finalmente, la sección "Conclusiones" presenta las conclusiones de este trabajo.

 

¿QUÉ ES MAXIMA?

Maxima es un sistema de cómputo algebraico implementado en Lisp. Se deriva del sistema Macsyma, desarrollado en el Instituto Tecnológico de Massachusetts (MIT) entre 1968 y 1982 como parte del proyecto MAC. En 1982, el MIT entregó una copia del código fuente de Macsyma al Departamento de Energía; esta versión actualmente se conoce como DOE Macsyma. El profesor William F. Schelter, de la universidad de Texas, realizó las actualizaciones de una copia de DOE Macsyma desde 1982 hasta su muerte en 2001. En 1998, Schelter obtuvo permiso del Departamento de Energía para liberar el código fuente de DOE Macsyma bajo licencia pública GNU y, en 2001, inició el proyecto Maxima en SourceForge para mantener y desarrollar DOE Macsyma, actualmente conocido como Maxima (Neyde, 2003).

 

COMANDOS BÁSICOS PARA RESOLVER ECUACIONES DIFERENCIALES EN MAXIMA

En esta sección mostraremos el uso de algunos comandos básicos para resolver ecuaciones diferenciales ordinarias en Maxima.

 

EL COMANDO DESOLVE EN MAXIMA

Los comandos principales para la solución de EDOS son ode2 y desolve:

ode2(eqn,dvar,ivar)

desolve(eqn,x)

dsolve([eqn_1,...eqn_n],[x_1,...,x_n])

Parámetros:

dvar – variable dependiente.

ivar – variable independiente.

eqn o eqn_1,...,eqn_n – ecuación diferencial ordinaria o lista de EDOS.

x_1,...,x_n – variables dependientes.

Para definir derivadas podemos usar:

'diff(y,x),'diff(y,x,2) o

'diff(y(x),x),'diff(y(x), x,2)

donde x es la variable independiente y y es la variable dependiente.

Algunos otros comandos, como ic2, ic1 y bc2, permiten resolver problemas de condiciones iniciales o de frontera. El comando desolve resuelve ecuaciones lineales y sistemas de ecuaciones lineales mediante el uso de la transformada de Laplace. Por otra parte, las técnicas o procedimientos (en el orden de ejecución) que usa ode2 para resolver ecuaciones de primer orden de acuerdo con su tipo son: lineales, variables separables, exactas (con factor de integración), homogéneas, Bernoulli. Para las de segundo orden: coeficientes constantes, exactas, lineal homogéneas con coeficientes no constantes que pueden transformarse en coeficientes constantes, Euler, variación de parámetros y aquéllas donde no aparece la variable dependiente o la variable independiente y que pueden reducirse a ecuaciones de primer orden.

Podemos trabajar en Maxima en modo terminal o con las interfaces gráficas xmaxima y wxmaxima, estas últimas permiten que las expresiones algebraicas luzcan como tales. La figura 1 muestra estos entornos de trabajo:

Para obtener la ventana de ayuda, activamos el menú de ayudas en la ventana principal de wxmaxima y vamos a la opción ayuda en Maxima. Aquí podemos consultar la sintaxis de desolve o de ode2, una serie de ejemplos, detalles de los métodos de solución y algunas otras funciones con las que cuenta Maxima para resolver ecuaciones diferenciales. Esta ventana de ayuda se muestra en la figura 2. Los ejemplos de la siguiente sección serán de utilidad para aclarar el uso de ode2 y desolve.

EJEMPLOS DE SOLUCIÓN DE EDOS

Los siguientes ejemplos muestran el uso de los comandos ode2 y desolve, así como de algunas otras funciones útiles para la solución de EDOS.

1. La ecuación logística

El siguiente problema de valor inicial (PVI) es usado como un modelo de crecimiento de población:

donde a y b son los coeficientes vitales de la población y p_0 es la población inicial; este PVI puede resolverse analíticamente mediante el método de variables separables. Vamos a iniciar resolviendo este problema; para ello, definimos la ecuación diferencial:

depends(p,t);

eq1:'diff(p,t)-a*p+b*p^2=0;

y la resolvemos utilizando

podemos simplificar usando

logcontract(%);

sol:solve(%,p);

la solución así obtenida depende de los parámetros a y b y de la constante de integración %c. Supongamos que deseamos graficar la solución para coeficientes vitales fijos y diferentes condiciones iniciales.

Resolvemos para las diferentes condiciones iniciales p0 = 5, 6, 7,

sol1:ic1(sol,t=0,p=5);

sol2:ic1(sol,t=0,p=6);

sol3:ic1(sol,t=0,p=7);

para obtener:

Definimos los valores de a y b, así como las soluciones:

a: 0.03;b:0.0001;

y1: (5*a*%e^(a*t))/(5*b*%e^(a*t)-5*b+a);

y2: (6*a*%e^(a*t))/(6*b*%e^(a*t)-6*b+a);

y3: (7*a*%e^(a*t))/(7*b*%e^(a*t)-7*b+a);

y ahora procedemos a graficar las soluciones:

plot2d([y1,y2,y3],[t,0,200]);

como resultado del comando anterior obtenemos la figura 3. Nótese que hemos elegido valores fijos para a y b, mientras que p_0 toma los valores 5, 6 o 7 y los valores para t están definidos entre 0 y 200.

2. Consideremos la ecuación

y = 2xy' + ln(y')

la cual es un ejemplo de una ecuación no lineal del tipo ecuación de Lagrange.

Para resolver con Maxima usamos:

eqn:y=2*x*'diff(y,x)+log('diff(y,x));

load('contrib_ode)$

contrib_ode(eqn,y,x);

y obtenemos:

La solución obtenida está dada en forma paramétrica. Podemos notar que ode2 y desolve no resuelven esta ecuación; sin embargo, hemos podido resolverla utilizando el paquete contrib_ode. Este comando extiende las posibilidades de ode2 con métodos adicionales para EDOS lineales y no lineales de primer orden y homogéneas lineales de segundo orden; el código se encuentra en estado de desarrollo. Al usar el comando verb.method., Maxima muestra el método empleado para resolver la ecuación diferencial.

3. Consideremos el siguiente PVI

el cual es un ejemplo de ecuación lineal no homogénea de segundo orden con coeficientes constantes, que puede resolverse usando el método de coeficientes indeterminados. Para resolver usamos:

eqn3:'diff(y,t,2)+16*y=8*sin(4*t);

para definir la ecuación diferencial y resolver utilizamos:

sol3 :ode2(eqn3, y, t);

y obtenemos

y = %k1 sin(4t) - tcos(4t) + %k2cos(4t)

ahora podemos incluir las condiciones iniciales

ic2(sol3,t=0,y=1,'diff(y,t)=0);

y obtener la solución

podemos definir una función a partir de la solución y graficar:

y(t): = y = sin(4 * t) /4 - t * cos(4 * t) + cos(4 * t); plot2d(y(t),[t, 0, 10])

La figura 4 muestra la solución de esta ecuación diferencial.

4. Consideremos la ecuación diferencial

la cual puede resolverse utilizando el método de variación de parámetros. Podemos notar que, en este caso, el término no homogéneo (fuente) se ha definido de manera general. Ambas funciones ode2 y desolve resuelven ecuaciones de primero y segundo orden, por lo que no podemos aplicarlas directamente. Así, buscando resolver la ecuación, definimos variables auxiliares para escribir la ecuación como un sistema de primer orden.

eqn1:'diff(y1(t),t)=y2(t);

eqn2:'diff(y2(t),t)=y3(t);

eqn1:'diff(y3(t),t)=g(t)+y3(t)+y2(t)-y1(t);

desolve([eqn1,eqn2,eqn3],[y1(t),y2(t),y3(t)]);

y se obtiene como respuesta:

lo que consideramos como un fallo de Maxima para resolver esta ecuación. Sin embargo, si consideramos el caso homogéneo g(t) = 0, obtenemos la solución

5. Consideremos la ecuación de Cauchy-Euler

la cual es un ejemplo de una ecuación diferencial lineal con coeficientes variables. A pesar de que Maxima puede resolver ecuaciones de Cauchy-Euler de orden dos, no puede resolver esta ecuación de cuarto orden. Al transformar esta ecuación en un sistema de primer orden y usar desolve, obtenemos el mensaje:

'algsys' cannot solve - system too complicated.

'desolve' can't handle this case. — an error.

To debug this try debugmode(true);

lo cual nos indica que Maxima ha fallado. Al buscar resolver esta ecuación, proponemos soluciones de la forma y = xm, de modo que los comandos siguientes

y:x^m;

eq:x^4*diff(y,x,4)+6*x^3*diff(y,x,3)+9*x^2*diff(y,x,2)+3*x*diff(y,x)+y=0;

expand(eq/x^m);

factor(%)

producen

xm

(m - 3)(m - 2) (m - 1) mxm + 6(m - 2) (m - 1)mxm + 9(m - 1)mxm + 3mxm + xm = 0

m4 + 2m2 + 1 = 0

(m2 + 1)2 = 0

lo que nos indica que las soluciones son

cos(log(x), sin(log(x)), log(x) cos(log(x)), log(x) sin(log(x))

6. Consideremos el PVI

la parte no homogénea de la ecuación involucra funciones impulsos (deltas de Dirac) que actúan como fuentes. Este tipo de problemas se resuelve utilizando la transformada de Laplace:

eq6:'diff(y(t),t,2)-4*diff(y(t),t)+4*y(t)-3*delta(t-1)+delta(t-2)=0

atvalue(y(t),t=0,1);

atvalue('diff(y(t),t),t=0,1);

desolve(eq6,y(t));

y obtenemos

el primer término de la expresión anterior puede encontrarse con

ilt((s-3)/(s-2)^2,s,t);

e2t – te2t

pero Maxima no puede calcular ilt(3*exp(-s)/(s-2)^2,s,t) ni ilt(exp(-2*s)/(s-2)^2,s,t), donde al parecer no tiene incorporado el uso del segundo teorema de traslación

L(f (t - 1)H(t - a) = e-atF(s)

para calcular transformadas. Por tanto, Maxima ha dado una solución parcial al PVI.

7. La ecuación

se utiliza para modelar un sistema masa-resorte, donde la constante del resorte decae con el tiempo (resorte envejecido), al tratar de resolver con

desolve(m*'diff(x(t),t,2)k*exp(-a*t)*x(t)=0,x(t));

obtenemos

mientras que, al usar ode2 o contrib_ode. obtenemos false, lo cual nos indica que no fue posible hallar una solución. La solución obtenida por Maple y Mathematica en Ortigoza (2007) se expresa mediante las funciones de Bessel.

8. Consideremos el siguiente sistema lineal

con condiciones iniciales

x(0) ;= 0, y(0) = 1

Para resolver, definimos las ecuaciones

eq8a:'diff(x(t),t)=3*x(t)-18*y(t);

eq8b:'diff(y(t),t)=2*x(t)+9*y(t);

las condiciones iniciales

atvalue(x(t),t=0,0);atvalue(y(t),t=0,1);

y resolvemos

desolve([eq8a,eq8b],[x(t),y(t)]);

para obtener

La figura 5 muestra la trayectoria r(t) = (x(t), y(t)) de la solución obtenida con el comando plot2d([parametric,x,y,[t,0,4],[nticks,200]]) mientras que las gráficas de las variaciones de x y y con respecto a t se muestran en la figura 6. Éstas han sido obtenidas con el comando plot2d([x,y],[t,0,4]).

En la figura 5 observamos que la curva solución parte del punto (0, 1) y se aleja de este punto, girando en sentido contrario de las manecillas del reloj. Lostérminos oscilatorios de sus componentes hacenque la curva solución gire, mientras que el factor e6t hace que su distancia al origen crezca, produciendo el alejamiento.

El sistema lineal 6 podría describir un fenómeno físico, como por ejemplo el movimiento de una partícula. Así, en este caso, podemos observar la relación que existe entre la trayectoria de la partícula (girando y alejándose del origen) y la contraparte matemática de las expresiones analíticas de su solución (sinusoidales multiplicadas por exponenciales).

9. Consideremos la ecuación de Airy

la cual tiene un punto ordinario en t = 0 y puede resolverse usando el método de series de potencias. Esta ecuación modela un sistema masa-resorte, donde la constante del resorte crece de manera proporcional con el tiempo. Éste es un ejemplo de una ecuación reducible a la ecuación de Bessel, algunas de sus soluciones se llaman funciones de Airy y sirven para modelar la difracción de la luz.

El comando ode2 fracasa al tratar de resolver esta ecuación, mientras que con desolve tenemos

eq:'diff(y(t),t,2)-t*y(t)=0;desolve(eq,y(t));

y obtenemos:

Maxima cuenta con las funciones especiales de Airy; sin embargo, no las asocia con las soluciones de esta ecuación diferencial. A diferencia de Maple y Mathematica, Maxima no cuenta con una función que permita obtener las soluciones de una EDO en series de potencias. La función oDE de DOE-Macsyma cuenta con la opción series para resolver, utilizando series de potencias, mientras que, en el libro de Zwillinger (1997), se muestra que mediante el uso del comando series

load(series)$

depends(y,x)$

eq:'diff(y,x,2)+x*y=0;

niceindices(series(eq,y,x))

en Macsyma es posible resolver la ecuación diferencial mediante series de potencias. La opción series, así como el comando series no se encuentran disponibles en Maxima; sin embargo, podemos usar expansión en series de Taylor para hallar la solución en serie de potencias:

atvalue(y(x),x=0,1);atvalue('diff(y(x),x),x=0,1);

odeseries:taylor('diff(y(x),x,2)-x*y(x),x,0,3)

igualamos a cero y resolvemos

solve([at('diff(y(x),x,2),x=0)=0,(at('diff(y(x),x,3),x=0)-1)=0,(at('diff(y(x),x,4),x=0)

-2)/2=0,-((3*(at('diff(y(x),x,2),x=0))-at('diff(y(x),x,5),x=0)))/6=0],

[at('diff(y(x),x,2),x=0),at('diff(y(x),x,3),x=0),at('diff(y(x),x,4),x=0),at('diff(y(x),x,5),x=0)]);

para obtener

lo que nos indica que la solución está dada por

10. Consideremos la ecuación

en este ejemplo mostraremos un estudio cualitativo de la solución mediante el uso del campo de direcciones.

Para mostrar el campo de direcciones de la ecuación diferencial usamos:

load("plotdf")$

plotdf(exp(-x)-2*y,[trajectory_at,2,-0.1])$

Aquí utilizamos el paquete plotdf, el cual permite la visualización del campo de direcciones.

La figura 7 muestra el resultado de este comando. Con el apoyo de las gráficas podemos estudiar el comportamiento asintótico de las soluciones.

11. Consideremos el siguiente sistema no lineal

el cual modela un sistema depredador-presa. Visualizaremos su campo de direcciones.

load(plotdf);

plotdf([x*(1-x-y),y*(0.75-0.5*x-y)],

[xcenter,.75],[xradius,0.75],

[ycenter,0.75],[yradius,.75]);

y obtenemos así el campo mostrado en la figura 8.

Apoyados en la gráfica, podemos hacer algunas observaciones: algunas flechas tienden a acumularse en el punto (0.5, 0.5), hay flechas que parten del origen alejándose de él, flechas que se mueven sobre el eje y de arriba hacia abajo chocan en (0, 0.75) con flechas que van de abajo hacia arriba, mientras que las flechas que se mueven sobre el eje x de izquierda a derecha chocan en (1, 0) con las provenientes de derecha a izquierda. Podemos analizar de manera analítica este ejemplo. Para ello procedemos a encontrar los puntos críticos de este sistema:

sist:[x*(1-x-y)=0,y*(0.75-0.5*x-y)=0];

solve(sist,[x,y])

para obtener

Si deseamos clasificar estos puntos críticos debemos calcular la matriz jacobiana del sistema, evaluarla en estos puntos y calcular sus valores propios. Así definimos

derivada:matrix([diff(eq1,x),diff(eq1,y)],[diff(eq2,x),diff(eq2,y)]);

eigenvalues(ev(derivada,x=0,y=0))

eigenvalues(ev(derivada,x=1,y=0))+\\

eigenvalues(ev(derivada,x=0,y=0.75))+\\

eigenvalues(ev(derivada,x=0.5,y=0.5))+\\

De los resultados obtenidos, podemos concluir que (0, 0) es un nodo inestable, (0, 0.75) y (1, 0) son puntos silla y (0.5, 0.5), un nodo asintóticamente estable. Aquí el cómputo simbólico ha hecho posible reducir los cálculos algebraicos y hemos podido corroborar las observaciones hechas a partir de las gráficas con los cálculos analíticos.

12. Consideremos el PVI

y' = sin(y2), y(0) = 1

si intentamos resolver este problema, no obtenemos solución alguna.

Sin embargo, esta ecuación no lineal puede resolverse numéricamente, utilizando un método de Runge-Kutta del paquete dynamics

load("dynamics")$

sol:rk(sin(y^2),y,1,[x,0,5,0.1])$

plot2d([discrete, sol])

observemos que hemos definido el rango de la variable independiente de 0 a 5 y mediante el comando plot2d podemos graficar la solución obtenida. La figura 9 muestra esta solución.

Cuando resolvemos una ecuación diferencial de manera numérica, debemos estar alertas y tener en cuenta que la exactitud de nuestra aproximación puede estar afectada por diversas fuentes de errores locales, globales y la estabilidad de la ecuación.

 

CONCLUSIONES

En este trabajo se han explorado las fortalezas y debilidades del paquete libre Maxima como herramienta para la enseñanza de ecuaciones diferenciales ordinarias. Para obtener una comparación con los paquetes Maple y Mathematica, hemos utilizado el mismo conjunto de problemas que fueron resueltos en Ortigoza (2007). Entre las deficiencias de Maxima (comparado con Maple y Mathematica (Ortigoza, 2007)), observamos que tuvo problemas al tratar de resolver ecuaciones de orden alto, no pudo resolver ecuaciones reducibles a la ecuación de Bessel (ecuación de Airy y ecuación del resorte envejecido), no cuenta con la opción para resolver EDOS, utilizando soluciones en series de potencias, y también presentó algunos problemas para calcular transformadas de Laplace inversa.

En lo que respecta a las funciones para visualizar las soluciones y los campos de direcciones, así como la solución numérica, estas funcionan igual de bien que sus correspondientes en Maple y Mathematica. Cabe mencionar que, mediante el uso de contrib_ode, Maxima fue capaz de resolver la ecuación de Lagrange, la cual no pudo resolver Mathematica (Ortigoza, 2007). Podemos concluir que, a pesar de las deficiencias antes mencionadas, Maxima es una buena opción de sistema de cómputo algebraico de código libre para el apoyo de la enseñanza de las ecuaciones diferenciales ordinarias en las licenciaturas de física y matemáticas, así como en las ingenierías.

Esperamos que este trabajo sea útil para que los usuarios tengan una idea de las capacidades y limitaciones de Maxima y para que los desarrolladores puedan mejorar futuras versiones de este paquete.

Este trabajo es una invitación a los profesores e investigadores a incursionar en Maxima (sea versión Linux o Windows), adoptar este paquete, incluirlo en sus actividades de docencia-investigación y promover su uso entre la comunidad científica mexicana.

En este trabajo se usó la versión Maxima 5.11.0.

 

REFERENCIAS BIBLIOGRÁFICAS

Abell, M. L. y J. P. Braselton (2004), Differential Equations with Mathematica, Elsevier Science & Technology Books.         [ Links ]

Adie, G. (1999), "Differential Equations in Practical physics teaching", en Proceedings of ICTMT4.         [ Links ]

Beaudin, M. (2002), Teaching mathematics to engineering students with hand-held technology, 2nd International Conference on the Teaching of Mathematics.         [ Links ]

Cheb-Terrab, E. S. (2001), Comparison of Performances in solving ODES using Maple 7 and Mathematica 4.1, disponible en www.cs.waterloo.ca/~ecterrab/odetools/comparison.html.         [ Links ]

Combes, K. R., B. R. Hunt, R. L. Lipsman, J. E. Osborn y G. J. Stuck (1997), Differential Equations with Maple, 2a. ed., John Wiley and Sons.         [ Links ]

----------, (1998), Differential Equations with Mathematica, 2a. ed., John Wiley and Sons.         [ Links ]

Clarkson, Michael (2002), Doe-Maxima Reference Manual, disponible en http://www.math.psu.edu/glasner/Max_doc/macref.pdf.         [ Links ]

Ferzola, A. P. (1996), Differential equations and the computer: Using Maple as a resource for mathematical information, University of Scranton, PA.         [ Links ]

Galán, J. L., M. A. Galán, A. Gálvez y A. J. Jiménez (2005), Computer algebra systems: A basic tool for teaching mathematics in engineering, 3rd International Conference on Multimedia and Information and Communication Technologies in Education.         [ Links ]

Habre, S. (2002), "Exploring students strategies to solve ordinary differential equations in a reformed setting", Journal of Mathematical Behavior, vol. 18, pp. 455-472.         [ Links ]

Klein, T. J. (1993), "A comparative study on the effectiveness of differential equations instruction with and without a computer algebra system", en Dissertation Abstracts International, vol. 54, núm. 11, (University Microfilms núm. AAC94-12432).         [ Links ]

Maxima, disponible en http://maxima.sourceforge.net.         [ Links ]

Maxima Manual, disponible en:http://maxima.sourceforge.net.         [ Links ]

Neyde Souza, P., R. J. Fateman, J. Moses y C. Yapp (2003), The Maxima Book.         [ Links ]

Nurmiaainen, R. (1999), Mathematica based package for studying ordinary differential equations and for analyzing the learning process, International Mathematica Symposium.         [ Links ]

Ortigoza, G. (2007), "Resolviendo ecuaciones diferenciales ordinarias con Maple y Mathematica", Revista Mexicana de Física, vol. 53, pp. 155-167.         [ Links ]

----------, (2008), "Software libre bajo Linux: una alternativa para las matemáticas de México", sometido a la revista Educación Matemática.         [ Links ]

Postel, F. y P. Zimmermann (1996), A review of the ODE solvers of Maple, Mathematica, Macsyma and Mupad, 5th Rhine Workshop on Computer Algebra.         [ Links ]

Rasmussen, C. L. (1996), Qualitative problem solving strategies of first order differential equations: the case of Amy, disponible en http://archives.math.utk.edu/CTM/FIFTH/Rasmussen/paper.pdf.         [ Links ]

Rielly, C. D. (2005), The application of computer algebra software in the teaching of engineering mathematics, The Higher Education Academy Engineering Subject Center.         [ Links ]

Wang, F. (2006), Physics with Maple: The computer algebra resource for mathematical methods in physics, John Wiley and Sons.         [ Links ]

Zwillinger, D. (1997), Handbook of differential equations, Academic Press.         [ Links ]