You are on page 1of 35

X Y O B Y C H V E Z PA C H E C O

M AT L A B Y C L C U L O

UNIVERSIDAD DE INGENIERA Y TECNOLOGA

xyoby chvez pacheco

ndice general

Introduccin
Curvas

5
7

Vectores, rectas y planos


Funciones de dos variables
Campos vectoriales

11
13

17

Superficies Paramtricas

19

Ecuaciones diferenciales

23

Bibliografa

35

Introduccin
Matlab es una herramienta que permite una amplia gama de opciones para graficar en dos o tres dimensiones, como tambin permite hacer curvas, trabajar con campos vectoriales.

Creando scripts
Matlab a travs de la linea de comando va ejecutando ordenes. Esto resulta simple para problemas sencillos, sin embargo para cuando
se tiene muchos ordenes y en forma repetitiva, esta forma es muy
tediosa. Para solucionar este problema Matlab permite crear archivos
de texto llamados script o archivos M para guardar estas ordenes y
poder ejecutarlas posteriormente.
Para crear un archivo M usaremos la opcin File / New / M-FileL,
que abre una ventana para la edicin del texto. Luego de escribir
nuestro conjunto de ordenes podemos guardar el archivo para posteriormente editarlo y modificarlo, ejecutarlo, ... Podemos abrir un
archivo M previamente creado con la opcin File / Open ... o con la
orden open archivo.m desde la lnea de comandos. Podemos ejecutar
un archivo M con la opcin File / Run Script ... o directamente con la
orden archivo desde la lnea de comandos.

Seteando archivos
Para poder usar estos archivos en el Matlab, por ejemplo los
archivos del libro A Matlab Companion for Multivariable Calculus
http://www-users.math.umd.edu/jkolesar/241/241Cooper/,
deber seguir las siguientes instrucciones
1. Coloque los archivos de extensin *.m en la carpeta que usted crea
conveniente. Llammosla C:/matlab/cooper
2. En la barra de herramientas del men de matlab elija la ventana
File y luego la opcin Set Path (Setear ruta) como se muestra en la
figuras siguientes

xyoby chvez pacheco

3. En esta ltima se debe ubicar la carpeta donde estn los archivos


*.m, es decir, C:/matlab/cooper y luego elija la opcin Save.
4. Para verificar podra escribir
1

>>

help arrow.m

y debera mostrar la ayuda del archivo.

Curvas
Al construir la grfica de una funcin y = f ( x ) en el intervalo
[ a, b], se debe tener presente que Matlab dibuja las curvas punto a
punto; es decir, calcula los puntos ( x, f ( x )), para los valores de x que
se le indique y representa dichos puntos unidos por un segmento.
Por ello, se empieza estableciendo la matriz fila x cuyos elementos
son los valores de x para los que se calcular el valor correspondiente
de f ( x ). Si la distancia entre dos valores consecutivos de x es convenientemente pequea, el aspecto final ser el de una verdadera
curva en lugar de una poligonal.
fplot

El comando fplot(f,[a,b]) grafica la funcin f en el intervalo


[ a, b] siendo f la regla de correspondencia.

Figura 1: fplot(x2 *exp(-x),[0,10]


0.7

>> fplot(x^2*exp(-x),[0,10])

0.6

0.5

0.4

0.3

plot

0.2

0.1

10

Para crear otros grficos bidimensionales tambin se usa plot(x, y),


donde los argumentos x e y son vectores con el mismo nmero de
elementos.
Ejemplo 1. Para conseguir la misma grfica de la figura 1 hacemos
1
2
3

>> x=0:0.1:10;
>> y=x.^2.*exp(-x);
>> plot(x,y)

Ejemplo 2. La grfica del cicloide x = r ( sen ) , y = r (1 cos ),


[0, 2 ] cuando r = 1.
1
2
3
4
5

>>
>>
>>
>>
>>

theta=0:0.1:2*pi;
r=1;
x=r*(theta-sin(theta));
y=r*(1-cos(theta));
plot(x,y)

Figura 2: Cicloide
3
2.5

obtenindose la figura 2

2
1.5
1
0.5
0
0.5
1
0

xyoby chvez pacheco

plot3

En el espacio de tres dimensiones la forma ms sencilla de crear


un grfico 3-D es mediante la funcin plot3, cuya sintaxis es bastante
similar a la de la funcin plot.

Figura 3: Hlice x = cos(t) , y =


sen(t), z = t t [0, 2 ]
6

Ejemplo 3. Veamos como se grafica la hlice paramtrica x = cos(t) ,


y = sen(t), z = t t [0, 2 ] mostrada en la figura (3)

5
4
3

1
2
3
4

>>
>>
>>
>>

t=0:0.1:2*pi;
x=cos(t); y=sin(t); z=t ; plot3(x,y,z);
axis equal
grid

2
1
0
0.5

0
0.5

0
0.5

0.5

El comando x=linspace(a,b,n) crea el vector x de n elementos


en el cual el primer elemento es a y el ltimo es b, todos igualmente
espaciados. Sera equivalente a x=a:(b-a)/(n-1):b.
inline

Existen otros comandos para graficar funciones tales como inline,


que transforma en funcin la cadena de caracteres. Por ejemplo, para
graficar la funcin z = f ( x, y) = x2 + y2 , con
1

>> f=inline(x.^2+y.^2,x,y)

se crea la funcin f.
En Matlab se usa el signo % para escribir los comentarios. Toda
expresin despus del signo % es ignorado por Matlab.
Tambin usaremos los comandos subplot, contour, contour3, quiver, comet, etc.

Curvas en el plano
Empezamos graficando funciones reales continuas definidas en
un intervalo. Si f es una funcin real de variable real, su grfica es el
conjunto Gr ( f ) = ( x; y)/y = f ( x ), x Dom( f ).
Ejemplo 4.
1
2
3
4
5

>>
>>
>>
>>
>>

x=linspace(-2,3,3000); % divide el intervalo [-2,3] en 3000 partes.


y=exp(-x); % imgenes de las componentes de x
plot(x,y),
grid on,
title(funcin exponencial) % grfica de la curva.

o equivalentemente

Figura 4: f ( x ) = e x ,x [2, 3]
8

>> fplot(exp(-x),[-2,3])

7
6
5
4
3
2
1
0
2

matlab y clculo

Ejemplo 5. Funciones por partes

f (x) =

x,

x<0

x2 ,

0x<2

1 x,

2x

creamos un archivo script con las siguientes instrucciones


1
2
3
4
5

function y = f(x)
y1 = x.*(x < 0);
y2 = x.^2.*( (x < 2) - (x < 0) );
y3 = (1-x).*(1 - (x < 2));
y = y1 + y2 + y3;

lo guardamos con el nombre func1_partes1.m y lo ejecutamos (ver


figura)
1
2
3
4

>>
>>
>>
>>

x=-2:0.01:4;
y=func1_partes1(x);
plot(x,y)
grid

Figura 5:
4

Otra alternativa para graficar es seguir las siguientes ordenes


1
2

3
4

>> x = linspace(-2,4,3000); % divide el intervalo [-2,4] en 3000 partes.


>> y = (x).*(x<0)+(x.^2).*((0<=x)&(x<2))+(1-x).*(2<=x); %evala f usando
ndice lgico.
>> plot(x,y)
>> grid

3
2

Curvas en coordenadas polares


Las coordenadas polares de un punto P se denotan por (r; ) ,
donde r representa el radio vector y el ngulo polar,
Ejemplo 6. Cardioide Ecuacin r = 1 + cos , [0, 2 ]
1
2
3
4
5

>>
>>
>>
>>
>>

theta=linspace(0,2*pi,50);
r=1+cos(theta);
polar(theta,r);
grid
title(Grfica del cardioide r=1+cos\theta )

Figura 6: r = 1 + cos ,
[0, 2 ]
Grfica del cardioide r=1+cos
90

120

60
1.5
1

150

30

0.5

180

Aplicacin
210

Problema 47 seccin 10.1

330

240

300
270

1
2
3
4
5
6

>>
>>
>>
>>
>>
>>

t=-2:0.1:2;
c=-1;
x=t.^2;
y=t.^3-c*t;
plot(x,y)
grid

10

7
8
9
10
11
12
13
14
15
16
17

>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>

xyoby chvez pacheco

hold on % mantiene la grfica anterior para superponer la siguiente


c=0
y=t.^3-c*t;
plot(x,y,g) % color green
c=1
y=t.^3-c*t;
plot(x,y,r)
c=2
y=t.^3-c*t;
plot(x,y,c)
hold off
% cancela la opcin hold on

Figura 7:
10
c=1
c=0
c=1
c=2

8
6
4
2
0

Ejemplo 7. Vectores tangentes a la semicircunferencia

x (t) = cos t
t [0, 1]
C=
y(t) = sen t

2
4
6
8
10

0.5

1.5

2.5

3.5

en los 10 puntos de la curva


1
2
3
4
5
6

>>
>>
>>
>>
>>
>>

t=linspace(0,pi,30);
plot(cos(t),sin(t));
hold on;
t=linspace(0,pi,10);
quiver(cos(t),sin(t),-sin(t),cos(t));
grid

Figura 8: x = cos(t), y = sin(t))


1.2
1
0.8
0.6
0.4
0.2
0
0.2

Ejemplo 8. Determine la tangente a la curva

x ( t ) = ( t + 1)3
y ( t ) = ( t + 2)2

0.4
0.6
0.8
1.5

0.5

0.5

1.5

en el punto P correspondiente al valor del parmetro t = 0.


1
2
3

>> syms t;
>> x=(t+1)^3; y=(t+2)^2;
>> P=[1 4]; % punto de paso


y0 (t)
La pendiente de la recta tangente en t es 0
.
x ( t ) t =0
1
2

>> yp=diff(y,t)/diff(x,t)
>> m=subs(yp,0);

% calcula la y/x
% evalue en t=0

Ploteamos la funcin con la recta tangente


1
2
3
4
5

6
7

>>
>>
>>
>>
>>

t=-2:0.01:1; x=(t+1).^3; y=(t+2).^2;


plot(x,y,k), hold on %curva
x=-1:0.01:8; y=m*(x-1)+4;
plot(x,y,k), hold on %recta tangente
gtext(punto de tangencia) % Haga click con el mouse en el punto de
tangencia
>> title(Curva y tangente)
>> hold off

Figura 9:
Curva y tangente
14

12

10

6
Punto de tangencia

0
1

Vectores, rectas y planos


En este capitulo estudiaremos algunos elementos de la geometra
vectorial.
Para representar vectores en Matlab nicamente colocamos las
componentes en un arreglo
Ejemplo 9. La representacin de los vectores a = h1, 2i y b = h3, 5, 6i
sera
1
2

>> a=[1 2]
>> b=[3 5 6]

mfile arrow, arrow3


Los archivos arrow.m y arrow3.m son funciones que pueden mostrar los vectores en dos y tres dimensiones, respectivamente.
Ejemplo 10. Deseamos mostrar los vectores v = h1, 2i y w = h2, 2i,
ambos tomado el punto P0 (2, 6) como punto de inicio y finalmente
sumarlos v + w. Usamos los siguientes comandos
1
2
3
4
5
6
7
8

>>
>>
>>
>>
>>
>>
>>
>>

P0 = [2 6];
v = [1 2];
arrow(P0,v)
hold on
w = [-2 2];
arrow(P0,w)
arrow(P0,v+w,r)
axis equal

Figura 10:
10
9.5
9
8.5
8

Producto escalar y vectorial

7.5

Usando los comandos dot(v,w) y cross(v,w) para calcular v w y


v w.

6.5

Ejemplo 11. Determinar el producto escalar y vectorial de los vectores a = h1, 2, 4i y b = h3, 2, 1i
1
2
3

>> a=[1,2,4];
>> b=[3,2,1];
>> dot(a,b)

6
1

12

4
5
6
7
8

xyoby chvez pacheco

ans =
11
>> cross(a,b)
ans =
-6
11

-4

Ecuacin de la recta y planos


Si v = h a, b, ci es el vector direccin de la recta que pasa por el
punto P0 = ( x0 , y0 , z0 ) entonces la ecuacin vectorial de la recta es
r = r0 +t v
donde r = h x, y, zi y r0 = h x0 , y0 , z0 i son los vectores posicin de los
puntos P( x, y, z) y P0 . Sus ecuaciones paramtricas son entonces
x (t) = x0 + t a,

y ( t ) = y0 + t b z ( t ) = z0 + t c

Ejemplo 12. Grafique la recta que pasa por el punto P0 (5, 1, 3) y es


paralela al vector i + 4j k.
2
3
4
5
6
7
8

>>
>>
>>
>>
>>
>>
>>
>>

v=[1 4 -2];
a=v(1);b=v(2);c=v(3);
x0=5;y0=1;z0=3;
t=-1:0.01:1; % parmetro
x=x0+a*t; y=y0+b*t; z=z0+c*t;
plot3(x,y,z)
grid; box;view(150,36)
xlabel(x);ylabel(y);zlabel(z);

y podemos aadir el vector direccin en el punto P0 usando el


archivo arrow3.m escribiendo

Figura 11:

0.5

0.5

0
0.5
1
1.5
2
x

0.5
y

0.5

Funciones de dos variables


Definiendo funciones de varias variables
Las funciones de varias variables pueden definirse usando archivos mfile y funciones inline del mismo modo que las funciones de
una variable.
Ejemplo 13. Sea f ( x, y) = 3x + ye x
definida en un archivo mfile
1
2
3

2 y2

esta funcin puede ser

function z=f(x,y)
%comentario para la funcin
z=3*x+y.*exp(-x.^2-y.^2);

para evaluar la funcin tenemos en la linea de comandos


1
2
3

>> f1(1,4)
ans =
3.0000

Cuando definimos f como una funcin en linea, debemos indicar


que f es una funcin de las variables listadas entre comillas
1
2
3
4

>> f=inline(3*x+y.*exp(-x.^2-y.^2),x,y);
>> feval(f,1,4)
ans =
3.0000

Grfica de funciones de dos variables


La forma ms sencilla para graficar funciones de dos variables es
la siguiente
Ejemplo 14. Graficar la funcin f ( x, y) = e x


( x, y) R2 / 2 x 2, 2 y 2
1
2
3
4
5
6
7

>>
>>
>>
>>
>>
>>
>>

x=-2:0.1:2;
y=x;
[X,Y]=meshgrid(x,y);
Z=exp(-X.^2-Y.^2);
surf(X,Y,Z)
xlabel(x); ylabel(y); zlabel(z);
title(e^{-x^2-y^2})

2 y2

de dominio D =

Figura 12: f ( x, y) = e x
2

2 y2

x y

14

xyoby chvez pacheco


1
0.8

0.6
0.4
0.2
0
2

Ejemplo 15. La misma grfica puede generarse usando inline

2
1

1
2
3
4
5
6
7
8
9
10

>>
>>
>>
>>
>>
>>
>>
>>
>>
>>

f=inline(exp(-x.^2-y.^2),x,y);
x=linspace(-2,2,20);
y=linspace(-2,2,20);
[X,Y]=meshgrid(x,y);
Z=feval(f,X,Y);
surfl(X,Y,Z);
colormap(cool)
axis([-2 2 -2 2 0 1])
xlabel(x); ylabel(y); zlabel(z);grid off;
title(e^{-x^2-y^2})

1
2

Figura 13:
2 2
ex y

1
0.8

0.6
0.4
0.2

Ejemplo 16. Tratemos ahora de mostrar diferentes superficies usando


varias ventanas para ello usamos la funcin subplot

0
2
1

2
3
4
5
6
7
8
9
10
11

subplot(2,2,1)
x=-2:0.1:2;y=x;[X,Y]=meshgrid(x,y);
Z=exp(1-X.^2-Y.^2);
surfl(X,Y,Z)
shading interp
colormap gray
xlabel(x);
ylabel(y);
zlabel(z);
title(e^{1-x^2-y^2})
view(31,34)

12
13
14
15
16
17
18
19
20
21
22
23

subplot(2,2,2)
x=-2:0.1:2;y=x;[X,Y]=meshgrid(x,y);
Z=exp(1-X.^2+Y.^2);
surfl(X,Y,Z)
shading interp
colormap gray
xlabel(x);
ylabel(y);
zlabel(z);
title(e^{1-x^2+y^2})
view(50,34)

24
25

subplot(2,2,3)

26
27
28
29
30
31
32
33
34
35
36

x=-5:0.1:5;y=-6:0.1:6;[X,Y]=meshgrid(x,y);
Z=log(abs(Y-X.^2));
surfl(X,Y,Z)
shading interp
colormap gray
xlabel(x);
ylabel(y);
zlabel(z);
title(f(x,y)=ln(|y-x^2|))
view(53,60)

37
38

subplot(2,2,4)

1
y

0
1
2

matlab y clculo

39
40

x=-2*pi:0.1:2*pi;y=-4:0.1:4;[X,Y]=meshgrid(x,y);
Z=cos((X.^2+2*Y.^2)/4);

Curvas de nivel
Para una funcin de dos variables z = f ( x, y) se define las curvas
de nivel de f como la interseccin de la superficie generada por f y
los planos z = k, es decir
Sc = {( x, y) : f ( x, y) = k}
Las curvas de nivel son las proyecciones de estas curvas sobre el
plano x y.
MATLAB tiene un comando que genera las curvas de nivel de
una funcin. Primer construimos una malla sobre un rectngulo con
[X,Y]=meshgrid(x,y). El comando bsico es contour(X,Y,f(X,Y)) que
dibuja lineas de contorno de f sobre el rectngulo en los colores
correspondiente a colormap. El comando puede ser refinado de
varias maneras contour(X,Y,f(X,Y),n,k) divide el intervalo
[min f , m a x f ] en n + 1 subintervalos iguales. El ltimo argumento k indica que las curvas de nivel sern dibujadas de color negro. Finalmente podemos elegir los valores de la curva de nivel
substituyendo n por un vector de valores. Por ejemplo, si deseamos dibujar las curvas de nivel para f ( x, y) = 1,5, 2, 2,5, 4 , defi-

15

16

xyoby chvez pacheco

nimos el vector niveles=[1.5, 2, 2.5, 4]. Estos valores no necesariamente son igualmente espaciados. Entonces ejecutamos con
contour(X,Y,f(X,Y),niveles,k).
Otras opciones para graficar las curvas de nivel son contour3(X,Y,f(X,Y),n,k)
que muestra las curvas sobre la superficie y meshc(X,Y,f(X,Y)) que
grafica la superficie y las curvas de nivel proyectadas al plano xy.
Ejemplo 17. Las curvas de nivel de la superficie f ( x, y) = 4x2 + y2
son elipses, pues si
z = k = f ( x, y) = 4x2 + y2
se tiene

x2
y2
 q 2 +  2 = 1
k
k
4

Figura 14: Curvas de nivel de


f ( x, y) = 4x2 + y2
2

1
2
3
4
5
6

>>
>>
>>
>>
>>
>>

x=-2:0.1:2;y=x;
[X,Y]=meshgrid(x,y);
Z=4*X.^2+Y.^2;
surfl(X,Y,Z);grid off;
pause
contour(X,Y,Z)

1.5
1
0.5
0
0.5
1
1.5

Usando otras opciones tenemos


1
2
3
4
5
6
7
8
9
10
11

>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>

x=-2:0.1:2;y=x;
[X,Y]=meshgrid(x,y);
Z=4*X.^2+Y.^2;
surfl(X,Y,Z);colormap copper;shading interp;grid off;
alpha(0.9) % para ver transparente
pause
hold on
contour3(X,Y,Z,20)
hold off
pause
meshc(X,Y,Z)

2
2

1.5

0.5

0.5

1.5

20

15

10

0
2
1

2
1

1
2

Figura 15: Curvas de nivel de


f ( x, y) = 4x2 + y2

20

15

10

0
2
1

2
1

1
2

Campos vectoriales
Para dibujar un campo vectorial se usa los comandos quiver y
quiver3 como se muestra en el ejemplo siguiente
Ejemplo 18. Dibujar el campo vectorial F( x, y) = y i + x j en la
regin [5, 5] [5, 5]
1
2
3
4

>>
>>
>>
>>

x=-5:1:5;
y=x;
[X,Y]=meshgrid(x,y);
quiver(X,Y,-Y,X) % -Y,X corresponde a las componentes del campo

Figura 16: F( x, y) = y i + x j
5
4
3
2
1
y

0
1
2



Ejemplo 19. Dibujar el campo vectorial F( x, y) = ln 1 + y2 , ln 1 + x2
en la regin [5, 5] [5, 5]
1
2
3
4

>>
>>
>>
>>

x=-5:1:5;
y=x;
[X,Y]=meshgrid(x,y);
quiver(X,Y,log(1+Y.^2),log(1+X.^2))

Dibujar el campo vectorial F( x, y) =

[2, 2] [2, 2] [1, 5]

3
4
5
5

0
x

Figura 17: F( x, y)



ln 1 + y2 , ln 1 + x2
y
x
z
i j + k en la regin
z
z
4

5
4
3
2
1

2
3
4
5

x=-2:1:2;
y=x;
z=1:1:5;
[X,Y,Z]=meshgrid(x,y,z);
quiver3(X,Y,Z,Y./Z,-X./Z,Z/4)

>>
>>
>>
>>
>>

1
2
3
4
5
5

0
x

Figura 18:
F( x, y) =

y
x
z
i j+ k
z
z
4

5
4
z

3
2

1
2
2

1
1

0
0
1
y

1
2

Superficies Paramtricas
Campo vectorial gradiente
El vector gradiente de una funcin de tres variables es


f ( x, y, z) = f x ( x, y, z), f y ( x, y, z), f z ( x, y, z)
Para funciones de dos variables, el vector gradiente en un punto
P0 = ( x0 , y0 , z0 ) es ortogonal a las superficies de nivel S de f a travs
del punto P0 . Esto significa que si r(t) es cualquier curva suave sobre
la superficie S con r(0) = P0 , entonces el vector tangente a la curva
en t = 0, el cual es r0 (0), es ortogonal a f ( x0 , y0 , z0 ).

Ejemplo 20. Sea f ( x, y, z) = z + 41 y2 x2 . Las superficies de nivel
de f son paraboloide hiperblicos. El campo vectorial gradiente es
f ( x, y, z) = h x/2, y/2, 1i.
Una forma de mostrar esto vectores gradientes atravesando una
porcin de las superficies de nivel f ( x, y, z) = 0 que hace sobre el
mismo cuadrado 0 x, y 2. La superficie de nivel f = 0 tiene como
ecuacin z = ( x2 y2 )/4. Hacemos
1
2
3
4
5
6
7
8
9
10

>> [X,Y]=meshgrid(0:0.05:2);
>> Z=.25*(X.^2-Y.^2);
>> surf(X,Y,Z);
>> shading interp; colormap gray
% El gradiente
>> [X,Y]=meshgrid(0:0.4:2);
>> U=-X/2;V=Y/2;W=1+0*X;
>> Z=.25*(X.^2-Y.^2);
>> hold on;
>> quiver3(X,Y,Z,U,V,W)

Representacin de superficies paramtricas


Una superficie S puede se representada por una funcin vectorial
r(u, v) = h x (u, v), y(u, v), z(u, v)i
donde (u, v) D en el plano.

20

xyoby chvez pacheco

Ejemplo 21. Cilindro

1
2
3
4
5
6
7

>>
>>
>>
>>
>>
>>
>>

x (, v)

= a cos( )

y(, v)

= a sen( )

z(, v)

= v

u=linspace(0,2*pi,21);
v=linspace(-pi/2,pi/2,21);
[U,V]=meshgrid(u,v);
a=1;
X=a*cos(U); Y=a*sin(U); Z=V;
surf(X,Y,Z)
colormap gray

Figura 19:
2

Ejemplo 22. Para parametrizar una esfera de radio tenemos las


siguientes ecuaciones paramtricas

x (, )

= sen cos

y(, )

= sen sen ,

z(, )

= cos

2
1
0.5

1
0.5

0.5

0.5
1

x 2 + y2 + z2 = 2
1
2
3
4
5
6
7
8
9

>>
>>
>>
>>
>>
>>
>>
>>
>>

a=1;
theta=linspace(0,2*pi,41);
phi=linspace(0,pi,31);
[THETA,PHI]=meshgrid(theta,phi);
X=a*sin(PHI).*cos(THETA);
Y=a*sin(PHI).*sin(THETA);
Z=a*cos(PHI);
surf(X,Y,Z);
colormap gray

Figura 20: Esfera de radio = 2


1

0.5

0.5

1
1
0.5

1
0.5

0.5

0.5
1

matlab y clculo

Ejemplo 23. Dibujar la superficie


r(u, v) = h(2 + sen v) cos u, (2 + sen v) sen u, y + cos vi
donde 0 u 4 y 0 v 2.
1
2
3
4
5
6
7
8

>>
>>
>>
>>
>>
>>
>>
>>

u=linspace(0,4*pi,41);
v=linspace(0,2*pi,21);
[U,V]=meshgrid(u,v);
X=(2+sin(V)).*cos(U);
Y=(2+sin(V)).*sin(U);
Z=U+cos(V);
surf(X,Y,Z)
colormap gray

Figura 21: Tobogn


14
12
10
8
6
4
2
0
2
5

4
5

21

Ecuaciones diferenciales
Solucin analtica
Ecuaciones de primer orden
Supongamos que deseamos resolver la ED de primer orden
y0 = xy
En MATLAB usamos la funcin dsolve(). La entrada y salida para la
solucin de este problema en MATLAB es dada por
1
2

>>y = dsolve(Dy = y*x, x)


y =
C2*exp(x^2/2)

Si adicionalmente incluimos condiciones iniciales y(1) = 1, y posteriormente graficarlo tendramos


1
2
3
4
5
6

>>y = dsolve(Dy = y*x, y(1)=1, x)


y =
exp(-1/2)*exp(x^2/2)
>> x=linspace(0,1,20);
>> z=eval(vectorize(y));
>> plot(x,z)

Figura 22: Solucin de y0


xy, y(1) = 1

1
0.95
0.9
0.85

Ecuaciones diferenciales de segundo orden y superiores

0.8
0.75
0.7

Supongamos que deseamos solucionar y grficas la solucin de la


ecuacin diferencial de segundo orden
y00 + 8y0 + 2y = cos( x ), y(0) = 0, y0 (0) = 1
el siguiente cdigo es suficiente
1
2
3
4
5
6
7
8

>> ecn2=D2y+8*Dy+2*y=cos(x);
>> cin=y(0)=0, Dy(0)=1;
>> y=dsolve(ecn2,cin,x);
y =
(14^(1/2)*exp(4*x - 14^(1/2)*x)*exp(x*(14^(1/2) - 4))*
(sin(x) - cos(x)*(14^(1/2)- 4)))/(28*((14^(1/2) - 4)^2 + 1))
- (14^(1/2)*exp(4*x + 14^(1/2)*x)*exp(-x*(14^(1/2) + 4))*(sin(x) +
cos(x)*(14^(1/2) + 4)))/(28*((14^(1/2) + 4)^2 + 1)) (14^(1/2)*exp(-x*(14^(1/2) + 4))*(7*14^(1/2) + 27))/(28*(8*14^(1/2) + 31))
-

0.65

0.2

0.4

0.6

0.8

24

10
11
12
13

xyoby chvez pacheco

(14^(1/2)*exp(x*(14^(1/2) - 4))*(393*14^(1/2) + 1531))/(28*(8*14^(1/2)


-31)*
(8*14^(1/2) + 31)^2)
>> x=linspace(0,10,1000);
>> z=eval(vectorize(y));
>> plot(x,z)

Figura 23: Solucin de y00 + 8y0 +


2y = cos( x ), y(0) = 0, y0 (0) = 1
0.25

0.2

0.15

0.1

Sistema de ecuaciones diferenciales

0.05

Si deseas encontrar la solucin simblica de un sistema de ecuaciones diferenciales podemos usar nuevamente dsolve.

0.05

0.1

10

Ejemplo 24. Por ejemplo para resolver el sistema

dx = 2x y
dt
dy = 3x 2y
dt

podemos usar
1
2
3
4
5

>>[x,y] = dsolve(Dx = 2*x - y, Dy = 3*x - 2*y, t)


x =
(exp(-t)*(C2 + 3*C1*exp(2*t)))/3
y =
exp(-t)*(C2 + C1*exp(2*t))

Si deseas incluir las condiciones iniciales x (0) = 1, y(0) = 2


usamos
1

2
3
4
5
6
7
8
9

>>[x,y] = dsolve(Dx = 2*x - y, Dy = 3*x - 2*y, x(0) = 1, y(0) = 2,


t)
x =
(exp(-t)*((3*exp(2*t))/2 + 3/2))/3
y =
exp(-t)*(exp(2*t)/2 + 3/2)
>> t=linspace(0,2,200);
>> xx=eval(vectorize(x));
>> yy=eval(vectorize(y));
>> plot(t,xx,t,yy)

Figura 24: Solucin de sistema


ED
4
x(t)
y(t)
3.5

2.5

Mtodos Numricos

1.5

Ecuaciones de primer orden con funciones en linea


Ejemplo 25. Solucionar numricamente la ED de primer orden
dy
= xy2 + y, y(0) = 1
dx
en el intervalos x [0, ,5].
Para ello llevamos a la forma y0 = f ( x, y), teniendo que definir la
funcin f ( x, y) de la siguiente manera

0.5

1.5

matlab y clculo

1
2
3
4

25

>>f=inline(x*y^2+y)
f =
Inline function:
f(x,y) = x*y^2+y

Luego usamos el solver de MATLAB ode45 cuya sintaxis es


ode45(funcin, dominio, condicin inicial)
Es decir,
1
2

dy

>> [x,y]=ode45(f,[0,.5],1);
>> plot(x,y)

xy2 +

Figura 25: dx
y, y(0) = 1
2
1.9
1.8
1.7
1.6
1.5

Sistema de ED

1.4
1.3

Ejemplo 26. Teniendo el problema de mezclas mostrado en la figura

1.2
1.1
1

0.1

0.2

0.3

0.4

0.5

cuyo modelo en un sistema de ecuaciones diferenciales

dx1 = 2 x + 1 x
25 1
50 2
dt
,
dx1 = 2 x1 2 x2
dt

25

25

lo resolvemos creamos una archivo yprime.m que contenga la siguiente instruccin


1
2
3

function dydt=yprime(t,x)
dydt(1,1)=-2*x(1)/25+ x(2)/50;
dydt(2,1)= 2*x(1)/25- 2*x(2)/25;

y luego usando la orden ode45 para resolver ecuaciones diferenciales usando el mtodo de Runke Kutta 4-5 y considerando las
condiciones iniciales
x1 (0) = 25, x2 (0) = 0
hacemos
1
2

>> [t, y]=ode45(@yprime,[0 100],[25 0]);


>> plot(t,y(:,1),t,y(:,2))

Figura 26: Solucin de la ED


25
x1(t)
x2(t)
20

15

10

20

40

60

80

100

26

xyoby chvez pacheco

Ejemplo 27. Considere el sistema

dx
dt
dy
dt

= 2x x2 xy
= xy y

con condiciones iniciales x (0) = 1 y y(0) = 2. Para poder solucionarlo en el intervalo t [0, 20] hacemos primero, crear una funcin
inline del lado derecho de la ecuacin para que sea una funcin de
la variable dependiente de t, y las funciones desconocidas x e y que
son representadas por y(1) y y(2) respectivamente. Luego usando la
orden ode45 tenemos
1
2

>> f = inline([2*y(1)-y(1)^2-y(1)*y(2); y(1)*y(2)-y(2)],t,y);


>> [t,y]=ode45(f,[0,20],[1;2])

que crea una tabla de valores para t, x e y para 0 t 20 empezando en t = 0, x = 1 y y = 2. Observe que y es un vector cuyas entradas
son los valores y(1) y y(2).
El comando
1

>>ode45(f,[0,20],[1;2])

Figura 27: Solucin de la ED


2

grafica las dos soluciones en el mismo figura como funciones de t


(Ver figura)

1.5

Solucin de ED de orden superior

Considere la siguiente ecuacin diferencial de segundo orden con


coeficientes constantes a, b, c y la funcin generadora f (t)
a

d2 y
dy
+ b + cy = f (t)
2
dx
dx

(1)

Para la solucin aproximada se debe llevar la ecuacin (1) a la forma


d2 y
1
=
a
dx2

dy
f (t) b
cy
dx

redefiniendo en dos nuevas variables x1 = y, x2 = y0 y as nos


permite escribir la ecuacin en la forma de un sistema de ecuaciones
diferenciales

dx1 = x
2
dt
dx2 = 1 ( f (t) b x2 c x1 )
dt

o en la forma matricial
"
# "
x 1
=
x 2

x2
1
a ( f ( t ) b x2 c x1 )

0.5

10

15

20

matlab y clculo

27

Pndulo no lineal
Ejemplo 28. Para un pndulo no lineal mostrado en la figura

La ecuacin de movimiento es
d2
g
+ sen = 0
2
l
dt
g

y haciendo w2 = l tenemos las siguientes instrucciones para el caso


cuando w2 = 1, i.e., l = g
1
2
3
4
5
6

function dydt=pend(t,y)
G=9.8; L=9.8;
dydt=zeros(2,1);
dydt(1)=y(2);
dydt(2)=-(G/L)*sin(y(1));
end

Junto con dos condiciones iniciales para (0) = 0,5, 0 (0) = 2 y


(0) = 0,5, 0 (0) = 0,5 tenemos
1
2
3
4
5
6
7
8
9
10

t=[0 4*pi];
y0=[0.5 2];
[t,Y]=ode45(@pend,t,y0);
a=plot(t,Y(:,1),.-r)
hold on
y0=[0.5 0.5];
[t,Y]=ode45(@pend,t,y0);
b=plot(t,Y(:,1),--b)
grid on
legend([a,b],\theta(0)=0.5,\theta\prime(0)=2 ,\theta(0)=0.5,\theta\
prime(0)=0.5)

Figura 28: Solucin de la ED


16
(0)=0.5,(0)=2
(0)=0.5,(0)=0.5

14
12
10
8
6

Una simulacin

4
2
0

1
2
3
4
5
6

function eng80_june_03_2013()
clear all; close all;
t_start =0 ;
t_end
=6 ;
time_span = t_start:0.001:t_end;

10

12

14

28

7
8

xyoby chvez pacheco

k=40; % constante de elasticidad N/m


m=5; % masa Kg

9
10

cr=2*sqrt(k*m); % amortiguamiento crtico

11
12

fprintf (coeficeinte de amortiguamiento crtico es %f\n, cr);

13
14
15

pos_inicial = 0 ; vel_inicial = 0 ;
x0 = [pos_inicial, vel_inicial];

16
17
18
19
20
21
22
23
24
25

% inicio de simulacin, cambio de amortiguamiento.


for c=0:0.5: cr+0.1*cr
[t,x] = ode45(@rhs, time_span, x0);
plot(t,x(:,1));
title(sprintf(coeficeinte de amortiguamiento crtico es %f\n, c));
ylim([-.1, .1]); % valores de y entre -0.1 a 0.5
drawnow;
pause(0.1);
end

26
27

grid

28
29
30
31
32
33
34
35
36
37

%*****************************************
% soluciona
m x + c x +k x = f(t)
%*****************************************
function xdot=rhs(t,x)
xdot = zeros(2,1);
xdot(1)= x(2);
xdot(2)= - (c/m)*x(2)-(k/m)*x(1)+ force(t)/m;
end

38

function y=force(t)
y=sin(10*t);
end

39
40
41
42

end

Transformadas de Laplace
El clculo de la transformada de Laplace F (s) de una funcin
f (t) es fcil en Matlab. Primero especifica las variables t y s como
simblicos.
1

>> syms t s

Defina la funcin f (t) por ejemplo


f (t) = 1,25 + 3,5te2t + 1,2e2t
1
2
3
4
5
6
7
8

>> syms t s
>> f=-1.25+3.5*t*exp(-2*t)+1.25*exp(-2*t);
>> F=laplace(f,t,s)
F = -5/4/s+7/2/(s+2)^2+5/4/(s+2)
>> simplify(F)
ans = (s-5)/s/(s+2)^2
>> pretty(ans)
s - 5

matlab y clculo

9
10

---------2 s (s + 2)

Que corresponde a la funcin


F (s) =

s5
s ( s + 2)2

Alternativamente podemos poner


1

>>F2=laplace(-1.25+3.5*t*exp(-2*t)+1.25*exp(-2*t))

Transformada inversa
El comando que se usa es ilaplace. De nuevo tenemos que definir
los smbolos t y s. Por ejemplo calculemos la inversa de la funcin
anterior
s5
F (s) =
s ( s + 2)2
1
2
3
4
5
6
7
8
9
10

>> syms t s
>> F = (s-5)/s/(s+2)^2;
>> ilaplace(F)
ans = -5/4+(7/2*t+5/4)*exp(-2*t)
>> simplify(ans)
ans = -5/4+7/2*t*exp(-2*t)+5/4*exp(-2*t)
>>pretty(ans)
5 exp(-2 t)
7 t exp(-2 t)
----------- + ------------- - 5/4
4
2

o alternativamente
1

>> ilaplace((s-5)/(s*(s+2)^2))

Fracciones parciales en MATLAB


La funcin residue convierte un cociente polinomial en la representacin de polo-residuo y retorna un polinomio
1

>> [r,p,k]=residue(B,A)

encuentra los residuos, polos y trminos de la expansin en fracciones parciales de la razn de dos polinomios B(s)/A(s). El cociente de
los polinomios B(s) y A(s) es representado por
B(s)
r1
r2
rn
=
+
++
+ ks
A(s)
s p1
s p2
s pn
donde r = (r1 , r2 , , rn ) T es el vector columna de los residuos,
p = ( p1 , p2 , , pn ) T es el vector columna de los polos ( races del
denominador), y k es un vector fila de los trminos directos ( si el grado del numerador es menor que el grado del denominador, entonces

29

30

xyoby chvez pacheco

k ser un vector nulo). El comando residue requiere dos vectores


de entrada: un los coeficientes del numerador y otro que sea los coeficientes del denominador. Los coeficientes deben estar en forma
descendente de las potencias de s.
Ejemplo 29. Considere la siguiente funcin
Y (s) =

5s 1
s3 3s 2

Para encontrar la descomposicin en fracciones parciales de Y (s)


debemos ingresar los coeficientes de numerador y del denominador
1
2

>> B = [5,-1]; % coefficients of the numerator in decreasing order


>> A = [1,0,-3,-2]; % coefficients of the denominator in decreasing order

Resultado en
1
2
3
4
5
6
7
8
9
10
11

>> [r, p, k] = residue(B,A)


r =
1.0000
-1.0000
2.0000
p =
2.0000
-1.0000
-1.0000
k =
[]

Asi la descomposicin de Y (s) es


Y (s) =

1
1
2

+
s 2 s + 1 ( s + 1)2

El ltimo trmino de la descomposicin en fracciones parciales sigue


del hecho que el polo es 1,0000 es repetido.

Solucionando una EDO usando MATLAB y trasformada inversa de Laplace


Ejemplo 30. Un sistema de masa resorte es modelado por la ecuacin
diferencial
y00 + 4y = g(t), y(0) = y0 (0) = 0

8t, 0 t < 5
donde g(t) =
.
40, t 5
1. Use la MATLAB para encontrar la trasformada de laplace de
trmino g(t) y su grfica
Veamos: Tenemos que g(t) = 8t + (40 8t) U (t 5).
Podemos graficar la funcin g(t) (ver figura (29))y encontrar us
transformada de Laplace usando los siguientes comandos de
MATLAB

matlab y clculo

1
2
3
4
5
6

>> syms s t
>> g=8*t+(40-8*t)*heaviside(t-5)
g = 8*t - heaviside(t - 5)*(8*t - 40)
>> ezplot(g,[0,10])
>> G= laplace(g)
G =
8/s^2 - (8*exp(-5*s))/s^2

31

Figura 29: Grfica de g(t)


8 t heaviside(t 5) (8 t 40)
40
35

 8
As la trasformada de Laplace de g(t) es G (s) = 1 e
s2
2. Aplicando la transformada de Laplace a ambos lados de la ecuacin diferencial y reemplazando las condiciones iniciales tenemos


8
Y (s) = 1 e5s 2 2
s ( s + 4)


5s

donde Y (s) es la trasnformada de Laplace de y(t). Sea


F (s) =

8
+ 4)

s2 ( s2

a) Usamos el comando residue para encontrar las fracciones


parciales de la descomposicin de F y usarlas para determinar
la trasnformada Laplace inversa de Y (s).
8
Note que F (s) = 4
s + 4s2
1

3
4
5
6
7
8
9
10
11
12
13

>> num=[8]; % Coeficientes del numerador en orden


decrecientecoefficients of the numerator in decreasing order
>> den=[1,0,4,0,0]; % coeficientes del numerador en orden
decreciente
>> [r,p,k]=residue(num,den)
r =
0 + 0.5000i
0 - 0.5000i
0 2.0000
p =
0 + 2.0000i
0 - 2.0000i
0 0
k =
[]

Luego
0,5i
0,5i
2

+
s 2i s + 2i s2
y combinando el trmino complejo obtenemos
F (s) =

F (s) =

2
2
+
s2 + 4 s2

Usando una tabla de trasformadas de Laplace, encontramos que


la transformada de Laplace de F es
f (t) = 2t sin(2t)
y la trasformada de Laplace inversa de Y (s) es
y ( t ) = f ( t ) f ( t 5) U ( t 5)

30
25
20
15
10
5
0
0

6
t

10

32

xyoby chvez pacheco

8
en MATLAB, y entonces
+ 4)
ingrese diff(int(F)). Cul es la salida?

b) Ingrese la funcin F (s) =

s2 ( s2

Solucin.
1
2
3
4
5
6
7
8
9
10

>> F= 8/(s^2*(s^2+4));
>> diff(int(F))
ans =
2/s^2 - 1/(2*(s^2/4 + 1))
>> pretty(ans)
2
1
-- - -----------2
/ 2
\
s
| s
|
2 | -- + 1 |
\ 4
/

2
2

, el cual
2
s
4 + s2
es la descomposicion en fracciones parciales en la parte a).
Simplificando el segundo trmino tenemos

c) Encontrar la trasformada de Laplace inversa de Y (s) use el


comando ilaplace.
Solucin.1
2
3
4

>> Y = (1-exp(-5*s))*8/(s^2*(s^2+4));
>> y = ilaplace(Y)
y =
2*t - sin(2*t) + 8*heaviside(t - 5)*(sin(2*t - 10)/8 - t/4 + 5/4)

3. Escriba la solucin y(t) encontrada en la parte b) como una funcin por partes. Esta solucin es una funcin oscilante alrededor
de la recta inclinada en la parte 0 t 5 y alrededor de la recta
horizontal en 5 < t. Compara la grfica de la funcin solucin
con la grfica del trmino de forzamiento g(t) de la parte a) Tiene
sentido la grafica en el contexto de un sistema de masa resorte?
Solucin.- La solucin de y(t) puede ser escrito por una funcin
por partes como

2t sin(2t)
0t5
y(t) =
10 sen(2t) + sen(2(t 5)) t > 5
As y(t) es una funcin oscilante alrededor de la linea y = 2t para
0 t 5 y alrededor de la recta y = 10 para t > 5.
Podemos combinar estas dos entradas en una simple funcin
h(t) = 2t + U (t 5)(10 2t). Graficaremos la solucin y(t) usando
el comando explot y la funcin h(t) con lineas punteadas. La
salida se muestra en la figura (30)
1
2
3

>> p1 = ezplot(y,[0,10]);
>> hold on
>> h = 2*t + heaviside(t-5)*(10-2*t);

matlab y clculo

4
5
6
7
8
9

>>
>>
>>
>>
>>
>>

p2 = ezplot(h,[0,10]);
set(p2, Color,red,LineStyle,--)
axis([0,10,0,12])
title()
legend(solution,lines y= 2t and y = 10,2)
hold off

33

Figura 30: Solucin de y00


+
0
4y = g(t), y(0) = 0, y (0) = 0
12
solution
lines y= 2t and y = 10
10

Es ms fciil general la grfica con diferentes estilos de linea usando el comando plot. Las siguientes instrucciones producen la
misma figura de la lista de intrucciones anteriores.
1
2
3
4
5
6

>>t = 0:0.1:10;
>> y = eval(vectorize(y));
>> h = 2.*t + heaviside(t-5).*(10-2*t);
% escribimos una formula para h que funciona con vectores
>> plot(t,y,b-,t,h,r--)
>> legend(solucin,lines y= 2t and y = 10,2)

Comparando las figuras (29) y (30) de las parte a) y c) vemos que


la grfica de la solucin tiene sentido en el contexto de una sistema masa resorte. El trmino de forzamiento que incrementa
linealmente los primeros 5 segundos permite elevar el equilibrio
linealmente. Una vez que el trmino de forzamiento se estabiliza
en un valor constante, la masa se mantiene oscilando alrededor
del nuevo equilibrio con una amplitud constante, puesto que el
sistema no es amortiguado.

MATHEMATICA
Para la solucin en series usando Wolfram
Series[e^x,{x,0,10}]

6
t

10

Bibliografa
1. Clculo integral y aplicaciones con Matlab. Ana Mara Vieites
Rodrguez

You might also like