# ECUACIONES DIFERENCIALES

## Ecuaciones de primer orden

Una EDO de primer orden es de la forma:

f(x, y, y') = 0

donde y=y(x) e y'=y'(x) = dy(x)/dx

Una de las funciones de MAXIMA para resolver este tipo de ecuaciones es:

ode2(edo, y, x)

/* Vamos a resolver la EDO (2x+3)y' + (x-1)y = 0 */

/* Definimos la edo */
edo1 : (2*x+3)*'diff(y,x) + (x-1)*y = 0;

/* Resolvemos */
ode2(edo1,y,x);

/* %c es la constante de integración o parámetro de integraciíon */
/* Vemos que en este caso la solución se expresa de forma explícita (la y está despejada) */
/* Vemos ahora un ejemplo donde la solución es implícita (la y está escondida) */
/* Resolvemos la edo
xy' + (x-1)cos(y) = 0 */
edo2 : x*'diff(y,x)+(x-1)*cos(y) =0;

/* Usando ode2 */
ode2(edo2,y,x);

/* MAXIMA no ha podido despejar (a corner) la y */

Podemos resolver ecuaciones EXACTAS

edo_exacta : x^2*(3*y^2+1)+y*(2*x^3+y)*'diff(y,x)=0;

ode2(edo_exacta,y,x);

Lineales

edo_lineal : 'diff(y,x)=x+y;

ode2(edo_lineal,y,x);

Homogéneas

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

ode2(edo_homogenea,y,x);

## EDO de segundo orden

Una EDO de segundo orden será de la forma:

f(x, y, y', y'') = 0

También podemos usar ode2

/* Homogénea */
edo_2orden_homogenea : 'diff(y,x,2)-3*'diff(y,x)+2*y=0;

ode2(edo_2orden_homogenea,y,x);

/* O no homogénea */

edo_2orden_no_homogenea : 'diff(y,x,2)-3*'diff(y,x)+2*y=2*x;

ode2(edo_2orden_no_homogenea,y,x);

## Problemas de valor inicial

Un PVI de primer orden es de la forma

f(x,y,y')=0
y(x0) = y0;

Usamos la función 

ic1

/* Definimos la EDO */
edo1 : (2*x+3)*'diff(y,x) + (x-1)*y = 0;

/* Usamos ode2 para resolver la edo */
sol:ode2(edo1,y,x);

/*Usamos la función ic1 incluyendo condiciones iniciales */
ic1(sol,x=0,y=2);

Para un PVI de valor inicial de 2º orden se usan el comando ic2, en este caso el problema sería de la forma

f(x, y, y', y'')=0
y(x0)  =  y0;
y'(x0) =  y1;

/* Definimos la EDO */
edo_orden2 : 'diff(y,x,2)-'diff(y,x) = exp(x);

/* Resolvemos edo */
solucion : ode2(edo_orden2,y,x);

/* Condiciones iniciales y(0) = 0, y'(0)=1 */
cond1: y = 0;
cond2: 'diff(y,x)=1;
ic2(solucion,x=0,cond1,cond2);

Problema de Contorno:

f(x, y, y', y'')=0
y(a) = y0;
y(b) = y1;


Usaremos bc2

/* Definimos la EDO */
edo_orden2 : 'diff(y,x,2)-'diff(y,x) = exp(x);

/* Resolvemos edo */
solucion : ode2(edo_orden2,y,x);

/* Condiciones iniciales y(0) = 0, y(1)=0 */
bc2(solucion,x=0,y=0,x=1,y=0);