Capítulo 2.

79
7 Capítulo 2 Introducción a MatLab 2.1. Introducción ¿Qué es MatLab? Es un software de la empresa Mathworks ubicada en Natick pueblo del estado estadounidense de Massachusetts. La primera versión del mismo fue desarrollada en la década de 1970 por el norteamericano Cleve Moler, profesor de matemáticas y ciencias de la computación por casi 20 años de las Universidades de Nuevo México, de Michigan y de Stanford. 1 El nombre simboliza Matriz Laboratorio o Laboratorio de Matrices. Es un lenguaje de programación basado en arreglos (matrices) que con el tiempo se ha convertido en una herramienta didáctica para el desarrollo de cursos tanto avanzados como introductorios en matemática e ingeniería. MatLab, además de ser utilizado en el desarrollo de los algoritmos, análisis de datos, visualización y cálculo numérico también es utilizado en áreas tan variadas como los automóviles, los aviones, los audífonos, teléfonos celulares, los precios de derivados financieros y académicos. Las aplicaciones están organizadas en librerías especializadas o en cajas de herramientas (en inglés toolboxes). En este capítulo se desarrollan ejemplos y se proponen ejercicios que demandan el manejo de comandos básicos del programa que le permitirán al usuario entre otras cosas: graficar, programar, simular y animar los modelos matemáticos. 1 http://ordenador.wingwit.com/Programacion/computer-programming-languages/87495.html

description

MATABLA

Transcript of Capítulo 2.

  • 7

    Captulo 2

    Introduccin a MatLab

    2.1. Introduccin

    Qu es MatLab? Es un software de la empresa Mathworks ubicada en Natick pueblo

    del estado estadounidense de Massachusetts. La primera versin del mismo fue desarrollada

    en la dcada de 1970 por el norteamericano Cleve Moler, profesor de matemticas y

    ciencias de la computacin por casi 20 aos de las Universidades de Nuevo Mxico, de

    Michigan y de Stanford. 1

    El nombre simboliza Matriz Laboratorio o Laboratorio de Matrices. Es un lenguaje

    de programacin basado en arreglos (matrices) que con el tiempo se ha convertido en una

    herramienta didctica para el desarrollo de cursos tanto avanzados como introductorios en

    matemtica e ingeniera. MatLab, adems de ser utilizado en el desarrollo de los

    algoritmos, anlisis de datos, visualizacin y clculo numrico tambin es utilizado en reas

    tan variadas como los automviles, los aviones, los audfonos, telfonos celulares, los

    precios de derivados financieros y acadmicos. Las aplicaciones estn organizadas en

    libreras especializadas o en cajas de herramientas (en ingls toolboxes).

    En este captulo se desarrollan ejemplos y se proponen ejercicios que demandan el

    manejo de comandos bsicos del programa que le permitirn al usuario entre otras cosas:

    graficar, programar, simular y animar los modelos matemticos.

    1 http://ordenador.wingwit.com/Programacion/computer-programming-languages/87495.html

  • 8

    El objetivo del captulo es crear el espacio dedicado al aprehendizaje de las

    herramientas computacionales necesarias para el desarrollo de la competencia de modelado

    matemtico y simulacin. Cabe anotar que las soluciones que se presentan para resolver los

    ejemplos propuestos no son las nicas maneras de manipulacin del programa.

    El captulo se organiz de la siguiente manera: en la seccin 1.2 se revisa la edicin de

    matrices, en la seccin 1.3 se estudian los comandos que permiten graficar funciones en dos

    dimensiones, en la seccin 1.4 se analizan las estructuras bsicas de programacin, en la

    seccin 1.5 se construyen interfaces, en la seccin 1.6 se disean figuras en dos

    dimensiones y en la ltima seccin, es decir en la seccin 1.7 se desarrollan animaciones de

    trayectorias.

  • 9

    2.2. Matrices

    Para editar matrices en la ventana de comandos (o consola como se le conoce tambin),

    se utilizarn los parntesis cuadrados o corchetes [ ], separando los datos por espacios o

    comas, a la vez que las filas se separan por punto y coma (figura 1).

    Figura 1: Ilustra la ventana de comandos (en ingls Command Window)

    Ejemplo 1. Edicin de Vectores y Matrices

    Editar en la ventana de comandos las siguientes matrices:

    a) = (1 2 32 1 4

    ) b) = (1 20 0.59 7

    )

    c) = (3 0 54 1 42 0 3

    ) d) = (0.1 0.2 0.3 0.4 0.5 )

    e) = (123)

  • 10

    Solucin

    a) A = [ 1 2 3; 2 1 4 ]

    a) A = [ 1, 2, 3; 2, 1, 4 ]

    b) B = [ -1 2; 0 0.5; 9 -7 ]

    c) C = [ 3 0 5; 4 1 4; 2 0 3 ]

    d) D = [ 0.1 0.2 0.3 0.4 0.5 ]

    e) E = [ -1; -2; -3 ]

    Sugerencia

    Para borrar una variable especfica se escribe el comando clear dejando un espacio y

    escribiendo el nombre de la variable que se desea borrar. Utilizando slo el comando clear

    se borran todas las variables que se tienen asignadas en la memoria. Para borrar nicamente

    el contenido de la pantalla se escribe el comando clc seguido de ENTER.

    Ejemplo 2. Operaciones bsicas entre Matrices

    Con las matrices definidas en el ejemplo 1, computar, si es posible, las siguientes

    operaciones:

    a) AB

    b) BA + C

    c) D + E

    d) A B

    e) E2

    Solucin

    Los smbolos + - * / son los operadores para suma, resta, multiplicacin y divisin

    respectivamente (como en una calculadora).

  • 11

    a) A * B

    b) B * A + C

    c) D + E Error using + Matrix dimensions must agree.

    MatLab indica que hay un error porque las matrices no son del mismo tamao.

    d) A B Error using Matrix dimensions must agree.

    MatLab indica que hay un error porque las matrices no son del mismo tamao.

    e) E * E Error using * Inner matrix dimensions must agree.

    MatLab indica que hay un error porque las matrices no se pueden multiplicar.

    e) E . 2 Para poder elevar al cuadrado cada elemento de la matriz E se tiene que escribir

    los dos caracteres . que corresponden a la potenciacin de arreglos.

    Sugerencia

    Para entender los mensajes de error que nos muestra MatLab, se debe, frecuentemente

    hacer uso de la teora del lgebra Lineal. Tenga en cuenta cuando escriba los nombres de

    comandos, funciones y variables que MatLab distingue entre maysculas y minsculas.

    Ejemplo 3. Operaciones con Matrices Traspuestas

    Con las matrices definidas en el ejemplo 1, computar, si es posible, las operaciones con las

    matrices traspuestas.

    a) AT

    b) BTAT

    c) (AB)T

    d) (C + BA)T

    e) DT ET

  • 12

    Solucin

    Para obtener la matriz traspuesta se debe usar la comilla simple

    a) A

    b) B * A

    c) ( A * B )

    d) ( C + B * A )

    e) D - E Error using - Matrix dimensions must agree.

    MatLab indica que hay un error porque las matrices no son del mismo tamao.

    Ejemplo 4. Las entradas de una Matriz

    Definir la matriz A en la ventana de comandos.

    =

    (

    1 2 3 45 2 7 8962

    051

    840

    739)

    Determinar el tamao y el valor de las entradas indicadas:

    a) a11

    b) a12

    c) a21

    d) a44

    e) a55

    Solucin

    A = [ 1 -2 3 4; 5 2 7 8; 9 0 8 7; 6 5 4 3; 2 1 0 9]

    size(A)

  • 13

    El comando size( ) nos indica el nmero de filas y el nmero de columnas de una matriz.

    a) A (1, 1)

    b) A (1, 2)

    c) A (2, 1)

    d) A (4, 4)

    e) A (5, 5) Index exceeds matrix dimensions.

    MatLab nos indica que hay un error porque la matriz no tiene estas dimensiones. Esta

    matriz no tiene cinco columnas.

    Ejemplo 5. Seleccin de filas y columnas

    Definir la matriz A en la ventana de comandos.

    =

    (

    6 1 1 27 2 3 4890

    345

    579

    680)

    Seleccionar nicamente las filas y columnas que se indican en cada caso:

    a) Fila uno

    b) Fila tres

    c) Columna uno

    d) Columna cuatro

    e) Desde la fila uno hasta la fila tres.

    f) Desde la fila dos hasta la fila cuatro.

    g) Desde la columna uno hasta la columna tres.

    h) Desde la columna dos hasta la cuatro.

    i) La segunda y la cuarta fila nicamente.

    j) La primera y la tercera columna nicamente.

  • 14

    Solucin

    A = [ 6 1 1 2; 7 2 3 4; 8 3 5 6; 9 4 7 8; 0 5 9 0]

    a) A ( 1 , : )

    b) A ( 3 , : )

    c) A ( : , 1 )

    d) A ( : , 4 )

    e) A ( 1 : 3 , : )

    f) A ( 2 : 4 , : )

    g) A ( : , 1 : 3 )

    h) A ( : , 2 : 4 )

    i) A ( [ 2 4 ] , : )

    j) A ( : , [ 1 3 ] )

    Ejemplo 6. Submatrices

    Definir la matriz A en la ventana de comandos.

    = ( 1 23 0 1 3

    )

    Definir la submatriz B a partir de la matriz A.

    = (2 1 10 2 2

    )

    Solucin

    A = [ 2, 1, 1, 1 ; 0, 2, 2, 2 ; 3, 0, 1, 3 ]

    B = A ( 1 : 2 , 1 : 3 )

  • 15

    Ejemplo 7. Formatos Numricos

    Definir la matriz A en la ventana de comandos.

    = (1 1

    2 1

    3 1

    4 1

    5 1

    6 )

    Usar los siguientes formatos numricos:

    a) format long

    b) format short

    c) format rat

    Solucin

    El resultado numrico que se obtiene en la ventana de comandos se puede visualizar en

    diferentes formatos:

    a) Para obtener ms de cuatro dgitos despus del punto decimal en la ventana de

    comandos se debe escribir format espacio long y a continuacin se define el vector A.

    format long

    = [ 1 1/2 1/3 1/4 1/4 1/5 1/6 ]

    b) Para obtener una forma racional en la ventana de comandos se debe escribir format

    espacio rat y a continuacin definir el vector A.

    format rat

    = [ 1 1/2 1/3 1/4 1/4 1/5 1/6 ]

    c) Para obtener cuatro dgitos despus del punto decimal en la ventana de comandos se

    debemos escribir format espacio short y a continuacin definir el vector A.

    format short

    = [ 1 1/2 1/3 1/4 1/4 1/5 1/6 ]

    Si no se indica lo contrario, por defecto se obtienen cuatro cifras decimales en la ventana de

    comandos.

  • 16

    Ejemplo 8. Matrices Especiales

    Definir las matrices especiales que se indican:

    a) La matriz A es una matriz de 3 x 4 de ceros.

    b) La matriz A es una matriz de 4 x 5 de unos.

    c) La matriz A es una matriz identidad de 3 x 3.

    d) La matriz A es una matriz de nmeros aleatorios de 3 x 2.

    Definir la matriz A en la ventana de comandos:

    = (

    3 3 0 16 4 0 309

    75

    1 21 8

    )

    e) La matriz U es la matriz triangular superior de A.

    f) La matriz L es la matriz triangular inferior de A.

    g) La matriz M es una matriz mgica de 3 x 3.

    Solucin

    a) A = zeros ( 3 , 4 )

    b) A = ones ( 4 , 5 )

    c) A = eye ( 3 )

    d) A = rand (3 , 2 )

    A = [ 3,3,0,1 ; 6,4,0,3 ; 0,7,1,2 ; 9, 5, 1, 8 ]

    e) U = triu ( A ) El comando triu( ) extrae la parte superior de A.

    f) L = tril ( A ) El comando tril( ) extrae la parte inferior de A.

    g) M = magic ( 3 ) Por qu se les denominan matrices mgicas?

  • 17

    Ejemplo 9. Cambios e intercambios

    Definir la matriz A en la ventana de comandos:

    = (

    1 2 3 42 5 3 010

    49

    1 50 8

    )

    a) Cambiar la entrada A32 por 8.

    b) Cambiar los valores de la tercera fila por 5.

    c) Cambiar los valores de la segunda columna por 1.

    d) Intercambiar las filas 2 y 3.

    e) Intercambiar las columnas 2 y 3.

    Solucin

    A = [ 1 2 3 4 ; 2 5 3 0 ; 1 4 1 5 ; 0 9 0 8 ]

    a) A ( 3 , 2 ) = 8

    b) A ( 3 , : ) = 5

    c) A ( : , 2 ) = 1

    d) A ( [ 2 , 3 ] , : ) = A ( [ 3 , 2 ] , : )

    e) A ( : , [ 2 , 3 ] ) = A ( : , [ 3 , 2 ] )

    Ejemplo 10. Construccin de Matrices

    Construir una matriz A tomando como filas los siguientes vectores:

    A1 = [ 1 2 3 ]

    A2 = [ 4 5 6 ]

    A3 = [ 7 8 9 ]

  • 18

    Solucin

    A1 = [ 1 2 3 ]

    A2 = [ 4 5 6 ]

    A3 = [ 7 8 9 ]

    A = [ A1 ; A2 ; A3 ]

    Tareas 2.2

    1. Definir o editar en la ventana de comandos las siguientes matrices:

    = (5 2 32 3 4

    ) = (2 1 1 10 2 2 23 0 1 3

    )

    = (

    1 0 79 5 103

    40

    68

    ) = (1 35 92 4

    )

    2. Indicar el error que se cometi en cada caso al editar la matriz A. Explicar las

    respuestas.

    a) A = [ 0 1 0 1 ; 1 0 1 0 ; 0 11 0 ; 1 0 0 1 ]

    b) A = [ 0 1 0 1 ; 1 1 0 ; 0 1 1 0 ; 1 0 0 1 ]

    c) A = [ 0 1 0 1 ; 1 0 1 0 ; 0 1 1 0 1 0 0 1 ]

    d) A = [ 0 1 0 1 ; 1010 ; 0 1 1 0 ; 1 0 0 1 ]

    3. La operacin C + B no es posible efectuarla para las matrices del ejercicio 1. Editar las

    instrucciones adecuadas para poder sumar estas dos matrices.

    4. Proponer tres matrices A, B, y C para verificar la propiedad asociativa para el producto

    entre matrices. Es decir, probar que A(BC) = (AB)C.

  • 19

    5. Escribir las instrucciones que permitan obtener las cuatro submatrices que se indican

    con las lneas punteadas A1, A2, A3, A4.

    = (1 5 2 7 84 3 1 4 20 6 5 3 6

    )

    6. Definir la matriz =

    (

    10203)

    en la ventana de comandos. Explicar la respuesta de

    MatLab cuando se le piden los siguientes productos:

    a) A * A

    b) A . * A

    7. Definir la matriz cuadrada A en la ventana de comandos.

    =

    (

    0 1 0 0 00 0 1 0 0000

    000

    000

    100

    010)

    Describir en cada caso el comportamiento de cuando n = 2, 3, 4, 5, 6.

    a) A . ^ n

    b) A * A * A * * A ( n veces )

    8. Sea la matriz = (

    1 2 3 42 5 3 010

    49

    10

    58

    ).

    Escribir las instrucciones utilizadas para construir la matriz B.

  • 20

    Instrucciones:

    La primera fila B1 es la segunda columna de A.

    La segunda fila B2 es la primera columna de A.

    La tercera fila B3 es el cuadrado de la primera fila de A.

    La cuarta fila B4 es la raz cuadrada de la cuarta fila de A.

    La raz cuadrada la podemos obtener con la instruccin sqrt( ).

    9. Sea la matriz = (

    1 3 5 70 2 4 698

    10

    32

    54

    ). Escribir las instrucciones para determinar:

    a) La matriz equivalente A1 despus de multiplicar por 3 la primera fila de A.

    b) La matriz equivalente A2 despus de multiplicar por 2 la segunda columna de A.

    c) La matriz equivalente A3 despus de multiplicar por -9 la primera fila y sumarla a

    la fila cuatro de A.

    2.3. Grficas en dos dimensiones

    Los comandos que permiten graficar funciones en dos dimensiones se ilustran en los

    siguientes ejemplos. Con MatLab es posible agrupar y superponer las grficas de dichas

    funciones. Tenga en cuenta que en este volumen se manejan funciones en dos dimensiones

    pero el programa tambin lo hace con tres dimensiones, funciones vectoriales, etc.

    Ejemplo 1. Funcin exponencial decreciente

    Dibujar la grfica de la funcin exponencial decreciente () = con las caractersticas

    indicadas.

    a) El dominio es el intervalo [ -2, 1.5 ]. El paso entre los datos es 0.01.

    b) Etiqueta del eje horizontal x.

    c) Etiqueta del eje vertical f ( x ).

    d) Ttulo de la grfica Funcin Exponencial Decreciente .

  • 21

    Solucin

    Para graficar funciones de una variable independiente, se determina primero el dominio o el

    intervalo donde se desea obtener la grfica. Esto se hace definiendo un vector de n datos

    con el nombre de la variable independiente, en el que se especifican: el valor inicial, el

    intervalo entre puntos consecutivos (denominado el paso) y el valor final.

    a) x = -2 : 0.01 : 1.5 ;

    Por qu se escribe el punto y coma al final de la instruccin? El punto y coma que se

    escribe al final de la instruccin evita que MatLab despliegue los resultados en la ventana

    de comandos.

    f = exp ( - x ) ;

    Para construir la grfica se usa el comando plot( )

    plot ( x, f )

    b) xlabel ( x )

    c) ylabel ( f ( x ) )

    d) title ( Funcin Exponencial Decreciente )

    Ejemplo 2. Funcin exponencial creciente

    Dibujar la grfica de la funcin exponencial creciente () = con las caractersticas

    indicadas.

    a) El dominio es el intervalo [ -2, 2]. El paso entre los datos es 0.2.

    b) Etiqueta del eje horizontal x. Tamao 15.

    c) Etiqueta del eje vertical f ( x ). Tamao 15.

    d) Ttulo de la grfica Funcin Exponencial Creciente.

    e) Con cuadrcula.

    f) La grfica debe estar ubicada en la regin 3 4 ; 1 8.

  • 22

    Solucin

    a) x = -2 : 0.2 : 2 ;

    f = exp ( x ) ;

    plot ( x, f )

    b) xlabel ( x , fontsize , 15 )

    c) ylabel ( f ( x ) , fontsize , 15 )

    d) title ( Funcin Exponencial Creciente )

    e) grid on

    f) axis ( [ -3, 4, -1, 8 ] )

    El comando axis( ) permite escalar los ejes y cambiar su apariencia.

    Ejemplo 3. Funcin trigonomtrica seno

    Dibujar la grfica de la funcin trigonomtrica = () con las caractersticas

    indicadas.

    a) El dominio es el intervalo [ -4, 4 ].

    El dominio es un vector con 200 datos.

    b) La grfica de color rojo. El tamao de lnea 3.

    c) Etiqueta del eje horizontal t . Tamao 14.

    d) Etiqueta del eje vertical y(t) . Tamao 14.

    e) Ttulo de la grfica Funcin Seno. Tamao 14.

    f) Con cuadrcula.

    g) La grfica debe estar ubicada en la regin 2 2 ; 1.5 1.5.

    Solucin

    Un comando que tambin se puede usar para definir el vector del dominio es

    linspace(min,mx,N). Cuando no se indica un valor para N, MatLab presenta por defecto

    un vector linealmente espaciado de 100 datos.

  • 23

    a) t = linspace ( -4*pi, 4*pi, 200 ) ;

    y = sin ( t ) ;

    b) plot ( t, y, r, linewidth, 3 )

    c) xlabel ( t , fontsize , 14 )

    d) ylabel ( y ( t ) , fontsize , 14 )

    e) title ( Funcin Seno , fontsize, 14 )

    f) grid on

    g) axis ( [ -2 * pi, 2 * pi, -1.5, 1.5 ] )

    Sugerencia

    Cuando no se quiere manejar la cuadrcula se escribe el comando grid off

    Ejemplo 4. Funcin trigonomtrica coseno

    Dibujar la grfica de la funcin trigonomtrica = () con las caractersticas

    indicadas.

    a) El dominio es el intervalo [ -4, 4 ]. El dominio es un vector con 300 datos.

    b) La grfica de asteriscos de color rojo.

    c) La grfica dentro de un cuadrado, sin cambiar el rango de los ejes.

    Solucin

    a) t = linspace ( -4*pi, 4*pi, 300 ) ;

    y = cos ( t ) ;

    b) plot ( t, y, * r )

    c) axis square

    Sugerencia

    Para consultar todo lo que MatLab puede desarrollar con las grficas, como por ejemplo los

    colores que maneja, se escribe el comando help plot seguido de ENTER. A continuacin

  • 24

    aparecer una descripcin del comando plot en la ventana de comandos. Esto aplica para

    cualquier otro comando.

    Ejemplo 5. Funcin exponencial

    Dibujar la grfica de la funcin exponencial = 2 con las caractersticas indicadas.

    a) El dominio es el intervalo [ -3, 6 ]. El paso de 0.01.

    b) La grfica de color negro. El tamao de lnea 4.

    Solucin

    a) x = -3 : 0.01 : 6 ;

    y = exp ( - x. 2 ) ;

    b) plot ( x, y, k, linewidth, 4 )

    Ejemplo 6. Funcin definida como un producto

    Dibujar la grfica de la funcin = 2 con las caractersticas indicadas.

    a) Dominio el intervalo [ -3, 3 ].

    El dominio es un vector con 500 datos.

    b) La grfica de color verde. El tamao de lnea 2.

    Solucin

    a) x = linspace ( -3 , 3 , 500 ) ;

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

    Cuando escribimos los caracteres .* se est pidiendo a MatLab una multiplicacin de

    arreglos.

    b) plot ( x, y, g , linewidth, 2 )

  • 25

    Ejemplo 7. Grficas en figuras separadas

    Dibujar las grficas de las funciones () y () en dos figuras por separado con las

    caractersticas indicadas.

    () = 2

    () = 22

    a) Primero borre todas las variables definidas

    b) Dominio el intervalo [ -1, 3 ] ; El paso de 0.01

    c) Ambas figuras con cuadrcula

    Solucin

    a) clear all

    b) x = -1 : 0.01 : 3 ;

    f = exp ( - x. 2 ) ;

    g = 2 * exp ( - x. 2 );

    c) plot ( x, f ), grid on

    figure

    c) plot ( x, g ), grid on

    Ejemplo 8. Grficas en la misma figura

    Dibujar las grficas de las funciones () y () agrupndolas en una sola figura con las

    caractersticas indicadas.

    () = 2

    () = 22

    a) Dominio el intervalo [ -1, 3 ].

    El dominio es un vector con 50 datos.

  • 26

    b) La grfica de () con trazo continuo de color rojo y la grfica de () con trazo

    discontinuo de color azul.

    c) Una leyenda que referencie a cada una de las funciones

    Solucin

    a) x = linspace ( -1, 3, 50 );

    f = exp (- x. 2 ) ;

    g = 2 * exp (- x. 2 ) ;

    b) plot ( x, f, r, x, g, b. )

    c) legend ( f ( x ) , g ( x ) ) El comando legend( ) nos permite identificar la

    grfica de cada una de las funciones.

    Ejemplo 9. Variables Lgicas

    a) Escribir un vector x con los nmeros del 1 hasta el 9.

    b) Escribir > 4.

    c) Escribir 2 < 6.

    d) Escribir 3 5.

    Solucin

    Para crear variables lgicas se utilizan los operadores relacionales ilustrados en la tabla 1.

    < Menor que

    > Mayor que

    = Mayor o igual que

    == Igual

    ~ = Distinto

    Tabla 1: Operadores relacionales

  • 27

    Estos operadores se combinan con los operadores lgicos de la tabla 2.

    &

    |

    ~

    Tabla 2: Operadores lgicos

    a) x = 1 : 1 : 9

    b) x > 4

    c) ( 2 < x ) & ( x < = 6 )

    d) ( 3 < = x ) & ( x < = 5 )

    Ejemplo 10. Funcin definida a trozos

    Dibujar la grfica de la funcin () definida a trozos con las caractersticas indicadas.

    () = {2, < 01, 0 < 1 + 2, 1

    a) Dominio el intervalo [ -2, 3 ].

    El dominio es un vector con 500 datos.

    b) La grfica de color rojo. Tamao 3.

    Se debe observar la discontinuidad.

    c) Con cuadrcula.

    Solucin

    a) x = linspace ( -2, 3, 500 ) ;

    f = (x. 2).*(x

  • 28

    Ejemplo 11. Funcin definida por secciones

    Dibujar la grfica de la funcin () definida por secciones con las caractersticas

    indicadas:

    () = {2, < 10, 1 < 2, 2

    a) Dominio el intervalo [ -3, 4 ]. El dominio es un vector con 600 datos.

    b) La grfica de color negro. Tamao 4. No se debe observar las discontinuidades.

    c) Con cuadrcula.

    d) El tamao de los nmeros de los ejes es 15.

    e) El color del fondo es blanco.

    f) El color del fondo es amarillo.

    Solucin

    a) x = linspace ( -3, 4, 600 ) ;

    f = (-x. 2).*(x

  • 29

    Ejemplo 12. Grficas dentro de Matrices

    Dibujar en una matriz de tamao 2x2 las grficas de las funciones potencias que se indican

    a continuacin:

    La grfica de 1() = es de color rojo.

    La grfica de 2() = 2 es de color negro.

    La grfica de 3() = 3 es de color verde.

    La grfica de 4() = 4 es de color azul.

    El dominio es un vector con 400 datos en el intervalo [ -1, 1 ].

    Todas las grficas con cuadrculas.

    Solucin

    x = linspace ( -1, 1, 400 ) ;

    f1 = x ;

    f2 = x. 2 ;

    f3 = x. 3 ;

    f4 = x. 4 ;

    Para construir la matriz de 2 filas con 2 columnas cuyas entradas sean las grficas, se

    escribe el comando subplot.

    subplot (221), plot ( x, f1 , r ), grid on

    El 2 indica el nmero de filas, el 2 el nmero de columnas y el 1 corresponde a la grfica de

    la funcin.

    subplot (222), plot ( x, f2 , k ), grid on

    subplot (223), plot ( x, f3 , g ), grid on

    subplot (224), plot ( x, f4 , b ), grid on

  • 30

    Sugerencia.

    No se debe cerrar la grfica sino minimizarla para no perder la informacin editada.

    Ejemplo 13. Grficas dentro de Matrices

    Dibujar en una matriz de tamao 4x1 las grficas de las funciones trigonomtricas que se

    indican a continuacin.

    La grfica de 1() = () es de color negro.

    La grfica de 2() = (2) es de color azul.

    La grfica de 3() = (3) es de color rojo.

    La grfica de 4() = (4) es de color verde.

    El dominio es un vector con 500 datos en el intervalo [ 0, 2 ].

    Todas las grficas con cuadrculas. El color de fondo es amarillo.

    Solucin

    x = linspace ( 0, 2*pi, 500 ) ;

    y1 = sin (x) ;

    y2 = sin ( 2*x ) ;

    y3 = sin ( 3*x ) ;

    y4 = sin ( 4*x ) ;

    Los datos de entrada del comando subplot se pueden separar tambin por comas.

    subplot (4,1,1), plot ( x, y1 , k ), grid on

    subplot (4,1,2), plot ( x, y2 , b ), grid on

    subplot (4,1,3), plot ( x, y3 , r ), grid on

    subplot (4,1,4), plot ( x, y4 , g ), grid on

    set ( gcf, Color, y)

  • 31

    Tareas 2.3

    1. Volver a escribir el vector x usando la instruccin linspace.

    a) x = -5 : 0.01 : 5 ;

    b) x = -3 : 0.1 : 9 ;

    c) x = -10 : 0.2 : 10 ;

    d) x = 0 : 0.001 : 8 ;

    e) x = 2 : 0.5 : 50 ;

    2. Volver a escribir el vector x indicando el paso entre los datos.

    a) x = linspace ( -6, 6, 100 );

    b) x = linspace ( -2, 2, 500 );

    c) x = linspace ( 0, 10, 1000 );

    d) x = linspace ( -pi, pi, 20 );

    e) x = linspace ( 0, 50, 300 );

    3. Dibujar las grficas de las funciones trigonomtricas agrupndolas en una misma figura

    y con las caractersticas indicadas:

    () = ()

    () = 2()

    () = 3()

    a) Dominio el intervalo [ -2 , 2 ]. El dominio contiene 500 datos.

    b) La grfica de () es de color rojo, la grfica de () es de color verde y la grfica de

    () es de color azul.

    c) Una leyenda que referencie a cada una de las funciones.

    4. En la figura 2 se ilustra la grfica de la funcin = 22 + 3 5. Escribir las

    instrucciones que la caracterizan.

  • 32

    Figura 2: Grfica de = +

    5. En la figura 3 se ilustra la grfica de la funcin = 22 + 3 5. Escribir las

    instrucciones que la caracterizan.

    Figura 3: Grfica de = +

    6. Dibujar la grfica de la funcin () definida por secciones con las caractersticas

    indicadas.

  • 33

    () = {0, < 0

    1, 0

    a) Dominio el intervalo [ -10, 10 ].El dominio es un vector con 300 datos.

    b) La grfica de color rojo. Tamao 3. Se deben observar las discontinuidades.

    c) Con cuadrcula.

    d) La grfica debe estar ubicada en la regin 15 15;1 2

    e) El tamao de los nmeros de los ejes es 18

    f) El color del fondo es blanco

    7. Dibujar la grfica de la funcin () definida por intervalos con las caractersticas

    indicadas:

    () = {, < 0

    , 0

    a) Dominio el intervalo [ -5, 5 ]. El dominio es un vector con 100 datos.

    b) La grfica de color magenta. Tamao 3. Se deben observar las discontinuidades.

    c) Con cuadrcula.

    d) El tamao de los nmeros de los ejes es 18.

    e) El color del fondo es blanco.

    f) Etiqueta para el eje horizontal x . Tamao 18.

    g) Etiqueta para el eje vertical f ( x ) . Tamao 18.

    h) Ttulo Funcin a intervalos .

    8. Dibujar en una matriz de tamao 1x2 las grficas de las funciones que se indican a

    continuacin:

    La grfica de 1() = 1.2(2) + sen(1.2) + 3 es de color rojo.

    La grfica de 2() = 1.2(2) cos(1.2) 3 es de color azul

  • 34

    El dominio de las funciones es un vector de 600 datos en el intervalo [ , ]. El

    color del fondo es verde.

    9. Dibujar en una matriz de tamao 2x1 las grficas de las funciones que se indican a

    continuacin:

    La grfica de 1() = () + cos (2) es de color rojo.

    La grfica de 2() = () + cos (3) es de color azul.

    El dominio de las funciones es un vector de 250 datos en el intervalo [ 0, 8 ]. El color

    del fondo es blanco.

    10. Escribir los comandos que se usaron para obtener la grfica que se ilustra en la figura 4.

    Figura 4: Grfica del ejercicio 10

    11. De acuerdo con las instrucciones, escribir la frmula de la funcin definida a trozos.

    Dibujar con lpiz y papel la grfica.

    t = -2 : 0.001 : 2;

    y = (-1).*((-2

  • 35

    2.4. Programacin con MatLab

    MatLab proporciona un lenguaje de programacin robusto con un ambiente

    computacional interactivo y amigable. Una de las ventajas que se tiene al programar en

    MatLab sobre otros lenguajes de programacin, es que MatLab no requiere que se declaren

    las variables y sus tipos al principio del programa ya que estas se definen automticamente

    cuando se usan por primera vez.

    2.4.1. Archivos en MatLab

    Los archivos que contienen cdigo MatLab se denominan archivos-M (en ingls M-

    files) y tienen la extensin.m. Existen dos tipos de estos archivos: los guiones y las

    funciones.

    Los guiones (en ingls scripts) no aceptan datos de entrada o producen argumentos

    de salida. Manejan datos de variables que se han usado previamente.

    Las funciones (en ingls functions) pueden aceptar datos o argumentos de entrada y

    regresan tambin datos de salida. Las variables internas de una funcin son

    variables locales.

    Para editar un archivo-M se puede usar un editor de textos como Word; lo nico que se

    debe hacer al terminar es guardar el archivo de texto con la extensin.m.

    2.4.2. Diagramas de flujo

    Un diagrama de flujo (en ingls flowchart) es una de las tcnicas que se utilizan

    para representar los algoritmos. En la figura 5, se ilustran algunos de los smbolos usados

    en el diseo de los diagramas de flujo.

  • 36

    Figura 5: Se ilustran algunos smbolos de un diagrama de flujo

    2.4.3. Estructuras bsicas de programacin

    El aprehendizaje de las estructuras de programacin permite, entre otras cosas:

    programar, simular y animar las soluciones de los modelos.

    Ejemplo 1.

    Estructura if - end

    Tiene la forma general:

    if condicin

    instrucciones

    end

    Dibujar un diagrama de flujo para esta estructura.

  • 37

    Solucin

    Figura 6: Se ilustra el diagrama de flujo de

    la estructura if - end

    La condicin del if puede contener operadores lgicos.

    Si la condicin se cumple entonces se ejecutan las instrucciones siguientes hasta el end.

    Si la condicin no se cumple, el programa ejecuta la primera instruccin despus de end.

    Esta instruccin requiere ser cerrada por lo que el end se coloca en el punto donde se unen

    las dos bifurcaciones s y no.

    Ejemplo 2.

    Archivo-m function

    Escribir en un archivo-m function el siguiente programa:

    Asigna el valor de la funcin () = si y asigna el valor de la funcin

    () = si > .

  • 38

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura if end.

    Solucin

    a) El diagrama de flujo es tarea para el lector.

    b) La forma general del formato funcin (function) es:

    function [ y ] = operacin ( x )

    y = instrucciones

    end

    x es el argumento o parmetro de entrada

    y es argumento o parmetro de salida de la funcin

    operacin es el nombre que se le asigna a la funcin

    Para escribir el cdigo se accede al editor (figura 7). Esto puede hacerse desde el men

    usando la ruta: File / New / Function

    Figura 7: Ilustra la plantilla del formato function (versin R2011a)

  • 39

    El smbolo % se usa para escribir los comentarios que detallan y explican los cdigos.

    Es decir, si se inicia con este smbolo, MatLab interpretar esto como una lnea de

    comentarios. La codificacin se escribir sobre la plantilla como se ilustra en la figura 8

    despus de borrar los comentarios de color verde.

    Figura 8: Ilustra el cdigo del ejemplo 2

    Se guarda el documento con la extensin m. Hay que tener en cuenta que el nombre de

    la funcin debe coincidir con el nombre del archivo-M con el cual se guarda. De no ser as,

    se podrn presentar errores de directorio y/o ejecucin. A continuacin en la ventana de

    comandos aparecer un mensaje de error como se muestra en la figura 9.

    Figura 9: Ilustra un mensaje de error arrojado por MatLab

  • 40

    MatLab est indicando que no se ha definido el argumento o la variable x. Por tanto, se

    debe ingresar los valores seguidos de ENTER para que devuelva las respectivas salidas.

    Por ejemplo para: x = -10, x = 0, x = 25 escribimos:

    ejemplo2( -10 )

    ejemplo2( 0 )

    ejemplo2( 25 )

    Recomendacin

    Para no estar escribiendo las mismas instrucciones cada rato, se usan las teclas , . Estas

    devuelven a la ventana de comandos las instrucciones establecidas previamente y

    guardadas en el histrico de comandos (en ingls Command History).

    Ejemplo 3.

    Archivo-m function

    Escribir en un archivo-m function el siguiente programa:

    Extrae la diagonal principal de una matriz cuadrada M. Si la matriz no es cuadrada

    arroja un mensaje.

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura if end.

    Solucin

    a) El diagrama de flujo es tarea para el lector.

    b) El cdigo se ilustra en la figura 10.

  • 41

    Figura 10: Ilustra el cdigo del ejemplo 3

    MatLab contiene muchas funciones ubicadas en libreras especializadas llamadas

    toolboxes. Por ejemplo, la funcin que nos permite extraer la diagonal de una matriz es

    diag( ). Cuando se quiere enviar mensajes al usuario se emplean funciones como las

    siguientes:

    disp( mensaje ) MatLab le muestra un mensaje al usuario.

    error( mensaje ) MatLab le muestra un mensaje al usuario y adems detiene la ejecucin

    del programa.

    Estas funciones se manejan como subrutinas para escribir programas ms complejos.

    Ejemplo 4.

    Estructura if - else - end

    Una segunda forma del if end es la inclusin de la clusula else. Esta nueva clusula le

    permite al programador el uso de un solo if en muchos casos para ejecutar dos bloques de

    instrucciones.

    La forma general es:

    if condicin

    instrucciones a1

    instrucciones a2

  • 42

    *

    *

    instrucciones an

    else

    instrucciones b1

    instrucciones b2

    *

    *

    instrucciones bn

    end

    Dibujar un diagrama de flujo para esta estructura.

    Solucin

    Figura 11: Ilustra el diagrama de flujo de la estructura if else - end

  • 43

    Si la condicin se cumple, se ejecutan las instrucciones a1 a la an.

    Despus de la instruccin an, MatLab contina con la instruccin que sigue el end.

    Si la condicin no se cumple, se ejecutan las instrucciones b1 a la bn.

    Cuando se termina la instruccin bn, MatLab continua con la instruccin que sigue el end.

    Claramente se ve que el if else end sustituye a dos if end.

    El programador tiene la libertad de usar la estructura que crea ms conveniente.

    Ejemplo 5.

    Archivo m-function

    Escribir en un archivo-m function el siguiente programa:

    Calcula las soluciones de un sistema de dos ecuaciones con dos incgnitas

    {

    + =

    + =

    Usando La Regla de Cramer.

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura if else - end.

    Solucin

    a) El diagrama de flujo es tarea para el lector.

    b) El cdigo se ilustra en la figura 12.

    Para el caso particular { + = 22 = 3

    los parmetros de entrada son respectivamente:

    a1 = 1, a2 = 1, a3 = 2, b1 = 2, b2 = -1, b3 = 3

  • 44

    Figura 12: Cdigo del ejemplo 5

    Para obtener los dos resultados, en la ventana de comandos se escribe:

    [ x, y ] = ejemplo5 ( 1, 1, 2, 2, -1, 3 )

    Qu sucede con los valores [ x, y ] = ejemplo5 ( 1, 1, 2, 1, 1, 3 )?

    Cuando se necesita manejar ms de dos bloques de instrucciones se usa la forma

    if elseif - else end.

    Ejemplo 6.

    Archivo m-function

    Escribir en un archivo-m function el siguiente programa:

    Determina si un nmero es positivo, es negativo o es nulo.

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura if elseif else - end.

  • 45

    Solucin

    a) El diagrama de flujo es tarea para el lector.

    b) El cdigo se ilustra en la figura 13.

    Figura 13: Se ilustra el cdigo del ejemplo 6

    Ejemplo 7.

    Estructura switch - case - end

    Se usa cuando se quiere revisar si una expresin es igual a algn valor determinado.

    No se puede usar para revisar condiciones como a > 5 o b 3.

    La forma general es:

    switch expresin

    case valor 1

    instrucciones a1

    instrucciones a2

  • 46

    *

    *

    instrucciones an

    case valor 2

    instrucciones b1

    instrucciones b2

    *

    *

    instrucciones bn

    case valor 3

    instrucciones c1

    instrucciones c2

    *

    *

    instrucciones cn

    case valor m

    instrucciones m1

    instrucciones m2

    *

    *

    instrucciones mn

    otherwise

    instrucciones

    end

    Dibujar un diagrama de flujo para esta estructura.

    Solucin

  • 47

    Figura 14: Ilustra el diagrama de flujo de la estructura switch case - end

    Cada valor puede ser numrico o una cadena de texto.

    Adems, cada case puede tener uno o ms valores, como en:

    case { valor1 valor2, , valork }

    instruccin 1

    instruccin 2

    *

    *

    instruccin m

    En este caso si la expresin es igual a cualquiera de los valores valor1, valor2, , valork

    se ejecutan las instrucciones 1 a la m.

    Ejemplo 8.

    Archivo-function

    Escribir en un archivo-m function el siguiente programa:

  • 48

    Extrae: la diagonal principal de una matriz, la matriz triangular inferior, la matriz

    triangular superior y la traza (o suma de los elementos de la diagonal principal).

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura switch case - end.

    Solucin

    a) El diagrama de flujo es tarea para el lector.

    b) El cdigo se ilustra en la figura 15.

    Figura 15: Se ilustra el cdigo del ejemplo 8

    Ejemplo 9.

    Archivo-m function

    Escribir en un archivo-m function el siguiente programa:

    Construye la grfica de la funcin potencia () = :

    Lineal (n = 1)

  • 49

    Cuadrtica (n = 2)

    Cbica (n = 3)

    n =

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura switch case - end.

    Solucin

    a) El diagrama de flujo es tarea para el lector.

    b) El cdigo se ilustra en la figura 16.

    Figura 16: Ilustra el cdigo del ejemplo 9

  • 50

    Ejemplo 10.

    Archivo-m function

    Escribir en un archivo-m function el siguiente programa:

    Construye la grfica de las funciones:

    Exponencial decreciente; Exponencial creciente; Logartmica con base 10; Seno;

    Coseno.

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura switch case - end.

    Solucin

    a) El diagrama de flujo es tarea para el lector.

    b) El cdigo se ilustra en la figura 17.

    Figura 17: Ilustra el cdigo del ejemplo 10

  • 51

    Ejemplo 11. Estructura condicional for - end

    La instruccin for la usamos para formar ciclos o bucles de instrucciones que se tienen que

    repetir un nmero determinado de veces.

    for variable = expresin

    instrucciones a1

    instrucciones a2

    *

    *

    instrucciones an

    end

    Dibujar un diagrama de flujo para esta estructura.

    Solucin

    Figura 18: Ilustra el diagrama de flujo de la estructura condicional for end

  • 52

    Aqu, I es la variable de control, es el valor inicial, es el valor final y es el

    incremento.

    En esta instruccin, si se cumple que variable=expresin entonces se ejecutan las

    instrucciones de la 1 a la n para continuar despus de la instruccin que est despus del

    end.

    Si no se cumple, ya no se ejecutan las instrucciones de la 1 a la n y la siguiente instruccin

    que se ejecuta es la que est despus del end.

    Es posible que las instrucciones de la 1 a la n no se ejecuten ni una sola vez.

    El end de este ciclo se sita exactamente donde est el indicador de retorno representado

    por el crculo.

    Ejemplo 12.

    Archivo-m function

    Escribir en un archivo-m function el siguiente programa:

    Determina la suma de las n primeras potencias del nmero 2.

    Es decir,

    = = + + ++ .

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura condicional for - end.

    Solucin

    a) El diagrama de flujo es tarea para el lector.

    b) El cdigo se ilustra en la figura 19.

  • 53

    Figura 19: Ilustra el cdigo del ejemplo 12

    Al ejecutar el programa aparecer un error en la ventana de comandos. Por qu?

    Resulta que cuando el for inicia no encuentra el primer valor para la suma. Para solucionar

    el problema, escribimos antes del for, la instruccin:

    suma = 0;

    Ejemplo 13.

    Archivo-m script

    Escribir en un archivo-m script el siguiente programa:

    Construye una matriz de m x n cuyos valores se obtienen sumando la fila i con la

    columna j respectivamente.

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura for - end.

    Solucin

    La for se puede anidar, es decir, dentro de un ciclo de for puede haber uno o ms ciclos de

    for como se muestra a continuacin.

  • 54

    a) El diagrama de flujo es tarea para el lector.

    b) El cdigo se ilustra en la figura 20.

    Figura 20: Ilustra el cdigo del ejemplo 13

    Despus del ltimo end se coloca la instruccin disp(A) para que nos muestre la

    matriz. En algunas ocasiones se necesita que el contador no vare de uno en uno. Para ello,

    se indica el tamao de paso en la instruccin for.

    Recomendacin

    MatLab dispone de operaciones matriciales y vectoriales optimizadas por lo que se debe

    evitar en lo posible el uso de bucles, ya que hacen que los programas funcionen ms

    lentamente.

    Ejemplo 14.

    Estructura condicional while - end

  • 55

    El condicional while se usa para repetir un conjunto de instrucciones un nmero

    indeterminado de veces. La diferencia con el for es que ste se ejecuta un nmero

    determinado de veces.

    La forma general del condicional while es:

    while condicion

    instrucciones a1

    instrucciones a2

    *

    *

    instrucciones an

    end

    Dibujar un diagrama de flujo para esta estructura.

    Solucin

    Figura 21: Ilustra el diagrama de flujo de la estructura while - end

  • 56

    La manera como un while funciona es la siguiente:

    Si la condicin no se cumple, entonces se ejecuta la primera instruccin despus del end.

    Si la condicin se cumple, se ejecutan todas las instrucciones de la 1 a la n.

    En este punto se revisa si la condicin se cumple todava, y de ser as se vuelven a ejecutar

    las instrucciones de la 1 a la n y se vuelve a revisar la condicin.

    Este proceso se repite hasta que la condicin no se cumple, en cuyo caso se salta a ejecutar

    la primera declaracin despus del end.

    El end de este condicional, se ubica en la salida negativa despus de todo el proceso de

    repetir como se puede observar en la figura 21.

    Ejemplo 15.

    Archivo-m script

    Escribir en un archivo-m script, el siguiente programa:

    Calcula el mayor nmero n que cumple la condicin

    < .

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura for - end.

    Solucin

    a) El diagrama de flujo es tarea para el lector.

    b) El cdigo se ilustra en la figura 22.

  • 57

    Figura 22: Ilustra el cdigo del ejemplo 15

    Ejemplo 16.

    Archivo-m script

    Escribir en un archivo-m script el siguiente programa:

    Construye la tabla de valores de la funcin () = .

    Solucin

    El cdigo se ilustra en la figura 23.

    Figura 23: Ilustra el cdigo del ejemplo 16

  • 58

    Tenga en cuenta que para % 4.0 f

    % hace referencia al formato numrico

    4 indica que hay cuatro dgitos antes del punto decimal

    0 indica que despus del punto decimal no va ningn dgito

    f hace referencia al punto flotante

    Ejemplo 17.

    Archivo-m script

    Escribir en un archivo-m script el siguiente programa:

    Construye la tabla de los valores redondeados con un dgito despus del punto decimal

    de las funciones: () = y () = +..

    Solucin

    El cdigo se ilustra en la figura 24.

    Figura 24: Ilustra el cdigo del ejemplo 17

  • 59

    Tareas 2.4

    1. Escribir en un archivo-m function, el siguiente programa:

    Lee las coordenadas del punto (, ) y determina si pertenece o no a la grfica

    de la funcin = + + .

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura if - else - end.

    2. Escribir en un archivo-m function, el siguiente programa:

    Calcula las races (o soluciones) de la ecuacin + + = .

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura if - elseif - else - end.

    3. Escribir en un archivo-m function, el siguiente programa:

    Presenta las grficas de las funciones trigonomtricas.

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura switch - case - end.

    4. Escribir en un archivo-m function, el siguiente programa:

    Determina la suma de los primeros trminos de la serie {, , , , }.

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura condicional for - end.

  • 60

    5. Escribir en un archivo-m function, el siguiente programa:

    El desarrollo de la productoria

    += .

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura condicional for - end.

    6. Escribir en un archivo-m script, el siguiente programa:

    Calcula el mayor nmero n tal que < .

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura condicional while - end.

    7. Escribir en un archivo-m script, el siguiente programa:

    La tabla de valores de las funciones trigonomtricas

    seno y coseno.

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura condicional if - else - end.

    8. Escribir en un archivo-m script, el siguiente programa:

    La tabla de valores de las funciones logaritmo con base 10 y logaritmo con base

    el nmero e de Euler.

    a) Dibujar el diagrama de flujo.

    b) Codificar usando la estructura if - else - end.

  • 61

    2.5. Diseo de interfaces grficas

    Una interface grfica es el vnculo que se establece entre el usuario y un programa

    computacional. Estn constituidas por botones, comandos y ventanas entre otros controles;

    por medio de los cuales el usuario se comunica con el programa durante las operaciones

    que se desean realizar, facilitando la entrada y salida de datos.

    Figura 25: Ilustra una interface Grfica en construccin

    Se les denomina GUI porque su nombre en ingls es Graphical User Interface. Las

    ventanas de Word, las ventanas de Excel y las ventanas de MatLab son ejemplos de

    interfaces. stas tambin se conocen como interfaces de usuario.

    Para construir interfaces grficas con MatLab, se usa el ambiente de desarrollo de

    interfaces grficas GUIDE (en ingls GUI Development Environment). Para esto primero

    se escogen los controles y a continuacin se definen las acciones que cada uno va a realizar.

  • 62

    2.5.1. Creando el ambiente de trabajo GUIDE

    Se tienen dos formas de abrir el ambiente de desarrollo: ya sea escribiendo guide

    en la ventana de comandos o desde el men principal se sigue la siguiente ruta:

    file New GUI.

    Figura 26: Ilustra el inicio de GUIDE

    Una vez hecho lo anterior el programa mostrar una ventana con opciones para construir la

    GUI o si se desea mejor abrir y revisar una ya existente. (Figura 27)

    Figura 27: Ilustra la ventana de dialogo GUIDE Quick Start

  • 63

    Se selecciona una nueva GUI; aparecer a continuacin el rea de diseo mostrando en

    la parte superior los mens y las opciones de GUIDE. En la parte izquierda se aprecian los

    diferentes controles y en la parte central el rea de diseo (la cuadrcula) en donde se

    ubicarn los respectivos controles (Figura 28).

    Figura 28: Ilustra el rea de trabajo

    2.5.2. Controles de una GUIDE

    A continuacin se listan algunos controles bsicos de GUIDE con sus respectivos

    nombres:

    OK Push Button (Botn de presin)

    Crea un botn rectangular

  • 64

    Slider (Barra de deslizamiento)

    Crea una barra de deslizamiento.

    Edit Text (Cuadro de Edicin)

    Crea un campo para la captura de

    texto y salida de resultados.

    Static text (Cuadro de texto)

    Crea un letrero fijo.

    Popup Menu (Botn de aparicin)

    Crea un men de posibilidades.

    Axes (Ejes)

    Crea un rea para grficas

    Cada uno de estos controles maneja un conjunto especfico de propiedades. Para acceder a

    ellas se hace a travs del inspector de propiedades.

  • 65

    Ejemplo 1. El Inspector de Propiedades de un control

    Analizar algunas de las propiedades del control Edit Text que se ilustran en la figura 29.

    Describir los cambios que realizan sobre el control.

    Figura 29: Ilustra el inspector de propiedades de un Edit Text

    Solucin

    ForegroundColor Cambia el color de la letra.

    FontSize Cambia el tamao de la letra.

    String Es un letrero fijo.

    Tag Es el nombre con el que se llamar al control.

    Se debe tener en cuenta que las propiedades varan dependiendo del tipo de control.

  • 66

    Ejemplo 2. Construyendo de una interface

    Construir una interface como la que se ilustra en la figura 30. En sta, el usuario obtiene la

    grfica de la funcin trigonomtrica seno con distintas frecuencias.

    Figura 30: Ilustra la interface que se va a construir en el ejemplo 2

    Solucin

    Se escribe en la ventana de comandos guide

    Aparece a continuacin la ventana de dilogo de la figura 31.

  • 67

    Figura 31: Ilustra la ventana de dilogo GUIDE Quick Start

    Qu se hace?

    Se escoge la opcin OK.

    Aparece el rea de trabajo o diseo de la figura 32.

    Figura 32: Ilustra el rea de trabajo

  • 68

    Se arrastra de la parte izquierda los controles que se necesitan para la interface y se

    ubican de acuerdo con el diseo establecido en la figura 33.

    Figura 33: Ilustra los controles arrastrados al rea de trabajo que se necesitan

    Qu se hace ahora?

    A continuacin se modifican y programan los respectivos controles (en cualquier orden).

    Control 1

    Inspector de propiedades

    Este inspector se puede obtener clickeando dos veces

    la parte izquierda del apuntador o ratn.

    Pregunta: Qu se modifica?

  • 69

    Respuesta

    String: El block de notas que aparece se deja en blanco y se escribe

    Frecuencia del Seno

    con el color de fondo,

    color de letra,

    tamao de letra

    que se necesite.

    Control 2

    Inspector de propiedades

    Pregunta: Qu se modifica?

    Respuesta

    String: Se escribe Ingrese la frecuencia

    Control 3

    Inspector de propiedades

    Se arrastra de la paleta de controles de la parte izquierda

    el control Axes; se ubica y

    despus se despliega en el

    rea de trabajo.

    Control 4

    Inspector de propiedades

    Pregunta: Qu se modifica?

    String: se escribe Salir

  • 70

    Pregunta: En dnde se escriben los cdigos?

    Respuesta

    ViewCallback Callback

    Para programar la accin que llevar a cabo un control cuando el usuario lo

    presione, se clickea en la parte derecha del apuntador (ratn).

    A continuacin MatLab muestra el editor para las funciones

    en este ejemplo se denominar interfaceuno.m.

    MatLab ubica e indica donde se deben escribir

    el respectivo cdigo.

    NO ES EN CUALQUIER LUGAR

    Despus de lo azul.

    Debajo de los comentarios.

    Cuando se guarda la interface,

    GUIDE presenta dos archivos nuevos:

    un archivo es interfaceuno.fig (rea de trabajo o diseo)

    y el otro es interfaceuno.m (Editor para escribir los cdigos)

    La interface se puede cerrar escribiendo en el archivo interfaceuno.m la instruccin

    close(gcbf) despus de los comentarios en verde como lo muestra la figura 34.

    Figura 34: Ilustra el cdigo del control 4

  • 71

    Control 5

    Inspector de propiedades

    Pregunta: Qu se modifica?

    El String: Se deja en blanco

    El Tag: Se escribe Frecuencia

    ViewCallback Callback

    Aparece el editor de funciones del archivo.m donde

    se escriben las instrucciones al final de los comentarios

    escritos en verde como se ilustra en la figura 35.

    Figura 35: Ilustra el cdigo del control 5

    El comando str2double captura la cadena de caracteres (o el String) del control Edit

    Text y lo pasa a un formato numrico doble definiendo de sta manera las variables

    internas. Por ltimo, se corre la interface ejecutando en la parte superior el cono .

  • 72

    Ejemplo 3. Construccin de una interface

    Construir una interface como la que se ilustra en la figura 36. En sta el usuario obtiene las

    grficas de la funcin trigonomtrica coseno con distintas frecuencias.

    Figura 36: Ilustra la interface del ejemplo 3

    Solucin

    Control 1

    Inspector de propiedades

    Qu se modifica?

    String: Se escribe Frecuencia del Coseno

    FontSize: Se cambia a 18

    BackgroundColor: Se cambia a blanco

    ForegroundColor: Se cambia a rojo

  • 73

    Control 2

    rea de trabajo

    Inspector de propiedades

    Qu se modifica?

    El Color: Se cambia por el color rojo

    Control 3

    Inspector de propiedades

    Qu se modifica?

    String: Se escribe Ingrese la frecuencia

    FontSize: Se cambia a 18

    BackgroundColor: Se cambia a blanco

    ForegroundColor: Se cambia a rojo

    Control 4

    Inspector de propiedades

    Qu se modifica?

    String: Se escribe Salir

    FontSize: Se cambia por 18

    BackgroundColor: Se cambia a blanco

    ForegroundColor: Se cambia a rojo

    ViewCallback Callback

    Qu se programa?

    close(gcbf)

  • 74

    Control 5

    Inspector de propiedades

    Qu se modifica?

    String: Se deja en blanco

    FontSize: Se cambia por 18

    BackgroundColor: Se cambia por blanco

    ForegroundColor: Se cambia por rojo

    Tag: Se escribe frecuencia

    ViewCallback Callback

    Qu se programa?

    f = srt2double(get(handles.frecuencia,string));

    x = linspace(0,2*pi,500);

    y=cos(x); y1=cos(f*x);

    plot(x,y,k,x,y1,b,linewidth,3), grid on

    axis([0,2*pi,-1.5,1.5])

    Control 5

    Inspector de propiedades

    Se Arrastra de la parte izquierda

    y se ubica en el rea de

    trabajo el control

    Axes.

  • 75

    Tareas 2.5

    1. Construir una interface en donde el usuario obtiene la grfica de la funcin

    exponencial decreciente dada por () = 500.246 desde 0 hasta el ao que se

    le indique. (Figura 37)

    Figura 37: Ilustra la interface del ejercicio 1

    2. Construir una interface en donde el usuario obtenga la grfica de la funcin

    trigonomtrica dada por () = () desde 0 hasta el valor que se le indique.

    3. Construir una interface en donde el usuario obtenga la grfica de la funcin dada

    por () = () desde 0 hasta el valor que se le indique.

  • 76

    2.6. Diseo de figuras cerradas en dos dimensiones

    En ste programa se pueden dibujar y colorear figuras cerradas ubicndolas sobre

    cuadrculas y determinando despus cada una de las lneas que la componen (plano

    cartesiano).

    Ejemplo 1. Rectngulo

    Dibujar un rectngulo con vrtices (0,0), (2,0), (2,1) y (0,1) como el de la figura 38.

    Figura 38. Ilustra el rectngulo

    Solucin

    x = [ 0 2 2 0 0 ];

    y = [ 0 0 1 1 0];

    plot( x, y )

    fill(x, y, 'y' )

    axis off

    El comando fill permite colorear el interior de la figura y la instruccin axis off permite

    oculta los ejes de coordenadas.

  • 77

    Ejemplo 2. Depsito de agua

    Dibujar un depsito de agua de forma rectangular con vrtices (0,0), (4,0), (4,2) y (0,2)

    como el de la figura 39.

    Figura 39. Ilustra el depsito de agua

    Solucin

    x = [ 0 4 4 0 0 ];

    y = [ 0 0 2 2 0];

    axis([0,5,0,2])

    axis square

    axis off

    hold on

    plot( x, y, 'k' )

    fill( x, 0.5*y, 'b' )

    El comando axis square presenta en forma cuadrada los ejes de coordenadas y

    el comando hold on mantiene los ajustes que le realicemos a los grficos.

  • 78

    Ejemplo 3. Crculo

    Dibujar un crculo como el de la figura 40.

    Figura 40. Ilustra el crculo

    Solucin

    Para dibujar crculos se pueden usar parametrizaciones en coordenadas polares.

    theta = 0:pi/100:2*pi;

    r = 5;

    x = r*cos(theta);

    y = r*sin(theta);

    axis([-8,8,-8,8])

    axis off

    axis square

    hold on

    plot( x, y, 'k' )

    fill(x, y, 'r' )

  • 79

    Ejemplo 4. Avin

    Dibujar un avin como el de la figura 41. Los vrtices vienen dados de la siguiente manera:

    (-3.5,-1), (-3,-1), (-2.5,-0.5), (0,-1), (0,-3), (1,-3), (1.5,-1), (3.5,-0.5), (4,0), (3.5,0.5), (1.5,1),

    (1,3), (0,3), (0,1), (-2.5,0.5), (-3,1) y (-3.5,1).

    Figura 41. Ilustra el avin

    Solucin

    x = [-3.5,-3,-2.5,0,0,1,1.5,3.5, 4,3.5,1.5,1,0,0,-2.5,-3,-3.5,-3.5];

    y = [-1,-1,-0.5,-1,-3,-3,-1,-0.5,0,0.5,1,3,3,1,0.5,1,1,-1];

    axis([-8,8,-8,8])

    axis off

    axis square

    hold on

    plot( x, y, 'k' )

    fill(x, y, 'r' )

  • 80

    Ejemplo 5. El Robot

    Dibujar un robot como el de la figura 42. Los vrtices vienen dados de la siguiente manera:

    (-2,-1), (-1.5,-1), (-1.5,1.5), (-1,1.5), (-1,-4), (-1.5,-4), (-1.5,-5), (-0.5,-5), (-0.5,-1), (0.5,-1),

    (0.5,-5), (1.5,-5), (1.5,-4), (1,-4), (1,1.5), (1.5,1.5), (1.5,-1), (2,-1), (2,3), (1,5), (-1,5), (-1,3)

    y (-2,3).

    Figura 42. Ilustra el robot

    Solucin

    x = [-2,-1.5,-1.5,-1,-1,-1.5,-1.5,-0.5,-0.5,0.5,0.5,1.5,1.5,1,1,1.5,1.5,2, 2,1,1,-1, -1,-2,-2];

    y = [-1,-1,1.5,1.5,-4,-4,-5,-5,-1,-1,-5,-5,-4,-4,1.5,1.5,-1,-1,3,3,5,5,3, 3,3];

    axis([-8,8,-8,8])

    axis off

    axis square

    hold on

    plot( x, y, 'k' )

    fill(x, y, 'm' )

  • 81

    2.7. Animacin de trayectorias

    En MatLab se pueden desarrollar animaciones de trayectorias. La animacin se realiza

    cuadro a cuadro; este proceso est representado en un diagrama de flujo como:

    un ciclo repetitivo de borrar el objeto,

    calcular su nueva posicin al incrementar el tiempo,

    y redibujar en la nueva posicin.

    Para hacer real la animacin, se debe recurrir a la velocidad del procesador del computador

    donde se va a correr el programa para as tomar un incremento de tiempo adecuado y evitar

    as que el movimiento se vea muy lento o muy veloz.

    Ejemplo 1. Movimiento de un objeto circular

    Animar el movimiento de un objeto circular cuya trayectoria la describe la funcin dada por

    () = sen (), donde es la frecuencia.

    Solucin

    A continuacin se presenta el cdigo de la animacin de la trayectoria.

    % Se ingresa la frecuencia w

    function [ ] = animacionejemplo1( w )

    t = 0;

    while t < 2*pi

    t = t + 0.05;

    ys = sin( *t );

    clf; % Borra la figura

    % Crculo

  • 82

    theta = 0 : pi/100 : 2*pi;

    r = 0.03;

    xo = r * cos(theta);

    yo = r * sin(theta);

    % rea del movimiento

    axis( [ -0.1, 6.5, -3, 3 ] )

    axis square

    axis off

    hold on

    % Suma de coordenadas

    x = xo + t;

    y = yo + ys;

    plot( x, y )

    fill( x, y, r)

    pause(0.01) % Velocidad del procesador

    end

    end

    Ejemplo 2. Movimiento de un avin

    Animar el movimiento del avin construido en el ejemplo 4 de la seccin 1.6, cuya

    trayectoria la describe la funcin dada por () = log ().

    Solucin

    A continuacin se presenta el cdigo de la animacin de la trayectoria.

  • 83

    % Se ingresa el tiempo ta

    function [ ] = animacionejemplo2( ta )

    t = 0;

    while t < ta

    t = t + 0.02;

    yl = log( t );

    clf; % Borra la figura

    % Avin

    xo = [-3.5,-3,-2.5,0,0,1,1.5,3.5, 4,3.5,1.5,1,0,0,-2.5,-3,-3.5,-3.5];

    yo = [-1,-1,-0.5,-1,-3,-3,-1,-0.5,0,0.5,1,3,3,1,0.5,1,1,-1];

    % Modificacin de la escala

    xo = 0.1 * xo;

    yo = 0.1 * yo;

    % rea del movimiento

    axis( [ 0, 11, -5, 5 ] )

    axis square

    axis off

    hold on

    % Suma de coordenadas

    x = xo + t;

    y = yo + yl;

    plot( x, y, k )

  • 84

    fill( x, y, b)

    pause(0.01) % Velocidad del procesador

    end

    end

    Ejemplo 3. Movimiento de un Robot

    Animar el movimiento del robot construido en el ejemplo 5 de la seccin 1.6, cuya

    trayectoria la describe la funcin dada por:

    () =

    {

    0, 2 21.5 3, 2 < < 43, 4 < 83 + 27, 8 90, 9 < 10

    Solucin

    A continuacin se presenta el cdigo de la animacin de la trayectoria.

    % Se ingresa el tiempo ta

    function [ ] = animacionejemplo3( ta )

    t = 0;

    while t < ta

    t = t + 0.02;

    yt = (0)*(t

  • 85

    xo = [-2,-1.5,-1.5,-1,-1,-1.5,-1.5,-0.5,-0.5,0.5,0.5,1.5,1.5,1,1,1.5,1.5,2,2,1,1,-1, -1,-2,-2];

    yo = [-1,-1,1.5,1.5,-4,-4,-5,-5,-1,-1,-5,-5,-4,-4,1.5,1.5,-1,-1,3,3,5,5,3,3,3];

    % Modificacin de la escala

    xo = 0.1 * xo;

    yo = 0.1 * yo;

    % rea del movimiento

    axis( [ 0, 11, -5, 5 ] )

    axis square

    axis off

    hold on

    % Suma de coordenadas

    x = xo + t;

    y = yo + yt;

    plot( x, y, k )

    fill( x, y, y)

    pause(0.01) % Velocidad del procesador

    end

    end