Ecuaciones Diferenciales
> restart;
Instrucciones.
dsolve
La instrucci�n que resuelve ecuaciones diferenciales es ( dsolve ), cuya sintaxis es:
Peculiaridades:
Las opciones son varios tipos (ver hoja de ayuda [ dsolve ]). Las que mas usaremos son de la forma:
odeplot
Para graficar soluciones num�ricas usamos la instrucci�n ( odeplot ) que pertence al paquete plots.
La sintaxis es:
donde F es un nombre asignado a la soluci�n num�rica,
son valores num�ricos del rango de la variable independiente, las opciones son las de plot.
paquete DEtools
Es un paquete de graficaci�n de soluciones num�ricas de ecuaciones diferenciales, campos de pendientes (isoclinas), espacios de fase, etc. Se recomienda consultar la hoja de ayuda ( DEtools )
>
Solucion simb�lica.
Maple V puede resolver analiticamente una gran cantidad de ecuaciones diferenciales
> ecd1:=diff(x(t),t$2)+u*diff(x(t),t)+k*x(t)=1;
Solucion general:
> sol1:=dsolve(ecd1);
Para comprobar la soluci�n, sustituimos y evaluamos
> eval(subs(x(t)=rhs(sol1),ecd1));
La instrucci�n map , simplifica en ambas miembros
> map(simplify,%);
Condiciones iniciales
> ci_1:=x(0)=1, D(x)(0)=0;
> sol1_ptc:=dsolve({ecd1,ci_1}, x(t));
Nota: es posible introducir condiciones iniciales simb�licas (intentarlo...)
Ejercicio
Graficar la soluci�n obtenida, para los valores
Solucion aproximada
La opci�n type=series da la soluci�n en series de potencias
> ecd1; ci_1;
> sol1_apr:=dsolve({ecd1,ci_1}, x(t), type=series);
Ejercicio
Comparar la soluci�n anal�tica y la aproximada, para los valores
, en el rango
. TIP: es necesario convertir la serie en polinomio para poder graficar la serie truncada
Solucion numerica.
La opci�n type=numeric lleva a la soluci�n num�rica, sin embargo esta opci�n no acepta par�metros simb�licos (como
). Por lo tanto, asignaremos valores num�ricos a estos par�metros
> ecd2:=subs(u=2, k=1, ecd1);
Las condiciones iniciales deben ser puramente num�ricas
> ci_2:=x(0)=0,D(x)(0)=1;
> S:=dsolve({ecd2,ci_2}, x(t), type=numeric);
S es una funci�n num�rica
> S(0); S(0.5); S(0.7);
La gr�fica de la soluci�n num�rica se obtiene con la instrucci�n odeplot , del paquete plots .
> plots[odeplot](S,[t,x(t)],-1..1);
Ejercicio
Trazar las gr�ficas de la soluci�n exacta y la aproximada en series junto con la gr�fica de la soluci�n num�rica. Asignar un color o estilo diferente a cada curva.
Una forma muy �til para examinar una solucion num�rica es pedir el resultado en forma de un arreglo de n valores iniciales. Esto se logra con la opcion display=array([t1, t2......., tn]) , donde t1......tn son n valores de t.
> SS:=dsolve({ecd2,ci_2}, x(t), type=numeric,value=array([0,0.1,0.3,0.5]));
Los valores del arreglo los podemos introducir como una lista que depende de
> IN:=(t1,tn,n)->[seq(t1+i*(tn-t1)/(n-1),i=0..n-1)];
Por ejemplo, 6 valores de t en el rango
> IN(2,4,6);
> SS:=dsolve({ecd2,ci_2}, x(t), type=numeric,value=array(IN(2,4,6)));
Ejercicio
Usar los resultados num�ricos de la derivada de x(t) para trazar la gr�fica de
vs t
> restart;
Sistemas.
Maple V tambien puede manejar sistemas de ecuaciones diferenciales.
Soluciones analiticas
> e1:=diff(x(t),t)=t+y(t); e2:=diff(y(t),t)=t-x(t);
Soluci�n general
> dsolve({e1,e2},{x(t),y(t)});
Condiciones iniciales
> ci:=x(0)=1, y(0)=0;
> dsolve({e1,e2,ci}, {x(t),y(t)});
En particular, toda ecuaci�n diferencial de segundo orden es equivalente a dos ecuaciones diferenciales de primer orden acopladas. Por ejemplo, la ecuacion que estudiamos anteriormente:
> ecd:=diff(x(t),t$2)+2*diff(x(t),t)+x(t)=1;
es equivalente a
> ec1:=diff(v(t),t)+2*v(t)+x(t)=1; ec2:=diff(x(t),t)=v(t);
> SS:=dsolve({ec1,ec2},{x(t),v(t)});
Condiciones iniciales
> ci:=x(0)=5, v(0)=0;
> SS:=dsolve({ec1,ec2,ci},{x(t),v(t)});
Ejercicios
Soluciones num�ricas
> restart;
Veamos la soluci�n num�rica de la ecuaci�n de movimiento de un p�ndulo simple:
*
para valores num�ricos de
. Esta ecuaci�n diferencial tiene soluci�n anal�tica, en t�rminos de integrales el�pticas. Sin embargo, la estudiaremos numericamente como un sistema de dos ecuaciones acopladas de primer orden. Consideremos
,
mts
Las ecuaciones son:
>
ec1:=diff(v(t),t)+(9.8/5)*sin(theta(t));
ec2:=v(t)=diff(theta(t),t);
Condiciones iniciales
> ci:=theta(0)=Pi/6,v(0)=0;
Solucion num�rica
> S:=dsolve({ec1,ec2, ci}, {theta(t),v(t)}, type=numeric);
Valores particulares
> S(1); S(1.5); S(8.9);
Despliegue de 10 valores en el rango
> IN:=(t1,tn,n)->[seq( evalf(t1+i*(tn-t1)/(n-1)),i=0..n-1)];
> IN(0,4*Pi,10);
> SS:=dsolve({ec1,ec2, ci}, {theta(t),v(t)}, type=numeric, value=array(IN(0,4*Pi,10)));
Gr�ficas con odeplot
> plots[odeplot](S,[t,theta(t)], 0..4*Pi, numpoints=300);
Comparar las gr�ficas de odeplot para S y SS
>
p1:=plots[odeplot](S,[t,theta(t)],0..4*Pi,color=black):
p2:=plots[odeplot](SS,[t,theta(t)],0..4*Pi, color=red): plots[display]({p1,p2});
Para entender bien que sucede, veamos los puntos graficados. En la grafica de SS, solo se grafican los puntos escogidos en el arreglo.
>
p1:=plots[odeplot](S,[t,theta(t)],0..4*Pi,color=black, style=point,symbol=cross):
p2:=plots[odeplot](SS,[t,theta(t)],0..4*Pi, color=red, style=point, symbol=box): plots[display]({p1,p2});
Para graficas de sistemas, odeplot permite trazar varias graficas interesantes
Gr�fica de
> plots[odeplot](S, [t,v(t)], 0..4*Pi);
Gr�fica de
(espacio de fase)
> plots[odeplot](S, [theta(t),v(t)], 0..4*Pi);
Gr�fica 3dim
> plots[odeplot](S, [t,theta(t),v(t)], 0..4*Pi, axes=boxed,labels=[t,"theta(t)","v(t)"]);
>