Vous êtes sur la page 1sur 12

GUIA DE PRACTICA DE LABORATORIO 2

Mtodos Numricos y Programacin. Ciclo 01/2013

Interfaz con usuario y graficas en 2 y 3 dimensiones Interfaz con usuario

Como vimos en la prctica anterior existe una forma muy prctica de presentar las variables, tanto de entrada como de salida. Recordando: Si hay nicamente una variable de salida: 1. Sin especificar variable de salida: >> ejemplo1(a,b,c) Ans= 5 2. Especificando variable de salida: >> respuesta=ejemplo1(a,b,c) Respuesta= 5 Si hay ms de una variable de salida: 1. Especificando variables de salida: >>[x,y,z]=ejemplo2(a,b,c) X= 3 Y= 4 Z= 5

Como se puede observar esta forma de ingresar y pedir variables puede generar ciertas confusiones o ya sea por alguna distraccin se nos puede olvidar alguna de estas. Por esta razn muchas veces es muy prctico utilizar ciertas herramientas que MATLAB nos provee y que se conocen como interfaz de usuario. Para el ingreso de variables podemos utilizar el comando input. Y para la peticin de variables de salida podemos utilizar tanto los comandos fprintf y disp. El comando input de MATLAB devuelve un mensaje al usuario en forma de texto y espera a que este le ingrese un valor. El valor que el usuario ingrese pude ser cualquier expresin de MATLAB que tenga un valor predeterminado en el workspace o puede ser una cadena de caracteres o algn tipo de smbolo; Debido a esto es que existen dos tipo de sintaxis especficas de darle ordenes al comando input. El mensaje que vera el usuario (o prompt como se ver en la siguiente figura) debe de ser colocado entre comillas simples. Para el uso del input tener en cuenta la siguiente informacin:

Comando 1 forma de pedir datos. Los guarda en el mismo formato que el usuario lo ingresa 2 forma pedir los datos. Se guardan en la variable como string Mensaje que vera el usuario en el Command window.

Nombre de la variable

1 forma de pedir datos (valores evaluables) Editor Command Window


');

function []=ejemplo_input() a=input('ingrese el valor de a:

>> ejemplo_input ingrese el valor de a: a = 5

2 forma de pedir datos (strings) Editor Command Window >> ejemplo_input2 Ingrese su nombre: Roberto nombre = Roberto

function []=ejemplo_input2() nombre=input('Ingrese su nombre: ','s');

Para la utilizacin de los comandos fprintf y disp es necesario mencionar que no solamente nos sirve para mostrar variables sino que tambin nos sirve para mostrar mensajes, que nos facilitan la compresin de los resultados visualizados en el Command Window. El comando disp tiene como funcin mostrar un vector fila sin mostrar el nombre de este si el vector fila contiene texto del tipo string, entonces lo que se muestra es el string. Esta funcin acepta nicamente una variable de entrada por lo que muchas veces su uso es limitado. Algunos ejemplos del uso de esta funcin son los siguientes: >> x=5 x = 5 >> disp(x) 5 >> disp('Buenos das Usuario') Buenos das Usuario

Para mostrar ms de una variable podemos hacer uso del comando fprintf. El comando fprintf se utiliza para visualizar salidas de programas (texto y datos) en la pantalla, o

bien almacenarlas en un fichero. Con este comando, y a diferencia de disp, la salida puede tener un formato preestablecido. En este caso se pueden combinar texto y resultados numricos provenientes de clculos o variables predefinidas en la misma lnea. Adems, el formato de los nmeros se puede controlar directamente. Uso del comando fprintf para visualizar mensajes de texto:

fprintf('Mensaje en forma de cadena')


Utilizacin del comando fprintf para visualizar datos y texto juntos: Para visualizar texto y datos (valores de variables) juntos, el comando fprintf debe utilizarse siguiendo la sintaxis:

La especificacin del ancho y precisin del campo (5.2 en el ejemplo anterior) es opcional. El primer nmero (5 en nuestro ejemplo) es el ancho del campo, el cual nos indica el menor nmero de dgitos en la visualizacin. Si el nmero que se visualiza es menor que el ancho del campo, se aadirn ceros o espacios delante del nmero en cuestin. La precisin se corresponde con el segundo nmero en el ejemplo anterior), y especifica el nmero de dgitos que se mostrarn a la derecha del punto decimal. El ltimo elemento es el correspondiente al formato de conversin (f en el ejemplo anterior). ste es obligatorio. A continuacin se muestran los caracteres de conversin ms utilizados: e Notacin exponencial en minsculas (ej. 1.709098e+001). E Notacin exponencial en maysculas (ej. 1.709098E+001).

f Notacin de punto fijo (ej. 17.090980). g Representacin en formato corto de las notaciones e o f. G Representacin en formato corto de las notaciones E o f. i Entero. Aparte de estos caracteres de conversin tenemos lo que se conoce como Escape Characters. Los ms utilizados son: \t \n \b Horizontal tab New line Backspace

Una vez hemos entendido los mtodos anteriores para ingresar y recibir variables de un programa vayamos al siguiente ejemplo: Ejemplo1 Crear un programa que pida una matriz cuadrada .Luego que presente el listado: * Digite: deter , para encontrar el determinante. * Digite: diag , para extraer la diagonal principal. * Digite: sum , para sumar cada fila y crear un vector. Segn la opcin que se a elegido se realizara la operacin correspondiente. Si el usuario no ingresa lo que se pide, se deber mostrar un mensaje con el texto: Debe ingresar una matriz cuadrada.
function[respuesta]=Guia2ej2() disp('Se necesita una matriz cuadrada'); n=input('ingrese la dimension de la matriz cuadrada: '); matriz=zeros(n); %inicializa la variable for i=1:1:n %cambia columna for k=1:1:n %Cambia fila fprintf('ingrese valor (%1.0f,%1.0f)',k,i); %Pide los valores y cambia los subindices de la matriz matriz(k,i)=input(': '); end end disp(matriz); %imprime la matriz disp('eliga la operacion que desea realizar'); disp('1.determinante'); disp('2.extraer diagonal'); disp('3.q sume cada columna'); opcion=input('ingrese el numero: '); switch opcion %elige la opcion a utilizar case 1 respuesta=det(matriz); case 2 respuesta=diag(matriz); case 3 respuesta=sum(matriz); otherwise disp('opcion no valida'); end end

EJEMPLO 2. Genere una tabla en la cual se muestre una muestra tomada de carros, y la velocidad, posicin y tiempo respectivo para cada uno. x=[100 150 200 250 300]; % tenemos en un vector los datos de distancia v=[25 45 40 50 65]; %En un vector tenemos las velocidades en las distancias respectivas t=x./v; %calculamos el vector de tiempo num_muestra=linspace(1,5,5); %un vector con el numero de muestras datos=[num_muestra; x; v; t;]; %unimos los vectores y se transponen fprintf('Carro | %1.0f | X= %4.1f m | v= %4.1f m/s | t=%4.1f s |\n',datos) %se genera una tabla de datos

Graficas en 2D

Funciones de la forma y = f(x) Para hacer grficas de funciones de una variable con MATLAB, primero tenemos que crear una tabla de valores de la variable para despus dibujar la funcin. Por ejemplo, si se quiere dibujar la grfica de la funcin y = sen(x):

Primero debemos de generar un valor que contenga los valores de x que vamos a utilizar. Existen dos formas muy sencillas de generar estos datos que se muestran a continuacin. >>x=0:pi/100:2*pi;
>>x=linspace(0,2*pi,200); % creamos vector de valores de x con un con un espacio de pi/100 entre cada valor %creamos un vector de x con 200 valores igualmente espaciados

Una vez creados los valores de x que vamos a utilizar, podemos continuar a calcular los valores correspondientes a la variable y: >>y=sin(x);
%creamos el vector de valores de la variable y aplicando la operacin seno a cada elemento del vector x.

Una vez tenemos calculado todos los valores podemos dibujar la grafica por medio del comando plot. >> plot(x,y) Que nos muestra la siguiente pantalla:

Realmente lo que se ha hecho es dibujar 200 puntos de la funcin en el intervalo [0; 2pi], y posteriormente el programa los ha unido mediante segmentos. Si el nmero de puntos es lo suficientemente grande, como en este caso, no se aprecian los vrtices. Un ejemplo algo ms complicado es dibujar la grfica de la funcin. Se definen primero los valores para los que se desea hacer la grfica: >> x=-3:0.01:3; >> y=x.*exp(-x.^2); >> plot(x,y)

El aspecto de la grfica se puede modificar utilizando algunos comandos: Cuadrcula. Si queremos que aparezca una cuadrcula sobre el dibujo, se utilizar el comando: >>grid on. Para desactivar la cuadrcula habr que escribir >>grid off. Color y trazo. El comando plot ofrece mltiples posibilidades de color y forma de trazo de la grfica Por ejemplo, el comando: >>plot(x,y,'r*') %Dibujar la grfica en color rojo y con asteriscos. Para consultar todas las posibilidades, se debe hacer

Ejes. Los ejes que aparecen por defecto en una grfica tambin se pueden modificar Con el comando >>axis([-2 2 -1 1]); %Lo que se conseguir es que la grfica aparezca en la regin [-2 x 2], [-1 x 1] >>axis square >>axis equal >>zoom on %Este comando conseguir que la figura aparezca en un cuadrado, sin cambiar el rango de los ejes.

%Se obtendr que los rangos de los ejes sean iguales. %Se puede agrandar la figura o alguna zona seleccionada de la misma. Hay que abrir grfica y utilizar los botones izquierdo y derecho del ratn. Para desactivarlo, habr que escribir

>>zoom off Ttulos. Para poner ttulos a los grficos y a los ejes, se utilizan las siguientes instrucciones: >>title( Ttulo del grfico ) >>xlabel( X ) ; ylabel( Y );

Graficas en 3D.

MATLAB tiene posibilidades de realizar varios tipos de grficos 3D. La primera forma de grfico 3D es la funcin plot3, que es el anlogo tridimensional de la funcin plot. Esta funcin dibuja puntos cuyas coordenadas estn contenidas en 3 vectores unindolos mediante una lnea continua. Asegrese de que no hay ninguna ventana grfica abierta y ejecute el siguiente comando que dibuja una lnea espiral: >>fi=[0:pi/20:6*pi]; plot3(cos(fi),sin(fi),fi,'g')

La forma ms sencilla de plot3 es la siguiente: plot3(x,y,z) que dibuja una lnea que une los puntos (x(1), y(1), z(1)), (x(2), y(2), z(2)), etc. y la proyecta sobre un plano para poderla representar en la pantalla. Tambin se pueden utilizar tres matrices X, Y y Z del mismo tamao: plot3(X,Y,Z) en cuyo caso se dibujan tantas lneas como columnas tienen estas 3 matrices, cada una de las cuales est definida por las 3 columnas homlogas de dichas matrices. El siguiente ejemplo es el dibujo de un cubo.

Aparte de la funcin plot3 existen otras funciones que nos permiten graficar mallas o superficies en un espacio tridimensional, y no solamente una lnea; estas funciones son meshgrid, mesh y surf. Adems existen otras funciones que nos permiten graficar las curvas que se forman

cuando un plano corta a una superficie a las que conocemos como curvas de nivel, las funciones que nos permiten hacer esto son contour y meshc. La forma en que se utilizan estas funciones, y algunos ejemplos, se presentan en las paginas que se presentan a continuacin:

Grafique las funciones siguientes como mayas y superficies, as como sus curvas de contorno como se ilustr en las hojas anexas.

Tarea
Deber elaborar en MATLAB los programas correspondientes a los siguientes ejercicios. Cada programa deber de llevar OBLIGATORIAMENTE los siguientes componentes: Deber llevar su nombre y carn al principio del programa en forma de comentario. Cada accin debe de tener su comentario respectivo que justifique y explique el procedimiento que se est llevando a cabo. 1. Realice un programa que muestre las grficas en una sola ventana como se muestra en la imagen:

a) El primer grafico son 2 cardioides. Sus ecuaciones son:


x = a* cos t * ( 1 + cos t ) y = a* sen t * ( 1 + cos t ) En donde t tiene los valores de los angulos que van desde 0 a 2 y a tiene un valor de 4. b) Se deber graficar 5 parbolas en el lado positivos del eje X, al igual que en el negativo y de la misma forma en el eje Y. c) En caso el usuario quiera un solo grafico entonces preguntar si quiere 1. Solo un cardioide 2. Los 2 cardioides (como en la figura anterior) 3. Las 5 parabolas por cada lado de los ejes.

2. Movimiento parablico, resolver el siguiente ejercicio: Se patea un baln de ftbol con un ngulo de 37 con una magnitud en la velocidad de 20 m/s. Calcule: a) La altura mxima. b) El tiempo que permanece en el aire. c) La distancia a la que llega al suelo.

El programa deber pedir las entradas y mostrar la respuesta a los 3 literales anteriores. Deber mostrar 10 puntos en una tabla para mostrar el comportamiento que describe el objeto, de esta forma: Vx= {Vox} m/s Vy= {Vy} m/s X= {x} m Y={y} m en un t= {t} s Vx= {Vox} m/s Vy= {Vy} m/s X= {x} m Y={y} m en un t= {t} s Vx= {Vox} m/s Vy= {Vy} m/s X= {x} m Y={y} m en un t= {t} s Vx= {Vox} m/s Vy= {Vy} m/s X= {x} m Y={y} m en un t= {t} s ..

Vous aimerez peut-être aussi