You are on page 1of 13

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

You might also like