You are on page 1of 79

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.

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

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.

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 3
)
2 1 4

3 0
c) = (4 1
2 0

5
4)
3

1 2
b) = ( 0 0.5)
9 7

d) = (0.1 0.2 0.3 0.4 0.5 )

1
e) = (2)
3
9

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) E 2

Solucin

Los smbolos + - * / son los operadores para suma, resta, multiplicacin y divisin
respectivamente (como en una calculadora).

10

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) BT AT
c) (AB)T
d) (C + BA)T
e) DT E T

11

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
5
= 9
6
(2

2
2
0
5
1

3
7
8
4
0

4
8
7
3
9)

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)

12

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
7
= 8
9
(0

1
2
3
4
5

1
3
5
7
9

2
4
6
8
0)

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.

13

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.

= (
3

1
2)
1 3

Definir la submatriz B a partir de la matriz A.


2
0

=(

Solucin

A = [ 2, 1, 1, 1 ; 0, 2, 2, 2 ; 3, 0, 1, 3 ]
B=A(1:2,1:3)

14

1 1
)
2 2

Ejemplo 7. Formatos Numricos


Definir la matriz A en la ventana de comandos.

= (1

1 1 1 1 1
)
2 3 4 5 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.
15

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
= (6
0
9

3
4
7
5

0
0
1
1

1
3)
2
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?

16

Ejemplo 9. Cambios e intercambios


Definir la matriz A en la ventana de comandos:
1
= (2
1
0

2
5
4
9

3
3
1
0

4
0)
5
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=[1234;2530;1415;0908]

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 ]

17

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 3
=(
)
2 3 4

1
= (9
0
3

0
5
4
0

2
= (0
3
7
1)
6
8

1 1 1
2 2 2)
0 1 3

1
= (5
2

3
9)
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.
18

5. Escribir las instrucciones que permitan obtener las cuatro submatrices que se indican
con las lneas punteadas A1, A2, A3, A4.
1 5 2
= (4 3 1
0 6 5

7 8
4 2)
3 6

1
0
6. Definir la matriz = 2 en la ventana de comandos. Explicar la respuesta de
0
(3)
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
0
= 0
0
(0

1
0
0
0
0

0
1
0
0
0

0
0
1
0
0

0
0
0
1
0)

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


a) A . ^ n
b) A * A * A * * A ( n veces )
1
8. Sea la matriz = (2
1
0

2
5
4
9

3
3
1
0

4
0).
5
8

Escribir las instrucciones utilizadas para construir la matriz B.


19

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( ).


1
9. Sea la matriz = (0
9
8

3
2
1
0

5
4
3
2

7
6). Escribir las instrucciones para determinar:
5
4

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 .
20

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.

21

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.

22

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

23

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

Ejemplo 5. Funcin exponencial


2

Dibujar la grfica de la funcin exponencial = 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


2

Dibujar la grfica de la funcin = 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 )
24

Ejemplo 7. Grficas en figuras separadas


Dibujar las grficas de las funciones () y () en dos figuras por separado con las
caractersticas indicadas.
() =

() = 2

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

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


El dominio es un vector con 50 datos.
25

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

<=

Menor o igual que

>=

Mayor o igual que

==

Igual

~=

Distinto

Tabla 1: Operadores relacionales

26

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,
< 0
() = {1, 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<0) + (1).*((0<=x)&(x<1)) + (-x+2) .* (1<=x) ;
b) plot (x, f, r. , linewidth , 3 )
c) grid on

27

Ejemplo 11. Funcin definida por secciones


Dibujar la grfica de la funcin () definida por secciones con las caractersticas
indicadas:
2 ,
< 1
() = { 0,
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<-1) + (0).*((-1<=x)&(x<2)) + (x) .* (2<=x) ;
b) plot (x, f, k , linewidth , 4 )
c) grid on
d) set ( gca , fontsize , 15 )

El comando set( ) permite manipular las propiedades del objeto y el comando gca permite
manipular manualmente el tamao de los ejes.
e) set ( gcf, color , w )
f) set ( gcf, color, y)

El comando gcf permite manipular la figura actual.

28

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
29

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)

30

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 = 2 2 + 3 5. Escribir las
instrucciones que la caracterizan.

31

Figura 2: Grfica de = +

5. En la figura 3 se ilustra la grfica de la funcin = 2 2 + 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.
32

() = {

0,

< 0

1,

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

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

33

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<=t)&(t<-1)) + (0)*((-1<t)&(t<-0.5)) + (-t).*((-0.5<=t)&(t<=0.5) +
(0)*((0.5<t)&(t<1)) + (1)*((1<=t)&(t<=2));
plot ( t, y, k, linewidth, 3)
grid on
axis ( [ -3, 3, -2, 2 ] )

34

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 Mfiles) 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.

35

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.

36

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 > .

37

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)

38

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

39

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.

40

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
41

*
*
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

42

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.
+ =2
Para el caso particular {
2 = 3
los parmetros de entrada son respectivamente:
a1 = 1, a2 = 1, a3 = 2, b1 = 2, b2 = -1, b3 = 3

43

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.

44

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

45

*
*
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
46

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:

47

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)
48

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

49

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

50

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

51

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.

52

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.
53

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

54

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

55

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.

56

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

57

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

58

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.

59

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.

60

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.
61

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

62

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
63

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.

64

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
FontSize
String
Tag

Cambia el color de la letra.

Cambia el tamao de la letra.


Es un letrero fijo.

Es el nombre con el que se llamar al control.

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

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.

66

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

67

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?
68

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
69

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

70

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

71

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

72

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)

73

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.

74

Tareas 2.5

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


exponencial decreciente dada por () = 50 0.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.
75

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.
76

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.
77

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' )
78

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' )
79

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' )
80

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
81

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.


82

% 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 )
83

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,
1.5 3,
() = 3,
3 + 27,
{0,

2 2
2<<4
4<8
89
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<=2)+(1.5*t-3).*((2<t)&(t<4))+(3)*((4<=t)&(t<8))+
(-3*t+27).*((8<=t)&(t<=9)+(0)*(9<t);
clf; % Borra la figura

% Robot

84

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

85

You might also like