@c English version 2011-03-14
@menu
* Introducción a las ecuaciones diferenciales::
* Funciones y variables para ecuaciones diferenciales::  
@end menu

@node Introducción a las ecuaciones diferenciales, Funciones y variables para ecuaciones diferenciales, Ecuaciones Diferenciales, Ecuaciones Diferenciales
@section Introducción a las ecuaciones diferenciales

Esta sección describe las funciones disponibles en Maxima para
el cálculo de las soluciones analíticas de ciertos
tipos de ecuaciones de primer y segundo orden. Para las soluciones
numéricas de sistemas de ecuaciones diferenciales, véase el
paquete adicional @code{dynamics}. Para las representaciones
gráficas en el espacio de fases, véase el paquete @code{plotdf}.


@node Funciones y variables para ecuaciones diferenciales,  , Introducción a las ecuaciones diferenciales, Ecuaciones Diferenciales
@section Funciones y variables para ecuaciones diferenciales.


@deffn {Función} bc2 (@var{soluc}, @var{xval1}, @var{yval1}, @var{xval2}, @var{yval2})
Resuelve el problema del valor en la frontera para ecuaciones diferenciales de segundo orden. 
Aquí, @var{soluc} es una solución general de la ecuación, como las que calcula @code{ode2}, @var{xval1} especifica el valor de la variable independiente en el primer punto mediante una expresión de la forma @code{@var{x} = @var{x0}}, mientras que @var{yval1} hace lo propio para la variable dependiente.  Las expresiones @var{xval2} y @var{yval2} dan los valores de estas mismas variables en un segundo punto, utilizando el mismo formato.

@end deffn

@deffn {Función} desolve (@var{ecu}, @var{x})
@deffnx {Función} desolve ([@var{eqn_1}, ..., @var{eqn_n}], [@var{x_1}, ..., @var{x_n}])

La función @code{desolve} resuelve sistemas de ecuaciones diferenciales ordinarias lineales utilizando la transformada de Laplace.  Aquí las @var{eqi} (@code{i}=1,..,n) son ecuaciones diferenciales con variables dependientes @var{x_1}, ..., @var{x_n}. La dependencia funcional de @var{x_1}, ..., @var{x_n} respecto de una variable independiente, por ejemplo @var{x}, debe indicarse explícitamente, tanto en las variables como en las derivadas. Por ejemplo, 


@example
eqn_1: 'diff(f,x,2) = sin(x) + 'diff(g,x);
eqn_2: 'diff(f,x) + x^2 - f = 2*'diff(g,x,2);
@end example

no es el formato apropiado. El método correcto es

@example
eqn_1: 'diff(f(x),x,2) = sin(x) + 'diff(g(x),x);
eqn_2: 'diff(f(x),x) + x^2 - f(x) = 2*'diff(g(x),x,2);
@end example

La llamada a la función @code{desolve} sería entonces
@example
desolve([eqn_1, eqn_2], [f(x),g(x)]);
@end example

Si las condiciones iniciales en @code{x=0} son conocidas, deben ser suministradas antes de llamar a @code{desolve} haciendo uso previo de la función @code{atvalue},

@c ===beg===
@c 'diff(f(x),x)='diff(g(x),x)+sin(x);
@c 'diff(g(x),x,2)='diff(f(x),x)-cos(x);
@c atvalue('diff(g(x),x),x=0,a);
@c atvalue(f(x),x=0,1);
@c desolve([%o1,%o2],[f(x),g(x)]);
@c [%o1,%o2],%o5,diff;
@c ===end===
@example
(%i1) 'diff(f(x),x)='diff(g(x),x)+sin(x);
                 d           d
(%o1)            -- (f(x)) = -- (g(x)) + sin(x)
                 dx          dx
(%i2) 'diff(g(x),x,2)='diff(f(x),x)-cos(x);
                  2
                 d            d
(%o2)            --- (g(x)) = -- (f(x)) - cos(x)
                   2          dx
                 dx
(%i3) atvalue('diff(g(x),x),x=0,a);
(%o3)                           a
(%i4) atvalue(f(x),x=0,1);
(%o4)                           1
(%i5) desolve([%o1,%o2],[f(x),g(x)]);
                  x
(%o5) [f(x) = a %e  - a + 1, g(x) = 

                                                x
                                   cos(x) + a %e  - a + g(0) - 1]
(%i6) [%o1,%o2],%o5,diff;
             x       x      x                x
(%o6)   [a %e  = a %e , a %e  - cos(x) = a %e  - cos(x)]

@end example

Si @code{desolve} no encuentra una solución, entonces devuelve @code{false}.

@end deffn

@deffn {Función} ic1 (@var{soluc}, @var{xval}, @var{yval})

Resuelve el problema del valor inicial en ecuaciones diferenciales de primer orden. 
Aquí, @var{soluc} es una solución general de la ecuación, como las que calcula @code{ode2}, @var{xval} es una ecuación de la forma @code{@var{x} = @var{x0}} para la variable independiente y @var{yval} es una ecuación de la forma @code{@var{y} = @var{y0}} para la variable dependiente. Véase @code{ode2} para un ejemplo sobre su utilización.

@end deffn

@deffn {Función} ic2 (@var{soluc}, @var{xval}, @var{yval}, @var{dval})

Resuelve el problema del valor inicial en ecuaciones diferenciales de segundo orden.
Aquí, @var{soluc} es una solución general de la ecuación, como las que calcula @code{ode2}, @var{xval} es una ecuación de la forma @code{@var{x} = @var{x0}} para la variable independiente y @var{yval} es una ecuación de la forma @code{@var{y} = @var{y0}} para la variable dependiente, siendo @var{dval} una expresión de la forma @code{diff(@var{y},@var{x}) = @var{dy0}} que especifica la primera derivada de la variable dependiente respecto de la independiente en el punto @var{xval}.

Véase @code{ode2} para un ejemplo de su uso.
@end deffn


@deffn {Función} ode2 (@var{ecu}, @var{dvar}, @var{ivar})
La función @code{ode2} resuelve ecuaciones diferenciales ordinarias de primer y segundo orden. Admite tres argumentos: 
una ecuación diferencial ordinaria @var{ecu}, la variable dependiente @var{dvar} y la variable independiente @var{ivar}.  Si ha tenido éxito en la resolución de la ecuación, devuelve una solución, explícita o implícita, para la variable dependiente. El símbolo @code{%c} se utiliza para representar la constante en el caso de ecuaciones de primer orden y los símbolos @code{%k1} y @code{%k2} son las constantes de las ecuaciones de segundo orden. Si por cualquier razón @code{ode2} no puede calcular la solución, devolverá @code{false}, acompañado quizás de un mensaje de error. Los métodos utilizados para las ecuaciones de primer orden, en el orden en que se hace la tentativa de resolución son: lineal, separable, exacto (pudiendo solicitar en este caso un factor de integración), homogéneo, ecuación de Bernoulli y un método homogéneo generalizado. Para las ecuaciones de segundo orden: coeficiente constante, exacto, homogéneo lineal con coeficientes no constantes  que pueden ser transformados en coeficientes constantes, ecuación equidimensional o de Euler, método de variación de parámetros y ecuaciones exentas de las variables dependientes o independientes de manera que se puedan reducir a dos ecuaciones lineales de primer a ser resueltas secuencialmente. Durante el proceso de resolución de ecuaciones diferenciales ordinarias, ciertas variables se utilizan con el único propósito de suministrar información al usuario: @code{method} almacena el método utilizado para encontrar la solución (como por ejemplo @code{linear}), @code{intfactor} para el factor de integración que se haya podido utilizar, @code{odeindex} para el índice del método de Bernoulli o el homogéneo generalizado y @code{yp} para la solución particular del método de variación de parámetros.

A fin de resolver problemas con valores iniciales y problemas con valores en la frontera, la función @code{ic1} está disponible para ecuaciones de primer orden y las funciones @code{ic2} y @code{bc2} para problemas de valores iniciales y de frontera, respectivamente, en el caso de las ecuaciones de segundo orden.

Ejemplo:

@example
(%i1) x^2*'diff(y,x) + 3*y*x = sin(x)/x;
                      2 dy           sin(x)
(%o1)                x  -- + 3 x y = ------
                        dx             x
(%i2) ode2(%,y,x);
                             %c - cos(x)
(%o2)                    y = -----------
                                  3
                                 x
(%i3) ic1(%o2,x=%pi,y=0);
                              cos(x) + 1
(%o3)                   y = - ----------
                                   3
                                  x
(%i4) 'diff(y,x,2) + y*'diff(y,x)^3 = 0;
                         2
                        d y      dy 3
(%o4)                   --- + y (--)  = 0
                          2      dx
                        dx
(%i5) ode2(%,y,x);
                      3
                     y  + 6 %k1 y
(%o5)                ------------ = x + %k2
                          6
(%i6) ratsimp(ic2(%o5,x=0,y=0,'diff(y,x)=2));
                             3
                          2 y  - 3 y
(%o6)                   - ---------- = x
                              6
(%i7) bc2(%o5,x=0,y=1,x=1,y=3);
                         3
                        y  - 10 y       3
(%o7)                   --------- = x - -
                            6           2

@end example

@end deffn

