Вы находитесь на странице: 1из 5
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 45 zarroraors 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 hm zarroraars 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 as zarroraors 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 hm zarroraors 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

Вам также может понравиться