zarroraors Usando Matlab para resolver £D0s de primer orden
Usando Matlab para resolver EDOs de primer
orden.
Contenido
Funciones en Ja de comando
Campo de direcciones
la sol
Encontrar valores numéricos de la solucién en valores t
Definicién de funciones en la linea de comando
Si se desea utilizar una funcién varias veces es conveniente definirla como una funcién de linea de
comando (inline function)
ine (‘sin(x)*x’,"x!)
define la funcién £1 (x) =sin (x) *x. Hay que notar que los argumentos de inline deben de ser
cadenas de caracteres (strings) y no expresiones simbélicas. De esta forma se puede usar £1 en las
expresiones que se escriban en la linea de comando.
También se pueden definir funciones de varias variables:
nline(‘x*y+sin(x)’,'x","y")
define la funcién g1 (x, y) =x* y+sen (x) de dos variables.
Campo de direcciones
En primer termino debes de descargar el archivo di rficid.m al directorio de trabajo de
Matlab.
Se define la funcién g en Ja linea de comando, Dicha funcién es de dos variables: t y y,
correspondientes al lado derecho de la ecuacién diferencial ¥*(¢)= g(¢,€)). Por ejemplo, la ecuacién
diferencial »’)= 9” se define como:
grinline(‘t*y*2",/
ry)
Es necesario utilizar inline (..,t",/y"), aunque las variables t o y no aparezcan en la férmula.
htpildcb cura mxluserslrokigegatmatlabedo hm 45zarroraors Usando Matlab para resolver
Para graficar el campo de direcciones de la EDO para un domino de t desde t0 hasta t1 con un
espaciamiento de dt. y y desde y0 hasta y1 con un espaciamiento de dy se utiliza
dirfield(g,t0:dt:t1, y0:dy:y1). Por ejemplo, para t y y entre -2 y 2 con un
espaciamiento de 0.2, es necesario escribir en la linea de comando:
di
eld(g,-2:0.2:2,-2:0.2:2)
Jo que resulta en:
2
18
1
Wess
Wess s-4
Nas
as
Solucién numérica de un problema de valor inicial
En primer término es ne
lado derecho de la ecuacién diferencial »”(¢)= a(¢.€)). Continuando con el ejemplo, la ecuaciéon
diferencial »()= 7 se define como
ario definir la funcién en la linea de comandos g correspondiente al
geinline (‘t*y*2","t","y")
Para graficar la solucién numérica de un problema de valor inicial: Para la condicién inicial
v0)
t0,t1),y0).
0 se puede graficar la solucién para t. que va desde t 0 hasta t1 usando ode45 (g,
Ejemplo: Para resolver el problema de valor inicial »"(¢)= 0 sujeto a »- 2)=1 en el intervalo
[2.2] se usa
ode45 (g, [-2,2],1)
Jo que resulta en
htpildcb cura mxluserslrokigegatmatlabedo hmzarroraars Usando Matlab para resolver £D0s de primer orden
14
1
og
a8
a7
ao
Os
4
a3
Los circulos marean los puntos en los que se realizé el céleulo numérico (dichos puntos son elegidos
por Matlab para optimizar la exactitud y eficiencia del algoritmo). Se pueden obtener los vectores ts
y ys con las coordenadas de estos puntos usando [ts, ys]=ode45 (g, [t0,t1],y0)
Posteriormente es posible graficar la solucién usando plot (ts, ys) y de esta manera s
obtener una gréfica sin los circulos.
puede
Para combinar las grifieas de campos de direcciones y varias curvas soluciones se usan los
comandos hold on yhola off: después de obtener la primera grafica se escribe hold on, por
lo que todos los comandos relativos a las grificas subsecuentes serdn ejecutados en la misma ventana.
Después del iltimo comando se eseribe hold off.
Ejemplo: Graficar el campo de direcciones y las 13 curvas solucién con las condiciones iniciales
yE 2)=-0.4-0.2,,1.8,2
hold
for yi
Jeode45 (g, [-2,21, v0) 7
3,ys)
“05 SS =
SSS re
AAR YNNS 4%
RY XS SS a4
NS rad
RATT heer
Hayy yy rid
zhi i big
-2 =1 0 1 2
epic cura mat
aszarroraors Usando Matlab para resolver
1 de primer eden
Para obtener valores numéricos de la solucién en determinados valores de t: Se puede especificar
un vector tv de t valores y usar [tx, ys]=ode45 (g, tv, yO). El primer elemento del vector tv
es el valor inicial de t; el vector tv debe de tener al menos 3 elementos.
Ejemplo: Obtener la solucién con la condicién inicial y{- 2)=1 en f= 1,5,2 y mostrar los
resultados en un tabla con dos columnas.
ts, ys)=ode45 (g, -2 We
ts,ys
Para obtener el valor numérico de la solucién en el valor final de t se utiliza ys (end)
Solucién simbélica de EDOs
Para resolver una ecuacién de manera simbélica es necesario definir la ecuacién diferencial como
una cadena de caracteres, usando Dy para y'(¢) y y para y(). Ejemplo: para resolver la ecuacién
diferencial y'(¢) = 7 se escribe en la linea de comando:
sol-dsolve ( ‘py=t*y*2’,/t")
El tltimo argumento ‘t’ es el nombre de la variable independiente.
Si Matlab no puede encontrar una solucién regresar como solucién un simbolo vacio. Si Matlab
encuentra varias soluciones regresard un vector de soluciones. En algunos casos Matlab no podré
encontrar soluciones explicitas, pero regresara la solucién en forma implicita, ic.
dsolve (‘Dy=1/ (y-exp(y))","t") regresa
t-1/2*y*2+exp (y) +C1
Desafortunadamente Matlab no puede manejar condiciones iniciales en este caso. Se puede utilizar
ezcontour (‘t-1/2*y*2+exp(y)", [-4 4 -3 3]) para graficar varias curvas solucién
para t en el intervalo [-4,4] y y en [-3 3]. Ademis se puede utilizar ezplot (*t-
1/2*y*2+exp (y)-1', [-4 4 -3 3]) para graficar solo la curva t-1/2*y*2+exp (y) =1
La solucién presentaré una constante C1. Dicha constante se puede sustituir por valores determinados
usando subs (sol, ’C1" , valor). Bjemplo: para fijar el valor de C1 a5 y graficar la solucién
para t=~2 hasta 2 se utiliz
ezplot (subs (sol,‘C1’,5),[-2 2])
Para resolver un problema de valor inicial se debe de especificar la condicién inicial:
sol=dsolve (‘Dy=t*y*2",/y(-2)=1",/t")
Para graficar la solucién se utiliza ezplot (sol, [t0,t1])
solucién de la ecuacién diferencial con las siguientes condiciones i
YE 2) =-0.4,-0.2,-001.8.2
Ejemplo: Grafique las 13 curvas
ales
sol=dsolve (‘Dy=t*y*2',/y(-2)=y0",/t")
for y0=-0.4:0.2:2
htpildcb cura mxluserslrokigegatmatlabedo hmzarroraors Usando Matlab para resolver £D0s de primer orden
ezplot (subs (sol,’y0",y0),[-2 2])
id on
end
hold off
axis tight
resultando:
2
15
1
os
Q
05
1
15
2 a a 1 2
Para obtener el valor numérico en uno o mas valores de t se utiliza subs (sol,’t’,tval) yla
funcién double 0 vpa (para obtener més digitos). Bjemplo: obtener el valor numérico de la
solucién en t=0.5:
sol=dsolve (‘Dy=t*y*2", y(-2)=17,'t")
double (subs (so1,’t’,0.5))
Para obtener los valores numéricos de la solucién en t= -2,-1.5,
tabla de dos columnas se utilizan los siguientes comandos:
2 y que los despliegue como una
tval=(-2:0.5:2)'; %vector columna con los valores de t
yval=double (subs (sol,/t’,tval)); vector columna con los
valores de y
[tval,yval] Smuestra las 2 columnas juntas
ini
htpildcb cura mxluserslrokigegatmatlabedo hm