Graficar con Matlab.pdf

download Graficar con Matlab.pdf

of 8

Transcript of Graficar con Matlab.pdf

  • 5 Prctica. Matlab pgina 1

    Escuela Superior de Ingenieros de San Sebastin Universidad de Navarra

    PPRROOGGRRAAMMAACCIINN EENN MMAATTLLAABB PPRRCCTTIICCAA 0055

    GGRRFFIICCOOSS EENN MMAATTLLAABB 22DD YY 33DD LLEECCTTUURRAA DDEE FFIICCHHEERROOSS

    EENNTTRRAADDAA DDEE PPUUNNTTOOSS CCOONN EELL RRAATTNN

    EJERCICIO 1. GRFICOS EN MATLAB BIDIMENSIONALES .......................................................................1 EJERCICIO 1.1 UTILIZACIN DEL COMANDO LINE .................................................................................................2 EJERCICIO 1.2 UTILIZACIN DEL COMANDO PATCH ..............................................................................................2 EJERCICIO 1.3 DIBUJO DE UNA FUNCIN CON PLOT Y SUBPLOT ...............................................................................3 EJERCICIO 1.4 DIBUJAR UN CUADRILTERO INSCRITO EN UNA CIRCUNFERENCIA DE RADIO 1 ..................................3

    EJERCICIO 2. GRFICOS EN MATLAB TRIDIMENSIONALES ....................................................................4 EJERCICIO 2.1 DIBUJAR UNA PIRMIDE DE BASE CUADRADA ...................................................................................4 EJERCICIO 2.2 DIBUJO DE LA FUNCIN Z=SIN(X)*COS(Y).........................................................................................5

    EJERCICIO 3. ECUACIONES DIFERENCIALES................................................................................................5

    EJERCICIO 4. LECTURA DE FICHEROS ............................................................................................................6 EJERCICIO 4.1 SISTEMA DE PARTCULAS ..................................................................................................................6 EJERCICIO 4.2 MEJORA DEL EJERCICIO 4.1 ..........................................................................................................7

    EJERCICIO 5. ENTRADA DE PUNTOS CON EL RATN .................................................................................8

    En primer lugar crea un directorio llamado Practica05 en tu directorio G:\Informatica1. En este directorio debers guardar todos los ficheros y todo el trabajo resultante de esta prctica. Despus arranca el programa MATLAB y coloca como directorio de trabajo o directorio activo el directorio creado previamente.

    EJERCICIO 1. GRFICOS EN MATLAB BIDIMENSIONALES

    Matlab posee una serie de comandos para crear interfaces grficas de manera muy sencilla. Un resumen de todos estos comandos se encuentran en los Captulos 6, 7, 9 y 10 del manual Aprenda Matlab como si estuviera en Primero.

    Matlab dispone de funciones grficas de alto y bajo nivel. Las funciones de alto nivel (plot, plot3, surf, mesh, etc.) permiten representar grficamente funciones o conjuntos de datos complejos (en forma de matrices de coordenadas x, y y z) con una sola llamada a una funcin. Las funciones de bajo nivel (line, patch, etc.) permiten dibujar grficos elementales (una lnea, un polgono, etc.) o grficos complicados a base de muchas llamadas para aadir cada uno de los grficos elementales.

    Crea un subdirectorio dentro de G:\Informatica1\Practica05 llamado Ejercicio01 y dentro de l, guarde los siguientes ejercicios de creacin de grficos.

  • Informtica 1 y Fundamentos de Computadores pgina 2

    TECNUN

    EJERCICIO 1.1 Utilizacin del comando line

    Construya un nuevo subdirectorio que se llame Ejercicio0101 y site, como siempre, el directorio de trabajo de Matlab dentro.

    El comando line permite dibujar lneas. Los parmetros que espera esta funcin son dos vectores: el primero con las coordenadas x y en el segundo con las coordenadas y. La forma general para dibujar una lnea es la siguiente:

    line([xini xend],[yini yend]); As, la siguiente instruccin dibuja una lnea que une el punto (0,0) con el (2,1):

    line([0 2],[0 1]); Si se dan ms de dos puntos Matlab dibuja una lnea poligonal continua uniendo cada punto adicional con el anterior. Ejectese el siguiente ejemplo:

    x = [1 2 3 4]' y = [1 3 2 4]' line(x,y);

    Si se desea dibujar varias lneas pero independientes unas de otras (el comienzo de un nuevo segmento no es el final del anterior) se pueden tambin introducir las coordenadas de los puntos en forma de matriz: Matlab unir los puntos por columnas. La siguiente instruccin une el punto (0,0) con el (1,1) y el punto (0,2) con el (2,0):

    X=[0 0 1 2] Y=[0 2 1 0] line(X, Y)

    Cada columna de X contiene la xini y la xend de cada una de las lneas a dibujar, y lo mismo con las columnas de la matriz Y. De forma anloga, tambin se pueden introducir los puntos con coordenadas 3D, aadiendo como argumento el vector o la matriz de coordenadas correspondiente a la componente z:

    x = [0 1] y = [0 1] z = [0 1] line(x, y, z) view(-37.5, 80)

    El comando line permite, asimismo, determinar el color de la lnea, aadiendo pares de valores color, w (con el cdigo de colores que se indica en la pgina 57 del Manual). As, para que la primera lnea apareciera en rojo, habra que teclear:

    line([0 2], [0 1], color, r); De forma anloga se pueden aadir o modificar otras propiedades (grosor de lnea, tipo de trazo, etc.), segn se explica en el Captulo 9 del Manual.

    EJERCICIO 1.2 Utilizacin del comando patch

    Construya un nuevo subdirectorio que se llame Ejercicio0102 y site, como siempre, el directorio de trabajo de Matlab dentro.

    El comando patch se emplea para dibujar polgonos en dos o tres dimensiones, que pueden estar rellenos de un color constante o variable (interpolado entre los colores de los vrtices). Se

  • 5 Prctica. Matlab pgina 3

    Escuela Superior de Ingenieros de San Sebastin Universidad de Navarra

    distingue entre el color de las aristas y el color de relleno. Teclea y ejecuta el fichero patch1.m que se indica a continuacin:

    % fichero patch1.m % ejemplo de la funcin patch en 2D clear all close all x1=[0 1 0]; y1=[0 0 2]; patch(x1,y1,'b'); axis([0,3,0,3]);

    EJERCICIO 1.3 Dibujo de una funcin con Plot y Subplot

    Construya un nuevo subdirectorio que se llame Ejercicio0103 y site, como siempre, el directorio de trabajo de Matlab dentro.

    En este ejercicio vamos a aprender a utilizar la funcin Subplot y Plot. La funcin Subplot(m,n,p) permite dividir el rea de dibujo en una matriz de mxn rectngulos. Con el parmetro p seleccionamos cul de ellas vamos a utilizar para dibujar, lo cual haremos con la funcin Plot. A continuacin se muestra el ejemplo a seguir para obtener dos grficas, una con una seal senoidal y la otra con una seal coseno, del doble de frecuencia que la primera. Para el desarrollo de este ejercicio debes copiar el cdigo en un fichero Ejercicio0103.m, usando el editor de Matlab. Luego podrs ejecutarlo desde Matlab, como ya lo sabes hacer.

    %grfica de dos funciones Sin y Cos amp1=10; amp2=5; num=100; ciclos=2; f1 =100; % Frecuencia de 100Hz f2 =2*f1; %el doble t=0:ciclos/(f1*num):ciclos/f1; %calculo de funciones y1=amp1*sin(2*pi*f1*t); y2=amp2*cos(2*pi*f2*t); %dibujar funciones subplot(2,1,1); %divide en 2 filas y una columna la pantalla y selecciona la primera de las dos figuras plot(t,y1,'Color','r'); grid; title('Funcion Seno de 100Hz','Color','b'); subplot(2,1,2); %Selecciona la segunda de las dos figuras plot(t,y2,'Color','r'); grid; title('Funcion Coseno de 2*100Hz','Color','b'); xlabel('Tiempo en Segs.','Color','r');

    Como ejercicio adicional, prueba obtener una tercera grfica que sea el producto de las anteriores. A ver qu obtienes...

    EJERCICIO 1.4 Dibujar un cuadriltero inscrito en una circunferencia de radio 1

    Construya un nuevo subdirectorio que se llame Ejercicio0104 y site, como siempre, el directorio de trabajo de Matlab dentro.

  • Informtica 1 y Fundamentos de Computadores pgina 4

    TECNUN

    Se pide crear un fichero llamado circunferencia.m que dibuje un cuadrado inscrito en una circunferencia de radio unidad, segn se muestra en la Figura 1.1. Para realizar este ejercicio se deber emplear la funcin line. Debe ser consciente de que Matlab trabaja de manera numrica, por lo que para dibujar la circunferencia deber discretizarla en una serie de lneas que la bordeen. Suponiendo que se dividan los 2 radianes que componen la circunferencia en trocitos de radianes cada uno, las coordenadas {x, y} de una lnea de las que bordean a la circunferencia de radio 1 entre dos partes consecutivas { k, k+1} seran:

    xk=cos( k) yk=sin( k) xk+1=cos( k+1) yk+1=sin( k+1)

    De manera que el dibujo de la lnea a la que nos referimos ser:

    line([xk xk+1],[yk yk+1])

    La circunferencia debe quedar discretizada en 100 puntos.

    EJERCICIO 2. GRFICOS EN MATLAB TRIDIMENSIONALES

    Crea un subdirectorio dentro de G:\Informatica1\Practica05 llamado Ejercicio02 y dentro de l, guarde los siguientes ejercicios.

    EJERCICIO 2.1 Dibujar una pirmide de base cuadrada

    Construya un nuevo subdirectorio que se llame Ejercicio0201 y site, como siempre, el directorio de trabajo de Matlab dentro.

    Se pide crear una funcin de Matlab que, utilizando la funcin patch, dibuje una pirmide de base cuadrada en funcin de la altura y la longitud de los lados de la base que le marque el usuario. Su encabezado deber ser:

    function Piramide(L,h)

    Donde L debe corresponderse con la longitud de los lados de la pirmide y h con la altura.

    Figura 1.1. Cuadrado inscrito en una circunferencia.

  • 5 Prctica. Matlab pgina 5

    Escuela Superior de Ingenieros de San Sebastin Universidad de Navarra

    EJERCICIO 2.2 Dibujo de la funcin z=sin(x)*cos(y)

    Construya un nuevo subdirectorio que se llame Ejercicio0202 y site, como siempre, el directorio de trabajo de Matlab dentro.

    El programa que debe desarrollar a continuacin debe guardarlo dentro de un fichero de instrucciones llamado SinXCos.m.

    Utilizando el comando Surf, debe dibujar la funcin tridimensional Z=sin(x)*cos(y). Para ello deber seguir los siguientes pasos:

    1 Crear un vector x, cuyo valor inicial y final sea -3 y 3 respectivamente, y con un paso de 0.1.

    2 Crear un vector y, cuyo valor inicial y final sea -3 y 3 respectivamente, y con un paso de 0.1.

    3 Crear la matriz Z, cuyos valores se correspondan con los valores de la funcin matemtica concretados para los valores definidos en los vectores x e y.

    4 Pasarle x, y y Z a la funcin Surf.

    EJERCICIO 3. ECUACIONES DIFERENCIALES

    Crea un subdirectorio dentro de G:\Informatica1\Practica05 llamado Ejercicio03 y dentro de l, guarde el siguiente ejercicio.

    Las ecuaciones diferenciales que rigen la posicin de un pndulo, sometido a rozamiento, vienen dadas por:

    vdtd

    vlg

    dtdv

    =

    =

    )sin(

    siendo v la velocidad angular (en rad/s), el ngulo (en radianes), g la aceleracin de la gravedad (9.8 m/s2), l la longitud del pndulo y el coeficiente de rozamiento.

    Para realizar la simulacin en el ordenador de dichas ecuaciones diferenciales, existen mtodos de integracin que nos dan de forma iterativa los valores que van tomando las variables que estn diferenciadas (en nuestro caso, v y ). Uno de los mtodos ms sencillos se denomina mtodo de Euler. Aplicando dicho mtodo al caso dado, se puede obtener que el ngulo a lo largo del tiempo se puede ir calculando de forma iterativa de la siguiente manera:

    hjtvh

    vlghvv

    j

    jjj

    jjjj

    )sin(

    1

    1

    1

    =+=

    +=

    +

    +

    +

    Figura 2.1. Funcin tridimensional dibujada en

    Matlab con la funcin SURF.

  • Informtica 1 y Fundamentos de Computadores pgina 6

    TECNUN

    donde h se denomina paso de integracin, que debe elegir el usuario, y j indica el punto que estamos calculando (j=1,2,3,...), siendo las condiciones iniciales: v1=0 (soltamos el pndulo sin darle impulso), 1 elegido por el usuario, t1=0, siendo t el tiempo.

    Figura 3.1: Evolucin del ngulo a lo largo del tiempo

    Realizar un programa que pida al usuario la longitud del pndulo, el ngulo inicial (en grados), el coeficiente de rozamiento, el paso de integracin y el tiempo mximo de simulacin. El programa generar la evolucin del pndulo a lo largo del tiempo en forma de puntos (t,) hasta que se llegue al tiempo mximo. Finalmente, el programa dibujar a lo largo del tiempo (Figura 3.1)

    Nota: El valor de h es funcin del tipo de problema al que se aplica. Si se elige una longitud del pndulo de 3 m, un ngulo inicial de 30 y un coeficiente de rozamiento de 0.4, un valor adecuado de h podra ser 0.01 para una simulacin de 5 s.

    EJERCICIO 4. LECTURA DE FICHEROS

    Crea un subdirectorio dentro de G:\Informatica1\Practica05 llamado Ejercicio04 y dentro de l, guarde los siguientes ejercicios.

    EJERCICIO 4.1 Sistema de partculas

    El programa que debe desarrollar a continuacin debe guardarlo dentro de un fichero de instrucciones llamado Ejercicio0401.m.

    Utilizando la funcin input debe pedir al usuario el nmero de partculas que habr en el sistema, y posteriormente utilizando la misma funcin deber preguntar al usuario en qu posicin deber dibujarse cada partcula y la masa que se le asigna.

    >> Introduzca el nmero de partculas del sistema:

    >> Partcula 1: Posicin x:

    >> Posicin y:

    >> Posicin z:

    (tj,j)

    ZOOM

    (tj+1,j+1)

  • 5 Prctica. Matlab pgina 7

    Escuela Superior de Ingenieros de San Sebastin Universidad de Navarra

    >> Masa:

    >> Partcula 2: Posicin x:

    >> Posicin y:

    >> Posicin z:

    >> Masa:

    .

    El programa debe dibujar cada una de las partculas en su posicin correspondiente escribiendo tambin la masa que le ha sido asignada. Adems tendr que calcular el centro de masas del sistema de partculas dibujndolo en su posicin apropiada y asignndole la masa total de todo el sistema tal y como se muestra en la Figura 4.1.

    Centro de masas=

    =

    =n

    ii

    n

    iii

    m

    m

    1

    1p

    donde ),,( iiii zyx=p representa la posicin de la partcula y mi el valor de la masa asignada a cada partcula.

    Las partculas se representarn mediante un crculo y el centro de masas del sistema mediante una x.

    Figura 4.1: Sistema de partculas

    EJERCICIO 4.2 Mejora del EJERCICIO 4.1

    Construya un nuevo subdirectorio que se llame Ejercicio0402 y site, como siempre, el directorio de trabajo de Matlab dentro.

  • Informtica 1 y Fundamentos de Computadores pgina 8

    TECNUN

    Crear dos ficheros de texto con el Block de Notas. El primero se llamar posiciones.txt en el que se guardarn las posiciones en las que deben dibujarse las partculas y el segundo, masas.txt, que contiene las masas asignadas a cada una de las partculas.

    Modificar el EJERCICIO 4.1 de forma que lea del fichero posiciones.txt las posiciones en las que deben dibujarse las partculas y del fichero masas.txt, las masas que se asignan a cada una de las partculas.

    Para la lectura de los datos de los ficheros, utilizar la funcin importdata vista en clase.

    EJERCICIO 5. ENTRADA DE PUNTOS CON EL RATN

    Crea un subdirectorio dentro de G:\Informatica1\Practica05 llamado Ejercicio05 y dentro de l, guarde el siguiente ejercicio.

    Crear un programa que pregunte al usuario el nmero de puntos que debe introducir posteriormente utilizando el ratn.

    >> Introduzca el nmero de puntos:

    Una vez elegido el nmero de puntos a dibujar, el usuario pulsar el ratn tantas veces como haya indicado anteriormente. Cuando se hayan introducido el nmero especificado de puntos, stos se dibujarn en pantalla indicando en qu orden fueron pulsados. Adems estos puntos estarn unidos mediante una lnea siguiendo el orden en el que fueron introducidos (Figura 5.1).

    Figura 5.1: Lnea que une los puntos generados pulsando el ratn indicando el orden en el que han sido pulsados

    La funcin ginput de Matlab permite introducir las coordenadas del punto sobre el que est el cursor al hacer clic con el ratn sobre la pantalla. Consulte la pgina 67 del Manual Aprenda Matlab como si estuviese en primero, para ver ms detalles sobre esta funcin.