matlab para edo 1

35
XYOBY CHÁVEZ PACHECO MATLAB Y CÁLCULO UNIVERSIDAD DE INGENIERÍA Y TECNOLOGÍA

Upload: hector-levano-gamboa

Post on 25-Sep-2015

55 views

Category:

Documents


7 download

DESCRIPTION

como usar matlab para Ecuaciones Diferenciales

TRANSCRIPT

  • XYOBY CHVE Z PACHECO

    MAT L A B Y C LCU LO

    UN I V ERS I DAD DE I NGEN I E R A Y T ECNO LOG A

  • 2 xyoby chvez pacheco

  • ndice general

    Introduccin 5

    Curvas 7

    Vectores, rectas y planos 11

    Funciones de dos variables 13

    Campos vectoriales 17

    Superficies Paramtricas 19

    Ecuaciones diferenciales 23

    Bibliografa 35

  • Introduccin

    Matlab es una herramienta que permite una amplia gama de op-ciones para graficar en dos o tres dimensiones, como tambin permi-te hacer curvas, trabajar con campos vectoriales.

    Creando scripts

    Matlab a travs de la linea de comando va ejecutando ordenes. Es-to resulta simple para problemas sencillos, sin embargo para cuandose tiene muchos ordenes y en forma repetitiva, esta forma es muytediosa. Para solucionar este problema Matlab permite crear archivosde texto llamados script o archivos M para guardar estas ordenes ypoder 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 escribirnuestro conjunto de ordenes podemos guardar el archivo para pos-teriormente editarlo y modificarlo, ejecutarlo, ... Podemos abrir unarchivo M previamente creado con la opcin File / Open ... o con laorden open archivo.m desde la lnea de comandos. Podemos ejecutarun archivo M con la opcin File / Run Script ... o directamente con laorden archivo desde la lnea de comandos.

    Seteando archivos

    Para poder usar estos archivos en el Matlab, por ejemplo losarchivos del libro A Matlab Companion for Multivariable Calculushttp://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 creaconveniente. Llammosla C:/matlab/cooper

    2. En la barra de herramientas del men de matlab elija la ventanaFile y luego la opcin Set Path (Setear ruta) como se muestra en lafiguras siguientes

  • 6 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 apunto; es decir, calcula los puntos (x, f (x)), para los valores de x quese le indique y representa dichos puntos unidos por un segmento.Por ello, se empieza estableciendo la matriz fila x cuyos elementosson los valores de x para los que se calcular el valor correspondientede f (x). Si la distancia entre dos valores consecutivos de x es con-venientemente pequea, el aspecto final ser el de una verdaderacurva 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.

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

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

    0 2 4 6 8 100

    0.1

    0.2

    0.3

    0.4

    0.5

    0.6

    0.7

    plot

    Para crear otros grficos bidimensionales tambin se usa plot(x, y),donde los argumentos x e y son vectores con el mismo nmero deelementos.

    Ejemplo 1. Para conseguir la misma grfica de la figura 1 hacemos

    1 >> x=0:0.1:10;

    2 >> y=x.^2.*exp(-x);

    3 >> plot(x,y)

    Ejemplo 2. La grfica del cicloide x = r ( sen ) , y = r (1 cos ), [0, 2pi] cuando r = 1.1 >> theta=0:0.1:2*pi;

    2 >> r=1;

    3 >> x=r*(theta-sin(theta));

    4 >> y=r*(1-cos(theta));

    5 >> plot(x,y)

    obtenindose la figura 2

    Figura 2: Cicloide

    0 1 2 3 4 5 6

    1

    0.5

    0

    0.5

    1

    1.5

    2

    2.5

    3

  • 8 xyoby chvez pacheco

    plot3

    En el espacio de tres dimensiones la forma ms sencilla de crearun grfico 3-D es mediante la funcin plot3, cuya sintaxis es bastantesimilar a la de la funcin plot.

    Ejemplo 3. Veamos como se grafica la hlice paramtrica x = cos(t) ,y = sen(t), z = t t [0, 2pi] mostrada en la figura (3)

    Figura 3: Hlice x = cos(t) , y =sen(t), z = t t [0, 2pi]

    0.500.51

    0.50

    0.5

    0

    1

    2

    3

    4

    5

    6

    1 >> t=0:0.1:2*pi;

    2 >> x=cos(t); y=sin(t); z=t ; plot3(x,y,z);

    3 >> axis equal

    4 >> grid

    El comando x=linspace(a,b,n) crea el vector x de n elementosen el cual el primer elemento es a y el ltimo es b, todos igualmenteespaciados. 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, paragraficar 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, qui-

    ver, comet, etc.

    Curvas en el plano

    Empezamos graficando funciones reales continuas definidas enun intervalo. Si f es una funcin real de variable real, su grfica es elconjunto Gr( f ) = (x; y)/y = f (x), x Dom( f ).

    Ejemplo 4.

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

    2 >> y=exp(-x); % imgenes de las componentes de x

    3 >> plot(x,y),

    4 >> grid on,

    5 >> title(funcin exponencial) % grfica de la curva.

    o equivalentemente

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

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

    2 1 0 1 2 30

    1

    2

    3

    4

    5

    6

    7

    8

  • matlab y clculo 9

    Ejemplo 5. Funciones por partes

    f (x) =

    x, x < 0

    x2, 0 x < 21 x, 2 x

    creamos un archivo script con las siguientes instrucciones

    1 function y = f(x)

    2 y1 = x.*(x < 0);

    3 y2 = x.^2.*( (x < 2) - (x < 0) );

    4 y3 = (1-x).*(1 - (x < 2));

    5 y = y1 + y2 + y3;

    lo guardamos con el nombre func1_partes1.m y lo ejecutamos (verfigura)

    1 >> x=-2:0.01:4;

    2 >> y=func1_partes1(x);

    3 >> plot(x,y)

    4 >> grid

    Figura 5:

    2 1 0 1 2 3 43

    2

    1

    0

    1

    2

    3

    4

    Otra alternativa para graficar es seguir las siguientes ordenes

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

    2 >> y = (x).*(x grid

    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, 2pi]1 >> theta=linspace(0,2*pi,50);

    2 >> r=1+cos(theta);

    3 >> polar(theta,r);

    4 >> grid

    5 >> title(Grfica del cardioide r=1+cos\theta )

    Figura 6: r = 1 + cos , [0, 2pi]

    0.5

    1

    1.5

    2

    30

    210

    60

    240

    90

    270

    120

    300

    150

    330

    180 0

    Grfica del cardioide r=1+cos

    Aplicacin

    Problema 47 seccin 10.1

    1 >> t=-2:0.1:2;

    2 >> c=-1;

    3 >> x=t.^2;

    4 >> y=t.^3-c*t;

    5 >> plot(x,y)

    6 >> grid

  • 10 xyoby chvez pacheco

    7 >> hold on % mantiene la grfica anterior para superponer la siguiente

    8 >> c=0

    9 >> y=t.^3-c*t;

    10 >> plot(x,y,g) % color green

    11 >> c=1

    12 >> y=t.^3-c*t;

    13 >> plot(x,y,r)

    14 >> c=2

    15 >> y=t.^3-c*t;

    16 >> plot(x,y,c)

    17 >> hold off % cancela la opcin hold on

    Figura 7:

    0 0.5 1 1.5 2 2.5 3 3.5 410

    8

    6

    4

    2

    0

    2

    4

    6

    8

    10

    c=1c=0c=1c=2

    Ejemplo 7. Vectores tangentes a la semicircunferencia

    C =

    x(t) = cos ty(t) = sen t t [0, 1]en los 10 puntos de la curva

    1 >> t=linspace(0,pi,30);

    2 >> plot(cos(t),sin(t));

    3 >> hold on;

    4 >> t=linspace(0,pi,10);

    5 >> quiver(cos(t),sin(t),-sin(t),cos(t));

    6 >> grid

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

    1.5 1 0.5 0 0.5 1 1.50.8

    0.6

    0.4

    0.2

    0

    0.2

    0.4

    0.6

    0.8

    1

    1.2

    Ejemplo 8. Determine la tangente a la curvax(t) = (t + 1)3

    y(t) = (t + 2)2

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

    1 >> syms t;

    2 >> x=(t+1)^3; y=(t+2)^2;

    3 >> P=[1 4]; % punto de paso

    La pendiente de la recta tangente en t esy(t)x(t)

    t=0

    .

    1 >> yp=diff(y,t)/diff(x,t) % calcula la y/x

    2 >> m=subs(yp,0); % evalue en t=0

    Ploteamos la funcin con la recta tangente

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

    2 >> plot(x,y,k), hold on %curva

    3 >> x=-1:0.01:8; y=m*(x-1)+4;

    4 >> plot(x,y,k), hold on %recta tangente

    5 >> gtext(punto de tangencia) % Haga click con el mouse en el punto de

    tangencia

    6 >> title(Curva y tangente)

    7 >> hold off

    Figura 9:

    1 0 1 2 3 4 5 6 7 80

    2

    4

    6

    8

    10

    12

    14

    Punto de tangencia

    Curva y tangente

  • Vectores, rectas y planos

    En este capitulo estudiaremos algunos elementos de la geometravectorial.

    Para representar vectores en Matlab nicamente colocamos lascomponentes en un arreglo

    Ejemplo 9. La representacin de los vectores a = 1, 2 y b = 3, 5, 6sera

    1 >> a=[1 2]

    2 >> b=[3 5 6]

    mfile arrow, arrow3

    Los archivos arrow.m y arrow3.m son funciones que pueden mos-trar los vectores en dos y tres dimensiones, respectivamente.

    Ejemplo 10. Deseamos mostrar los vectores v = 1, 2 y w = 2, 2,ambos tomado el punto P0(2, 6) como punto de inicio y finalmentesumarlos v+w. Usamos los siguientes comandos

    1 >> P0 = [2 6];

    2 >> v = [1 2];

    3 >> arrow(P0,v)

    4 >> hold on

    5 >> w = [-2 2];

    6 >> arrow(P0,w)

    7 >> arrow(P0,v+w,r)

    8 >> axis equal

    Figura 10:

    1 0 1 2 3 46

    6.5

    7

    7.5

    8

    8.5

    9

    9.5

    10

    Producto escalar y vectorial

    Usando los comandos dot(v,w) y cross(v,w) para calcular v w yvw.Ejemplo 11. Determinar el producto escalar y vectorial de los vecto-res a = 1, 2, 4 y b = 3, 2, 11 >> a=[1,2,4];

    2 >> b=[3,2,1];

    3 >> dot(a,b)

  • 12 xyoby chvez pacheco

    4 ans =

    5 11

    6 >> cross(a,b)

    7 ans =

    8 -6 11 -4

    Ecuacin de la recta y planos

    Si v = a, b, c es el vector direccin de la recta que pasa por elpunto P0 = (x0, y0, z0) entonces la ecuacin vectorial de la recta es

    r = r0+t v

    donde r = x, y, z y r0 = x0, y0, z0 son los vectores posicin de lospuntos 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 esparalela al vector i+ 4j k.1 >> v=[1 4 -2];

    2 >> a=v(1);b=v(2);c=v(3);

    3 >> x0=5;y0=1;z0=3;

    4 >> t=-1:0.01:1; % parmetro

    5 >> x=x0+a*t; y=y0+b*t; z=z0+c*t;

    6 >> plot3(x,y,z)

    7 >> grid; box;view(150,36)

    8 >> xlabel(x);ylabel(y);zlabel(z);

    y podemos aadir el vector direccin en el punto P0 usando elarchivo arrow3.m escribiendo

    Figura 11:

    0

    0.5

    1

    1.5

    21

    0.50

    0.51

    0.5

    0

    0.5

    yx

    z

  • Funciones de dos variables

    Definiendo funciones de varias variables

    Las funciones de varias variables pueden definirse usando archi-vos mfile y funciones inline del mismo modo que las funciones deuna variable.

    Ejemplo 13. Sea f (x, y) = 3x + yex2y2 esta funcin puede ser

    definida en un archivo mfile

    1 function z=f(x,y)

    2 %comentario para la funcin

    3 z=3*x+y.*exp(-x.^2-y.^2);

    para evaluar la funcin tenemos en la linea de comandos

    1 >> f1(1,4)

    2 ans =

    3 3.0000

    Cuando definimos f como una funcin en linea, debemos indicarque f es una funcin de las variables listadas entre comillas

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

    2 >> feval(f,1,4)

    3 ans =

    4 3.0000

    Grfica de funciones de dos variables

    La forma ms sencilla para graficar funciones de dos variables esla siguiente

    Ejemplo 14. Graficar la funcin f (x, y) = ex2y2 de dominio D ={(x, y) R2/ 2 x 2, 2 y 2}

    1 >> x=-2:0.1:2;

    2 >> y=x;

    3 >> [X,Y]=meshgrid(x,y);

    4 >> Z=exp(-X.^2-Y.^2);

    5 >> surf(X,Y,Z)

    6 >> xlabel(x); ylabel(y); zlabel(z);

    7 >> title(e^{-x^2-y^2})

  • 14 xyoby chvez pacheco

    Figura 12: f (x, y) = ex2y2

    21

    01

    2

    21

    01

    20

    0.2

    0.4

    0.6

    0.8

    1

    x

    ex2y2

    y

    z

    Ejemplo 15. La misma grfica puede generarse usando inline

    1 >> f=inline(exp(-x.^2-y.^2),x,y);

    2 >> x=linspace(-2,2,20);

    3 >> y=linspace(-2,2,20);

    4 >> [X,Y]=meshgrid(x,y);

    5 >> Z=feval(f,X,Y);

    6 >> surfl(X,Y,Z);

    7 >> colormap(cool)

    8 >> axis([-2 2 -2 2 0 1])

    9 >> xlabel(x); ylabel(y); zlabel(z);grid off;

    10 >> title(e^{-x^2-y^2})

    Figura 13:

    21

    01

    2

    21

    01

    20

    0.2

    0.4

    0.6

    0.8

    1

    x

    ex2y2

    y

    z

    Ejemplo 16. Tratemos ahora de mostrar diferentes superficies usandovarias ventanas para ello usamos la funcin subplot

    1 subplot(2,2,1)

    2 x=-2:0.1:2;y=x;[X,Y]=meshgrid(x,y);

    3 Z=exp(1-X.^2-Y.^2);

    4 surfl(X,Y,Z)

    5 shading interp

    6 colormap gray

    7 xlabel(x);

    8 ylabel(y);

    9 zlabel(z);

    10 title(e^{1-x^2-y^2})

    11 view(31,34)

    12

    13 subplot(2,2,2)

    14 x=-2:0.1:2;y=x;[X,Y]=meshgrid(x,y);

    15 Z=exp(1-X.^2+Y.^2);

    16 surfl(X,Y,Z)

    17 shading interp

    18 colormap gray

    19 xlabel(x);

    20 ylabel(y);

    21 zlabel(z);

    22 title(e^{1-x^2+y^2})

    23 view(50,34)

    24

    25 subplot(2,2,3)

    26

    27 x=-5:0.1:5;y=-6:0.1:6;[X,Y]=meshgrid(x,y);

    28 Z=log(abs(Y-X.^2));

    29 surfl(X,Y,Z)

    30 shading interp

    31 colormap gray

    32 xlabel(x);

    33 ylabel(y);

    34 zlabel(z);

    35 title(f(x,y)=ln(|y-x^2|))

    36 view(53,60)

    37

    38 subplot(2,2,4)

  • matlab y clculo 15

    39 x=-2*pi:0.1:2*pi;y=-4:0.1:4;[X,Y]=meshgrid(x,y);

    40 Z=cos((X.^2+2*Y.^2)/4);

    Curvas de nivel

    Para una funcin de dos variables z = f (x, y) se define las curvasde nivel de f como la interseccin de la superficie generada por f ylos planos z = k, es decir

    Sc = {(x, y) : f (x, y) = k}

    Las curvas de nivel son las proyecciones de estas curvas sobre elplano x y.

    MATLAB tiene un comando que genera las curvas de nivel deuna funcin. Primer construimos una malla sobre un rectngulo con[X,Y]=meshgrid(x,y). El comando bsico es contour(X,Y,f(X,Y)) quedibuja lineas de contorno de f sobre el rectngulo en los colorescorrespondiente a colormap. El comando puede ser refinado devarias maneras contour(X,Y,f(X,Y),n,k) divide el intervalo[min f , max f ] en n + 1 subintervalos iguales. El ltimo argumen-to k indica que las curvas de nivel sern dibujadas de color ne-gro. Finalmente podemos elegir los valores de la curva de nivelsubstituyendo n por un vector de valores. Por ejemplo, si desea-mos dibujar las curvas de nivel para f (x, y) = 1,5, 2, 2,5, 4 , defi-

  • 16 xyoby chvez pacheco

    nimos el vector niveles=[1.5, 2, 2.5, 4]. Estos valores no ne-cesariamente son igualmente espaciados. Entonces ejecutamos concontour(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)) quegrafica 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 tienex2(

    k4

    )2 + y2(k)2 = 1

    1 >> x=-2:0.1:2;y=x;

    2 >> [X,Y]=meshgrid(x,y);

    3 >> Z=4*X.^2+Y.^2;

    4 >> surfl(X,Y,Z);grid off;

    5 >> pause

    6 >> contour(X,Y,Z)

    Figura 14: Curvas de nivel def (x, y) = 4x2 + y2

    2 1.5 1 0.5 0 0.5 1 1.5 22

    1.5

    1

    0.5

    0

    0.5

    1

    1.5

    2

    21

    01

    2

    21

    01

    20

    5

    10

    15

    20

    Usando otras opciones tenemos

    1 >> x=-2:0.1:2;y=x;

    2 >> [X,Y]=meshgrid(x,y);

    3 >> Z=4*X.^2+Y.^2;

    4 >> surfl(X,Y,Z);colormap copper;shading interp;grid off;

    5 >> alpha(0.9) % para ver transparente

    6 >> pause

    7 >> hold on

    8 >> contour3(X,Y,Z,20)

    9 >> hold off

    10 >> pause

    11 >> meshc(X,Y,Z)

    Figura 15: Curvas de nivel def (x, y) = 4x2 + y2

    21

    01

    2

    21

    01

    20

    5

    10

    15

    20

  • Campos vectoriales

    Para dibujar un campo vectorial se usa los comandos quiver yquiver3 como se muestra en el ejemplo siguiente

    Ejemplo 18. Dibujar el campo vectorial F(x, y) = y i + x j en laregin [5, 5] [5, 5]1 >> x=-5:1:5;

    2 >> y=x;

    3 >> [X,Y]=meshgrid(x,y);

    4 >> quiver(X,Y,-Y,X) % -Y,X corresponde a las componentes del campo

    Figura 16: F(x, y) = y i+ x j

    5 0 55

    4

    3

    2

    1

    0

    1

    2

    3

    4

    5

    x

    y

    Ejemplo 19. Dibujar el campo vectorial F(x, y) =ln(1+ y2

    ), ln

    (1+ x2

    )en la regin [5, 5] [5, 5]1 >> x=-5:1:5;

    2 >> y=x;

    3 >> [X,Y]=meshgrid(x,y);

    4 >> quiver(X,Y,log(1+Y.^2),log(1+X.^2))Figura 17: F(x, y) =

    ln(1+ y2

    ), ln

    (1+ x2

    )

    5 0 55

    4

    3

    2

    1

    0

    1

    2

    3

    4

    5

    x

    y

    Dibujar el campo vectorial F(x, y) =yzi x

    zj+

    z4k en la regin

    [2, 2] [2, 2] [1, 5]1 >> x=-2:1:2;

    2 >> y=x;

    3 >> z=1:1:5;

    4 >> [X,Y,Z]=meshgrid(x,y,z);

    5 >> quiver3(X,Y,Z,Y./Z,-X./Z,Z/4)

    Figura 18:

    F(x, y) =yzi x

    zj+

    z4k

    21

    01

    2

    2

    1

    0

    1

    2

    1

    2

    3

    4

    5

    xy

    z

  • Superficies Paramtricas

    Campo vectorial gradiente

    El vector gradiente de una funcin de tres variables es

    f (x, y, z) = fx(x, y, z), fy(x, y, z), fz(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 travsdel punto P0. Esto significa que si r(t) es cualquier curva suave sobrela superficie S con r(0) = P0 , entonces el vector tangente a la curvaen t = 0, el cual es r(0), es ortogonal a f (x0, y0, z0).Ejemplo 20. Sea f (x, y, z) = z + 14

    (y2 x2). Las superficies de nivel

    de f son paraboloide hiperblicos. El campo vectorial gradiente es f (x, y, z) = x/2, y/2, 1.

    Una forma de mostrar esto vectores gradientes atravesando unaporcin de las superficies de nivel f (x, y, z) = 0 que hace sobre elmismo cuadrado 0 x, y 2. La superficie de nivel f = 0 tiene comoecuacin z = (x2 y2)/4. Hacemos1 >> [X,Y]=meshgrid(0:0.05:2);

    2 >> Z=.25*(X.^2-Y.^2);

    3 >> surf(X,Y,Z);

    4 >> shading interp; colormap gray

    5 % El gradiente

    6 >> [X,Y]=meshgrid(0:0.4:2);

    7 >> U=-X/2;V=Y/2;W=1+0*X;

    8 >> Z=.25*(X.^2-Y.^2);

    9 >> hold on;

    10 >> quiver3(X,Y,Z,U,V,W)

    Representacin de superficies paramtricas

    Una superficie S puede se representada por una funcin vectorial

    r(u, v) = x(u, v), y(u, v), z(u, v)

    donde (u, v) D en el plano.

  • 20 xyoby chvez pacheco

    Ejemplo 21. Cilindro

    x(, v) = a cos()

    y(, v) = a sen()

    z(, v) = v

    1 >> u=linspace(0,2*pi,21);

    2 >> v=linspace(-pi/2,pi/2,21);

    3 >> [U,V]=meshgrid(u,v);

    4 >> a=1;

    5 >> X=a*cos(U); Y=a*sin(U); Z=V;

    6 >> surf(X,Y,Z)

    7 >> colormap gray

    Figura 19:

    10.5

    00.5

    1

    10.5

    00.5

    12

    1

    0

    1

    2

    Ejemplo 22. Para parametrizar una esfera de radio tenemos lassiguientes ecuaciones paramtricas

    x(, ) = sen cos

    y(, ) = sen sen ,

    z(, ) = cos

    x2 + y2 + z2 = 2

    1 >> a=1;

    2 >> theta=linspace(0,2*pi,41);

    3 >> phi=linspace(0,pi,31);

    4 >> [THETA,PHI]=meshgrid(theta,phi);

    5 >> X=a*sin(PHI).*cos(THETA);

    6 >> Y=a*sin(PHI).*sin(THETA);

    7 >> Z=a*cos(PHI);

    8 >> surf(X,Y,Z);

    9 >> colormap gray

    Figura 20: Esfera de radio = 2

    10.5

    00.5

    1

    10.5

    00.5

    11

    0.5

    0

    0.5

    1

  • matlab y clculo 21

    Ejemplo 23. Dibujar la superficie

    r(u, v) = (2+ sen v) cos u, (2+ sen v) sen u, y + cos v

    donde 0 u 4pi y 0 v 2pi.1 >> u=linspace(0,4*pi,41);

    2 >> v=linspace(0,2*pi,21);

    3 >> [U,V]=meshgrid(u,v);

    4 >> X=(2+sin(V)).*cos(U);

    5 >> Y=(2+sin(V)).*sin(U);

    6 >> Z=U+cos(V);

    7 >> surf(X,Y,Z)

    8 >> colormap gray

    Figura 21: Tobogn

    4 2 0 2 450

    52

    0

    2

    4

    6

    8

    10

    12

    14

  • Ecuaciones diferenciales

    Solucin analtica

    Ecuaciones de primer orden

    Supongamos que deseamos resolver la ED de primer orden

    y = xy

    En MATLAB usamos la funcin dsolve(). La entrada y salida para lasolucin de este problema en MATLAB es dada por

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

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

    Si adicionalmente incluimos condiciones iniciales y(1) = 1, y poste-riormente graficarlo tendramos

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

    2 y =

    3 exp(-1/2)*exp(x^2/2)

    4 >> x=linspace(0,1,20);

    5 >> z=eval(vectorize(y));

    6 >> plot(x,z)

    Figura 22: Solucin de y =xy, y(1) = 1

    0 0.2 0.4 0.6 0.8 1

    0.65

    0.7

    0.75

    0.8

    0.85

    0.9

    0.95

    1

    Ecuaciones diferenciales de segundo orden y superiores

    Supongamos que deseamos solucionar y grficas la solucin de laecuacin diferencial de segundo orden

    y + 8y + 2y = cos(x), y(0) = 0, y(0) = 1

    el siguiente cdigo es suficiente

    1 >> ecn2=D2y+8*Dy+2*y=cos(x);

    2 >> cin=y(0)=0, Dy(0)=1;

    3 >> y=dsolve(ecn2,cin,x);

    4 y = (14^(1/2)*exp(4*x - 14^(1/2)*x)*exp(x*(14^(1/2) - 4))*5 (sin(x) - cos(x)*(14^(1/2)- 4)))/(28*((14^(1/2) - 4)^2 + 1))

    6 - (14^(1/2)*exp(4*x + 14^(1/2)*x)*exp(-x*(14^(1/2) + 4))*(sin(x) +

    7 cos(x)*(14^(1/2) + 4)))/(28*((14^(1/2) + 4)^2 + 1)) -

    8 (14^(1/2)*exp(-x*(14^(1/2) + 4))*(7*14^(1/2) + 27))/(28*(8*14^(1/2) + 31))

    -

  • 24 xyoby chvez pacheco

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

    -31)*10 (8*14^(1/2) + 31)^2)

    11 >> x=linspace(0,10,1000);

    12 >> z=eval(vectorize(y));

    13 >> plot(x,z)

    Figura 23: Solucin de y + 8y +2y = cos(x), y(0) = 0, y(0) = 1

    0 2 4 6 8 100.1

    0.05

    0

    0.05

    0.1

    0.15

    0.2

    0.25

    Sistema de ecuaciones diferenciales

    Si deseas encontrar la solucin simblica de un sistema de ecuacio-nes diferenciales podemos usar nuevamente dsolve.

    Ejemplo 24. Por ejemplo para resolver el sistema dxdt = 2x ydydt = 3x 2y

    podemos usar

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

    2 x =

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

    4 y =

    5 exp(-t)*(C2 + C1*exp(2*t))

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

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

    t)

    2 x =

    3 (exp(-t)*((3*exp(2*t))/2 + 3/2))/3

    4 y =

    5 exp(-t)*(exp(2*t)/2 + 3/2)

    6 >> t=linspace(0,2,200);

    7 >> xx=eval(vectorize(x));

    8 >> yy=eval(vectorize(y));

    9 >> plot(t,xx,t,yy)

    Figura 24: Solucin de sistemaED

    0 0.5 1 1.5 21

    1.5

    2

    2.5

    3

    3.5

    4

    x(t)y(t)

    Mtodos Numricos

    Ecuaciones de primer orden con funciones en linea

    Ejemplo 25. Solucionar numricamente la ED de primer orden

    dydx

    = xy2 + y, y(0) = 1

    en el intervalos x [0, ,5].Para ello llevamos a la forma y = f (x, y), teniendo que definir la

    funcin f (x, y) de la siguiente manera

  • matlab y clculo 25

    1 >>f=inline(x*y^2+y)

    2 f =

    3 Inline function:

    4 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 >> [x,y]=ode45(f,[0,.5],1);

    2 >> plot(x,y)

    Figura 25: dydx = xy2 +

    y, y(0) = 1

    0 0.1 0.2 0.3 0.4 0.51

    1.1

    1.2

    1.3

    1.4

    1.5

    1.6

    1.7

    1.8

    1.9

    2

    Sistema de ED

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

    cuyo modelo en un sistema de ecuaciones diferencialesdx1dt = 225 x1 + 150 x2

    dx1dt =

    225 x1 225 x2

    ,

    lo resolvemos creamos una archivo yprime.m que contenga la si-guiente instruccin

    1 function dydt=yprime(t,x)

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

    3 dydt(2,1)= 2*x(1)/25- 2*x(2)/25;

    y luego usando la orden ode45 para resolver ecuaciones dife-renciales usando el mtodo de Runke Kutta 4-5 y considerando lascondiciones iniciales

    x1(0) = 25, x2(0) = 0

    hacemos

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

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

    Figura 26: Solucin de la ED

    0 20 40 60 80 1000

    5

    10

    15

    20

    25

    x1(t)x2(t)

  • 26 xyoby chvez pacheco

    Ejemplo 27. Considere el sistema dxdt = 2x x2 xydydt = xy y

    ,

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

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

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

    que crea una tabla de valores para t, x e y para 0 t 20 empezan-do en t = 0, x = 1 y y = 2. Observe que y es un vector cuyas entradasson los valores y(1) y y(2).

    El comando

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

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

    Figura 27: Solucin de la ED

    0 5 10 15 200.5

    1

    1.5

    2

    Solucin de ED de orden superior

    Considere la siguiente ecuacin diferencial de segundo orden concoeficientes constantes a, b, c y la funcin generadora f (t)

    ad2ydx2

    + bdydx

    + cy = f (t) (1)

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

    d2ydx2

    =1a

    (f (t) b dy

    dx cy

    )redefiniendo en dos nuevas variables x1 = y, x2 = y y as nospermite escribir la ecuacin en la forma de un sistema de ecuacionesdiferenciales

    dx1dt = x2

    dx2dt =

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

    o en la forma matricial[x1x2

    ]=

    [x2

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

    ]

  • matlab y clculo 27

    Pndulo no lineal

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

    La ecuacin de movimiento es

    d2dt2

    +gl

    sen = 0

    y haciendo w2 = gl tenemos las siguientes instrucciones para el casocuando w2 = 1, i.e., l = g

    1 function dydt=pend(t,y)

    2 G=9.8; L=9.8;

    3 dydt=zeros(2,1);

    4 dydt(1)=y(2);

    5 dydt(2)=-(G/L)*sin(y(1));

    6 end

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

    1 t=[0 4*pi];

    2 y0=[0.5 2];

    3 [t,Y]=ode45(@pend,t,y0);

    4 a=plot(t,Y(:,1),.-r)

    5 hold on

    6 y0=[0.5 0.5];

    7 [t,Y]=ode45(@pend,t,y0);

    8 b=plot(t,Y(:,1),--b)

    9 grid on

    10 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

    0 2 4 6 8 10 12 142

    0

    2

    4

    6

    8

    10

    12

    14

    16

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

    Una simulacin

    1 function eng80_june_03_2013()

    2 clear all; close all;

    3 t_start =0 ;

    4 t_end =6 ;

    5 time_span = t_start:0.001:t_end;

    6

  • 28 xyoby chvez pacheco

    7 k=40; % constante de elasticidad N/m

    8 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 pos_inicial = 0 ; vel_inicial = 0 ;

    15 x0 = [pos_inicial, vel_inicial];

    16

    17 % inicio de simulacin, cambio de amortiguamiento.

    18 for c=0:0.5: cr+0.1*cr

    19 [t,x] = ode45(@rhs, time_span, x0);

    20 plot(t,x(:,1));

    21 title(sprintf(coeficeinte de amortiguamiento crtico es %f\n, c));

    22 ylim([-.1, .1]); % valores de y entre -0.1 a 0.5

    23 drawnow;

    24 pause(0.1);

    25 end

    26

    27 grid

    28

    29

    30 %*****************************************31 % soluciona m x + c x +k x = f(t)

    32 %*****************************************33 function xdot=rhs(t,x)

    34 xdot = zeros(2,1);

    35 xdot(1)= x(2);

    36 xdot(2)= - (c/m)*x(2)-(k/m)*x(1)+ force(t)/m;

    37 end

    38

    39 function y=force(t)

    40 y=sin(10*t);

    41 end

    42 end

    Transformadas de Laplace

    El clculo de la transformada de Laplace F(s) de una funcinf (t) es fcil en Matlab. Primero especifica las variables t y s comosimblicos.

    1 >> syms t s

    Defina la funcin f (t) por ejemplo

    f (t) = 1,25+ 3,5te2t + 1,2e2t

    1 >> syms t s

    2 >> f=-1.25+3.5*t*exp(-2*t)+1.25*exp(-2*t);

    3 >> F=laplace(f,t,s)

    4 F = -5/4/s+7/2/(s+2)^2+5/4/(s+2)

    5 >> simplify(F)

    6 ans = (s-5)/s/(s+2)^2

    7 >> pretty(ans)

    8 s - 5

  • matlab y clculo 29

    9 ----------

    10 2 s (s + 2)

    Que corresponde a la funcin

    F(s) =s 5

    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 definirlos smbolos t y s. Por ejemplo calculemos la inversa de la funcinanterior

    F(s) =s 5

    s(s + 2)2

    1 >> syms t s

    2 >> F = (s-5)/s/(s+2)^2;

    3 >> ilaplace(F)

    4 ans = -5/4+(7/2*t+5/4)*exp(-2*t)

    5 >> simplify(ans)

    6 ans = -5/4+7/2*t*exp(-2*t)+5/4*exp(-2*t)

    7 >>pretty(ans)

    8 5 exp(-2 t) 7 t exp(-2 t)

    9 ----------- + ------------- - 5/4

    10 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 repre-sentacin de polo-residuo y retorna un polinomio

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

    encuentra los residuos, polos y trminos de la expansin en fraccio-nes parciales de la razn de dos polinomios B(s)/A(s). El cociente delos polinomios B(s) y A(s) es representado por

    B(s)A(s)

    =r1

    s p1 +r2

    s p2 + +rn

    s pn + ks

    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 deldenominador), y k es un vector fila de los trminos directos ( si el gra-do del numerador es menor que el grado del denominador, entonces

  • 30 xyoby chvez pacheco

    k ser un vector nulo). El comando residue requiere dos vectoresde entrada: un los coeficientes del numerador y otro que sea los coe-ficientes del denominador. Los coeficientes deben estar en formadescendente de las potencias de s.

    Ejemplo 29. Considere la siguiente funcin

    Y(s) =5s 1

    s3 3s 2Para encontrar la descomposicin en fracciones parciales de Y(s)debemos ingresar los coeficientes de numerador y del denominador

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

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

    Resultado en

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

    2 r =

    3 1.0000

    4 -1.0000

    5 2.0000

    6 p =

    7 2.0000

    8 -1.0000

    9 -1.0000

    10 k =

    11 []

    Asi la descomposicin de Y(s) es

    Y(s) =1

    s 2 1

    s + 1+

    2(s + 1)2

    El ltimo trmino de la descomposicin en fracciones parciales siguedel hecho que el polo es 1,0000 es repetido.

    Solucionando una EDO usando MATLAB y trasformada inversa de La-place

    Ejemplo 30. Un sistema de masa resorte es modelado por la ecuacindiferencial

    y + 4y = g(t), y(0) = y(0) = 0

    donde g(t) =

    8t, 0 t < 540, 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 ustransformada de Laplace usando los siguientes comandos deMATLAB

  • matlab y clculo 31

    1 >> syms s t

    2 >> g=8*t+(40-8*t)*heaviside(t-5)

    3 g = 8*t - heaviside(t - 5)*(8*t - 40)

    4 >> ezplot(g,[0,10])

    5 >> G= laplace(g)

    6 G = 8/s^2 - (8*exp(-5*s))/s^2

    As la trasformada de Laplace de g(t) es G(s) =(

    1 e5s) 8

    s2

    Figura 29: Grfica de g(t)

    0 2 4 6 8 10

    0

    5

    10

    15

    20

    25

    30

    35

    40

    t

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

    2. Aplicando la transformada de Laplace a ambos lados de la ecua-cin diferencial y reemplazando las condiciones iniciales tenemos

    Y(s) =(

    1 e5s) 8

    s2(s2 + 4)

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

    F(s) =8

    s2(s2 + 4)

    a) Usamos el comando residue para encontrar las fraccionesparciales de la descomposicin de F y usarlas para determinarla trasnformada Laplace inversa de Y(s).

    Note que F(s) =8

    s4 + 4s21 >> num=[8]; % Coeficientes del numerador en orden

    decrecientecoefficients of the numerator in decreasing order

    2 >> den=[1,0,4,0,0]; % coeficientes del numerador en orden

    decreciente

    3 >> [r,p,k]=residue(num,den)

    4 r =

    5 0 + 0.5000i

    6 0 - 0.5000i

    7 0 2.0000

    8 p =

    9 0 + 2.0000i

    10 0 - 2.0000i

    11 0 0

    12 k =

    13 []

    Luego

    F(s) =0,5i

    s 2i 0,5i

    s + 2i+

    2s2

    y combinando el trmino complejo obtenemos

    F(s) = 2s2 + 4

    +2s2

    Usando una tabla de trasformadas de Laplace, encontramos quela 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)

  • 32 xyoby chvez pacheco

    b) Ingrese la funcin F(s) =8

    s2(s2 + 4)en MATLAB, y entonces

    ingrese diff(int(F)). Cul es la salida?

    Solucin.

    1 >> F= 8/(s^2*(s^2+4));

    2 >> diff(int(F))

    3 ans = 2/s^2 - 1/(2*(s^2/4 + 1))

    4 >> pretty(ans)

    5 2 1

    6 -- - ------------

    7 2 / 2 \

    8 s | s |

    9 2 | -- + 1 |

    10 \ 4 /

    Simplificando el segundo trmino tenemos2s2 2

    4+ s2, el cual

    es la descomposicion en fracciones parciales en la parte a).

    c) Encontrar la trasformada de Laplace inversa de Y(s) use elcomando ilaplace.

    Solucin.-

    1 >> Y = (1-exp(-5*s))*8/(s^2*(s^2+4));

    2 >> y = ilaplace(Y)

    3 y =

    4 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 fun-cin por partes. Esta solucin es una funcin oscilante alrededorde la recta inclinada en la parte 0 t 5 y alrededor de la rectahorizontal en 5 < t. Compara la grfica de la funcin solucincon la grfica del trmino de forzamiento g(t) de la parte a) Tienesentido la grafica en el contexto de un sistema de masa resorte?

    Solucin.- La solucin de y(t) puede ser escrito por una funcinpor partes como

    y(t) =

    2t sin(2t) 0 t 510 sen(2t) + sen(2(t 5)) t > 5As y(t) es una funcin oscilante alrededor de la linea y = 2t para0 t 5 y alrededor de la recta y = 10 para t > 5.Podemos combinar estas dos entradas en una simple funcinh(t) = 2t+ U (t 5)(10 2t). Graficaremos la solucin y(t) usandoel comando explot y la funcin h(t) con lineas punteadas. Lasalida se muestra en la figura (30)

    1 >> p1 = ezplot(y,[0,10]);

    2 >> hold on

    3 >> h = 2*t + heaviside(t-5)*(10-2*t);

  • matlab y clculo 33

    4 >> p2 = ezplot(h,[0,10]);

    5 >> set(p2, Color,red,LineStyle,--)

    6 >> axis([0,10,0,12])

    7 >> title()

    8 >> legend(solution,lines y= 2t and y = 10,2)

    9 >> hold off

    Figura 30: Solucin de y +4y = g(t), y(0) = 0, y(0) = 0

    0 2 4 6 8 100

    2

    4

    6

    8

    10

    12

    t

    solutionlines y= 2t and y = 10

    Es ms fciil general la grfica con diferentes estilos de linea usan-do el comando plot. Las siguientes instrucciones producen lamisma figura de la lista de intrucciones anteriores.

    1 >>t = 0:0.1:10;

    2 >> y = eval(vectorize(y));

    3 >> h = 2.*t + heaviside(t-5).*(10-2*t);

    4 % escribimos una formula para h que funciona con vectores

    5 >> plot(t,y,b-,t,h,r--)

    6 >> legend(solucin,lines y= 2t and y = 10,2)

    Comparando las figuras (29) y (30) de las parte a) y c) vemos quela grfica de la solucin tiene sentido en el contexto de una sis-tema masa resorte. El trmino de forzamiento que incrementalinealmente los primeros 5 segundos permite elevar el equilibriolinealmente. Una vez que el trmino de forzamiento se estabilizaen un valor constante, la masa se mantiene oscilando alrededordel nuevo equilibrio con una amplitud constante, puesto que elsistema no es amortiguado.

    MATHEMATICA

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

  • Bibliografa

    1. Clculo integral y aplicaciones con Matlab. Ana Mara VieitesRodrguez

    IntroduccinCurvas Vectores, rectas y planosFunciones de dos variablesCampos vectorialesSuperficies ParamtricasEcuaciones diferenciales Bibliografa