CAv_1819_Practica5

103 days ago by sevillad1819

Práctica 5 de Cálculo Avanzado

Límite de entrega de esta práctica: ver tarea en Moodle o calendario de la asignatura. Hasta una semana de retraso: cuenta hasta el 50% de la nota. Más de una semana de retraso: no cuenta para la nota.

Instrucciones:

  1. Haz una copia de la hoja pública y renómbrala: si tu correo es usuario@alumnos.unex.es añade al final del título _usuario, por ejemplo CAv_1314_Practica7_sevillad.
    • Para cambiar el nombre pulsa en el título de la hoja (arriba del todo, entre el logo de Sage y el menú "File...")
  2. Comparte la hoja de trabajo con el usuario sevillad1819 mediante el botón Compartir de arriba a la derecha.
  3. Trabaja la práctica: los ejercicios opcionales son solo para subir nota.
  4. Cuando hayas terminado, haz una copia en un fichero PDF y ponlo en el campus virtual. Esa será la versión que se evaluará. La hoja no se considera entregada si no se ha compartido (punto 2).
    • Para generar el PDF lo más sencillo es usar Imprimir arriba e imprimir la nueva página a fichero.
    • Una alternativa es hacer capturas de pantalla (JPG, PNG...) y convertirlas a un único fichero PDF.

 

Sage viene equipado con multitud de herramientas para trabajar con ecuaciones diferenciales. Por ejemplo, la función plot_slope_field(f, xrange, yrange) dibuja las pendientes de la EDO de orden uno $y'=f(t,y)$. Para ello tenemos que poner dos variables.

var('t,y') campopendientes = plot_slope_field(exp(t)-y,(t,-3,3),(y,-3,3)) campopendientes.show(figsize=5) 
       

Sage también resuelve EDOs. A continuación tienes ejemplos. Verás que definimos $t$ como variable e $y$ como función de $t$, y así Sage entiende que se puede derivar $y$. Esto es distinto de lo que hemos hecho en el gráfico anterior; cuando quieras dibujar juntas campos de pendientes y soluciones, tendrás que tener cuidado con esto.

Para introducir la ecuación, una manera es pasar todo a un miembro, es decir, se considera que la expresión que ponemos se iguala a cero. A continuación resolvemos $y'+y=1$, obteniendo la solución general (fíjate en el parámetro que sale).

# orden uno var('t') y = function('y')(t) desolve(diff(y,t)+y-1, y) 
       
(_C + e^t)*e^(-t)
(_C + e^t)*e^(-t)

Una condición inicial $y(t_0)=y_0$ se escribe como un par de números.

# orden uno con condiciĆ³n inicial y(0)=2 var('t') y = function('y')(t) f = desolve(diff(y,t)+y-1, y, [0,2]) print f plot(f).show(figsize=4) f(t=0) 
       
(e^t + 1)*e^(-t)
2
(e^t + 1)*e^(-t)
2

En el siguiente ejemplo la ecuación se escribe de otra manera: se mete en una variable, para lo que escribimos la igualdad de la ecuación con doble signo, "==".

# orden dos var('t') y = function('y')(t) de = diff(y,t,2)-y == t desolve(de, y) 
       
_K2*e^(-t) + _K1*e^t - t
_K2*e^(-t) + _K1*e^t - t

Las condiciones iniciales de una EDO de orden dos se escriben como una lista con $t_0$ y los valores de $y, y'$ en ese punto (tres números).

# orden dos con condiciones iniciales y(0)=2, y'(0)=1 var('t') y = function('y')(t) de = diff(y,t,2)-y == t f = desolve(de, y, [0,2,1]) print f plot(f).show(figsize=4) f(t=0); diff(f,t)(t=0) 
       
-t + 2*e^t
2
1
-t + 2*e^t
2
1

Si la EDO de orden dos tiene condiciones de frontera, se ponen los dos pares seguidos en una lista (cuatro números).

# orden dos con condiciones de frontera y(0)=2, y(pi/2)=3 var('t') y = function('y')(t) de = diff(y,t,2)+y == 0 f = desolve(de, y, [0,2,pi/2,3]) print f plot(f,(x,0,pi/2)).show(figsize=4) f(t=0); f(t=pi/2) 
       
2*cos(t) + 3*sin(t)
2
3
2*cos(t) + 3*sin(t)
2
3

Algunas ecuaciones, más difíciles que las que aprenderemos en clase, son resueltas solo de forma implícita.

var('t') y = function('y')(t) desolve(y*diff(y,t)+sin(t)==0,y) 
       
-1/2*y(t)^2 == _C - cos(t)
-1/2*y(t)^2 == _C - cos(t)

En esos casos en que Sage no nos devuelva nada útil, podemos intentar una aproximación (Sage conoce muchos métodos para ello). Aunque no lo estudiaremos, aquí tienes un ejemplo: al intentar resolver la ecuación obtenemos un error, y a continuación buscamos la aproximación.

var('t,y') campopendientes = plot_slope_field(t-2-(y*(y-1)),(t,-2,15),(y,-5,5)) campopendientes.show(figsize=5) var('t') y = function('y')(t) eq = diff(y,t)+y*(y-1) == t-2 desolve(eq,y,[0,2]) 
       
Traceback (click to the left of this block for traceback)
...
NotImplementedError: Maxima was unable to solve this ODE. Consider to
set option contrib_ode to True.
Traceback (most recent call last):    eq = diff(y,t)+y*(y-1) == t-2
  File "", line 1, in <module>
    
  File "/tmp/tmpYkKlCq/___code___.py", line 10, in <module>
    exec compile(u'desolve(eq,y,[_sage_const_0 ,_sage_const_2 ])
  File "", line 1, in <module>
    
  File "/home/sage1516/sage-7.0/local/lib/python2.7/site-packages/sage/calculus/desolvers.py", line 470, in desolve
    raise NotImplementedError("Maxima was unable to solve this ODE. Consider to set option contrib_ode to True.")
NotImplementedError: Maxima was unable to solve this ODE. Consider to set option contrib_ode to True.

El siguiente comando nos permite directamente dibujar la solución sobre el campo de pendientes, gracias a la opción output. Si la quitamos lo que obtendremos será una lista de puntos. Otros parámetros importantes son los valores iniciales (no se pueden calcular soluciones generales aproximadamente), el valor final de la variable al que queremos llegar, y el tamaño de cada paso (si es muy grande la solución es mala y si es muy pequeño tardará en hacerlo).

sol_pend = desolve_rk4(eq,y,ics=[0,2],end_points=15,step=0.05,output='slope_field',thickness=2) sol_pend.show(figsize=5) 
       
 
       

Ejercicio 24 (4 puntos).

  • Dibuja el campo de pendientes de $y'=t\cos(t)-y$ para $t\in[-4,8]$, $y\in[-4,4]$.
  • Calcula dos soluciones particulares con Sage. Representa las dos en la misma gráfica que el campo de pendientes (recuerda que para eso se suman las gráficas). Puedes usar la opción thickness=n para poner el grosor que quieras a las curvas.
 
       
 
       

Ejercicio 25 (4 puntos). Resuelve la EDO $y'\tan t−y=1$. ¿Qué condiciones iniciales $y(t_0)=y_0$ son posibles?

 
       
 
       

Ejercicio 26 (4 puntos). Escribe una EDO de orden dos que corresponda a un oscilador con resonancia. Calcula tres soluciones particulares en $t=0$. Haz dos dibujos: uno donde se vea que las tres cumplen las condiciones iniciales (en un intervalo a partir de 0) y otro donde se vea en los tres casos la forma general de la resonancia (en un intervalo más grande).

 
       
 
       

Ejercicio 27 (8 puntos, opcional). Sage no puede resolver la ecuación $y'=t-y(2+y)$ con $y(0)=1$. Vamos a aproximar una solución con Taylor:

  • Calcula una solución aproximada con el código de un ejemplo que hay arriba. Quita la opción slope_field, obtendrás una lista de puntos. Puedes dibujarlos con el comando line(lista).
  • Calcula con Sage los cinco primeros términos de la serie de Taylor (hasta $n=4$) de la solución.
  • Dibuja juntos el polinomio de Taylor y la solución aproximada que calculaste antes. Haz dos dibujos: uno muy cerca de $t=0$ para ver que coinciden, y otro donde empiecen a diferir.