Campos vectoriales y ecuaciones diferenciales (lneas de campo)
[ATENCIN : Hay que ir evaluando cada comando escritos en
negro (en orden) parndose en el texto y apretando simultneamente "ShiftEnter" para poder ver los resultados explicados en el texto azul] El campo F(x,y)=(1,2x) se puede pensar como un campo vectorial dado por pendientes de funciones de en . Observar que en cada punto (x,y) la pendiente del vector es 2 x 1 2 x . Es decir que coincide con la pendi- ente (en cada (x,y)) de las curvas y=x 2 cte. El siguiente comando grafica el campo vectorial F: In[1]:= campo VectorPlot [{1, 2 x}, {x, 2, 2}, {y, 0, 5}, Axes True] Out[1]= 2 1 0 1 2 0 1 2 3 4 5 Los vectores que se grafican con VectorPlot que aparecen ms cabezoneses porque tienen en realidad ms longitud. Se prefiere esta notacin (en vez de dibujar la ver- dadera longitud) por motivos de claridad. Si esto se cambia (se abandona la escala automtica) apareceran as: In[2]:= VectorPlot [{1, 2 x}, {x, 2, 2}, {y, 0, 5}, Axes True, VectorScale 1] Out[2]= 4 2 0 2 4 2 0 2 4 6 8 Ac solucionamos la ecuacin diferencial y(x)=2x con el comando DSolve: In[3]:= DSolve[{y '[x] 2 x}, y[x], x] Out[3]= y[x] x 2 C[1] El siguiente comando permite elegir la constate C[1] de la solucin anterior (mediante el cursor arriba del grfico). Cada eleccin de C[1] da una solucin de la ec. dif. (o curva integralde F): 2 Li neas de campo (si n eval uar).nb In[4]:= Manipulate[ Show[campo, Plot[x ^ 2 C[1], {x, 2, 2}, PlotStyle{{RGBColor[1, 0, 0], Thickness[.02]}}]], {C[1], 0, 2, .1}] Out[4]= C 1 2 1 0 1 2 0 1 2 3 4 5 Ahora definimos un campo cualquiera F (Uds. pueden modificarlo) donde F[x, y][[1]] es su primer componentey F[x, y][[2]]la segunda : In[5]:= F[x_, y_]: { x Sin[y] 3, 2 Cos[x y]}; F[x, y][[1]] F[x, y][[2]] Out[6]= 3 x Sin[y] Out[7]= 2 Cos[x y] Este es el campo vectorial F: Li neas de campo (si n eval uar).nb 3 In[8]:= campo2 VectorPlot [{F[x, y][[1]], F[x, y][[2]]}, {x, 2, 2}, {y, 0, 5}, Axes True] Out[8]= 2 1 0 1 2 0 1 2 3 4 5 Ac se resuelve la ecuacin diferencial(mediante mtodos numricos, con NDSolve) dada por y' (x) = F[x, y][[2]]/ F[x,y][[1]]con condicin inicial y (2) = 1. Es decir se busca la curva que tenga la pendiente de los vectores del campo F, o sea la "lnea de campo" de F que pase por (x,y)=(1,2). In[9]:= solucion NDSolve[{y '[x] F[x, y[x]][[2]]/ F[x, y[x]][[1]], y[2] 1}, y[x], {x, 2, 2}]; f[x_] Evaluate[y[x]/. solucion][[1]]; grafico2 Plot[f[x], {x, 2, 2}, PlotStyle{{RGBColor[1, 0, 0], Thickness[.005]}}] Out[11]= 2 1 1 2 0.5 0.5 1.0 En el siguiente grfico se ve esta lnea de campo y los vectores del campo vectorial: 4 Li neas de campo (si n eval uar).nb In[12]:= Show[campo2, grafico2] Out[12]= 2 1 0 1 2 0 1 2 3 4 5 Los comandos siguientes son interactivos. Se puede mover el cursor para elegir la constante C, de la condicin inicial y(0)=C, y (debera) automti- camente graficarse la funcin solucin de la ecuacin diferecial con esa condicin inicial. Li neas de campo (si n eval uar).nb 5 In[13]:= F[x_, y_]: { x Sin[y] 3, 2 x Cos[ y]}; campo2version2 VectorPlot [{F[x, y][[1]], F[x, y][[2]]}, {x, 2, 2}, {y, 0, 5}, Axes True]; Manipulate[ solucion NDSolve[{y '[x] F[x, y[x]][[2]]/ F[x, y[x]][[1]], y[0] C}, y[x], {x, 2, 2}]; f[x_] Evaluate[y[x]/. solucion][[1]]; Show[campo2version2 , Plot[f[x], {x, 2, 2}, PlotStyle{{RGBColor[1, 0, 0], Thickness[.007]}}]], {C, 0, 5, .5}] Out[15]= C 2 1 0 1 2 0 1 2 3 4 5 Ac vemos que DSolve no es infalible. Se le pide que resuelva una ecuacin que tiene soluciones nicas (segn teorema visto en clase) y anuncia que puede no estar encontrando todas las soluciones: In[16]:= DSolve[{y '[x] Sin[y[x]] x, y[0] 1}, y[x], x] Solve :: ifun : Inve rs e functions a re be ing us e d by Solve , s o s ome s olutions ma y not be found; us e Re duce for comple te s olution informa tion. Solve :: ifun : Inve rs e functions a re be ing us e d by Solve , s o s ome s olutions ma y not be found; us e Re duce for comple te s olution informa tion. Out[16]= y[x] 2 ArcCot
x 2 2 Cot 1 2
En el caso siguiente directamente devolvi el comando tal cual fue
tipeado: 6 Li neas de campo (si n eval uar).nb En el caso siguiente directamente devolvi el comando tal cual fue tipeado: In[17]:= DSolve[{y '[x] Sin[y[x] x] x, y[0] 1}, y[x], x] Solve :: ifun : Inve rs e functions a re be ing us e d by Solve , s o s ome s olutions ma y not be found; us e Re duce for comple te s olution informa tion. Out[17]= DSolve[{y
[x] x Sin[x y[x]], y[0]1], y[x], x]
Resolvemos entonces con mtodos numricos (comando NDSolve): In[18]:= solucion NDSolve[{y '[x] Sin[y[x] x] x, y[0] 1}, y[x], {x, 0, 20}]; f[x_] Evaluate[y[x]/. solucion][[1]] Out[19]= InterpolatingFunction[{{0., 20.]], ][x] Y graficamos el resultado: In[20]:= Plot[f[x], {x, 0, 20}, PlotStyle {RGBColor[1, 0, 0]}] Out[20]= 5 10 15 20 0.5 1.0 1.5 Ahora lo graficamos junto con el campo vectorial: Li neas de campo (si n eval uar).nb 7 In[21]:= campo4 VectorPlot [{1, Sin[y x] x}, {x, 0, 4}, {y, 0, 6}]; Manipulate[solucion NDSolve[{y '[x] Sin[y[x] x] x, y[0] c}, y[x], {x, 0, 5}]; f[x_] Evaluate[y[x]/. solucion][[1]]; Show[campo4, Plot[f[x], {x, 0, 5}, PlotRange {0, 6}, PlotStyle {RGBColor[1, 0, 0]}]], {c, 0, 8, .2}] Out[22]= c 0 1 2 3 4 0 1 2 3 4 5 6 Ac vemos varias soluciones a la vez: 8 Li neas de campo (si n eval uar).nb In[23]:= todaslascurvas Table[{solucion NDSolve[{y '[x] Sin[y[x] x] x, y[0] c}, y[x], {x, 0, 5}], f[x_] Evaluate[y[x]/. solucion][[1]]}, {c, 0, 8, .5}]; variascurvas Plot[Table[todaslascurvas [[i, 2]], {i, 1, Length[todaslascurvas ]}], {x, 0, 5}, PlotStyle {RGBColor[1, 0, 0]}] Out[24]= 1 2 3 4 5 2 4 6 8 y junto al campo vectorial: In[25]:= Show[campo4, variascurvas ] Out[25]= 0 1 2 3 4 0 1 2 3 4 5 6 Lo mismo pero con otro campo distinto: Li neas de campo (si n eval uar).nb 9 In[26]:= G[x_, y_]: {1, Sin[y ] x}; campo3 VectorPlot [G[x, y], {x, 0, 4}, {y, 0, 3}]; Manipulate[solucion Quiet[DSolve[{y '[x] Sin[y[x] ] x, y[0] c}, y[x], x]]; f[x_] Evaluate[y[x]/. solucion][[1]]; Show[campo3, Plot[f[x], {x, 0, 8}, PlotRange {0, 4}, PlotStyle {RGBColor[1, 0, 0]}]], {c, 0, 3, .2}] Out[28]= c 0 1 2 3 4 0.0 0.5 1.0 1.5 2.0 2.5 3.0 El siguiente grfico es sensible al tacto. Est programado para trazar la solucin (lnea de campo) que pasa por el punto clickeado: 10 Li neas de campo (si n eval uar).nb In[29]:= DynamicModule [{f {}}, ClickPane[Framed Dynamic Show[campo, Plot[f, {x, 2, 2}, PlotRange {0, 5}, PlotStyle {RGBColor[1, 0, 0]}]], (AppendTo[f, x ^ 2 ([[2]] [[1]]^ 2)]) &]] Out[29]= 2 1 0 1 2 0 1 2 3 4 5 Este tambin es interactivo con un campo F que se elige al principio (y se puede cambiar): Li neas de campo (si n eval uar).nb 11 In[30]:= F[x_, y_]: { Sin[y] 2, 4 Cos[ y]}; campo2version2 VectorPlot [{F[x, y][[1]], F[x, y][[2]]}, {x, 2, 2}, {y, 0, 5}, Axes True]; DynamicModule [{f {}}, ClickPane[Framed Dynamic Show[campo2version2 , Plot[f, {x, 2, 2}, PlotRange {0, 5}, PlotStyle {RGBColor[1, 0, 0]}]], (AppendTo[f, {solucion NDSolve[{y '[x] F[x, y[x]][[2]]/ F[x, y[x]][[1]], y[[[1]] ] [[2]]}, y[x], {x, 2, 2}] ; Evaluate[y[x]/. solucion][[1]]} ]) &]] Out[32]= 2 1 0 1 2 0 1 2 3 4 5 Estas son soluciones a sistemas de ecuaciones diferenciales (diagrama de fases de mate 4), tambin es un dibujo interactivo. Pinchen en cualquier lugar del dibujo y vern la solucin que empieza en ese punto: 12 Li neas de campo (si n eval uar).nb In[33]:= DynamicModule _{f {}}, ClickPane_Framed Dynamic ParametricPlot [f, {t, 0, 10}, PlotRange 5], AppendTo_f, MatrixExp_ 1.1 0.9 1.4 0.3 t_._ &__ Out[33]= 4 2 2 4 4 2 2 4 Li neas de campo (si n eval uar).nb 13