Apuntes Matlab CCD

TEMARIO  1. Que es Matlab y su entorno 1.1. Objetivos y uso del Matlab 1.2. Ejemplos de aplicación 1.3. Elementos del en

Views 311 Downloads 2 File size 3MB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

TEMARIO  1. Que es Matlab y su entorno 1.1. Objetivos y uso del Matlab 1.2. Ejemplos de aplicación 1.3. Elementos del entorno gráfico de Matlab

1 1 1 2

2. Operaciones y Funciones Básicas. 2.1. Manejo de sesiones de trabajo 2.2. Variables: Tipos y asignación de valores 2.3. Operaciones básicas del álgebra matricial 2.4. Funciones de Matlab 2.5. Ejemplos 2.6. Problemas

3 3 4 7 10 13 17

3. Programación y Archivos m 3.1. El editor de archivos m 3.2. Manejo de archivos m y elementos básicos de programación 3.3. Estructuras de control 3.4. Aplicaciones

24 24 26 32 43

4. Graficación 4.1. Elementos de los gráficos de Matlab 4.2. Generación de gráficos 2D 4.3. Edición de atributos de los gráficos 4.4. Grabar y exportar 4.5. Introducción a gráficos 3D

50 50 50 56 62 62

5. La Interfaz Gráfica de Usuario (GUI) 5.1. El editor de Interfases Gráficas de Usuarios (GUI) 5.2. Objetos y propiedades disponibles para las GUI 5.3. Ejemplos de GUI 5.4. Planeación y desarrollo de GUI

66 66 66 68 72

1. Que es Matlab y su entorno. 1.1 Objetivos y uso del Matlab. MATLAB es el nombre abreviado de “MATrix LABoratory”. MATLAB es un programa para realizar cálculos numéricos con vectores y matrices. Como caso particular puede también trabajar con números escalares −tanto reales como complejos−, con cadenas de caracteres y con otras estructuras de información más complejas. Una de las capacidades más atractivas es la de realizar una amplia variedad de gráficos en dos y tres dimensiones. MATLAB tiene también un lenguaje de programación propio. MATLAB es un gran programa de cálculo técnico y científico. Para ciertas operaciones es muy rápido, cuando puede ejecutar sus funciones en código nativo con los tamaños más adecuados para aprovechar sus capacidades de vectorización. En otras aplicaciones resulta bastante más lento que el código equivalente desarrollado en C/C++ o Fortran. En cualquier caso, el lenguaje de programación de MATLAB siempre es una magnífica herramienta de alto nivel para desarrollar aplicaciones técnicas, fácil de utilizar y que, como ya se ha dicho, aumenta significativamente la productividad de los programadores respecto a otros entornos de desarrollo. MATLAB dispone de un código básico y de varias librerías especializadas (toolboxes). En estos apuntes se hará referencia exclusiva al código básico. MATLAB se puede arrancar como cualquier otra aplicación de Windows, clicando dos veces en el icono correspondiente en el escritorio o por medio del menú Inicio. Al arrancar MATLAB se abre una ventana. Ésta es la vista que se obtiene eligiendo la opción Desktop/Desktop Layout/Default, en el menú View. Como esta configuración puede ser cambiada fácilmente por el usuario, es posible que en muchos casos concretos lo que aparezca sea muy diferente. De cualquier forma, en cualquier momento se puede visualizar la vista estándar eligiendo la opción indicada anteriormente.

1.2 Ejemplos de aplicación. Matlab es un sistema general de software para matemáticas y otras aplicaciones científicas. Es utilizado por investigadores, ingenieros y analistas, así como en el entorno universitario. Las aplicaciones de Matlab comprenden la mayoría de las áreas de la ciencia, tecnología y negocios en donde se aplican métodos cuantitativos. Por ejemplo se utiliza en el Análisis Matemático, Algebra Lineal y Geometría; en estadística y sus aplicaciones en la industria incluyendo estadística descriptiva, estadística matemática y técnicas de ajuste de modelos, análisis de la varianza, control de calidad y diseño de experimentos. Así como en los sistemas de control y sus aplicaciones en la ingeniería.

-1-

1.3 Elementos del entorno gráfico de Matlab. El entorno de trabajo de MATLAB es muy gráfico e intuitivo, similar al de otras aplicaciones profesionales de Windows. Las componentes más importantes del entorno de trabajo de MATLAB 7.0 son las siguientes: El Escritorio de Matlab (Matlab Desktop), que es la ventana o contenedor de máximo nivel en la que se pueden situar (to dock) las demás componentes. Las ventanas de Matlab: Command Window (Ventana de Comandos): Es la ventana principal, se utiliza para introducir variables y ejecutar programas. Figure Windows (Ventana de Gráficos): para visualizar gráficos, esta ventana se abre automáticamente cuando un comando matlab ejecuta la visualización del grafico. Editor Window (ventana del Editor): Se abre mediante las opciones del menú File, y se usa para escribir y editar programas, llamados ficheros de Script y funciones matlab. Help Window (Ventana de Ayuda): proporciona ayuda e información sobre Matlab. Launch Pad Window (Ventana de Plataforma): Da acceso a herramientas, demos y documentación. Command History Window (Ventana del Histórico de Comandos): Almacena y visualiza los comandos que se introducen en la Ventana de Comandos. Workspace Window (Ventana del Espacio de Trabajo): proporciona información sobre las variables utilizadas.

-2-

Current Directory Window (Ventana del Directorio de Trabajo Actual): Muestra los ficheros que hay en el directorio de trabajo actual. 2. Operaciones y Funciones básicas. 2.1 Manejo de sesiones de trabajo. Hay dos modos de trabajo con MATLAB: Trabajo interactivo (Command Window), donde el usuario realiza una consulta (escribe una operación) y el programa la ejecuta. Trabajo programado (M-files), donde el usuario genera uno o varios ficheros con conjuntos de instrucciones MATLAB, que se pueden ejecutar repetidas veces (con distintos datos) desde el modo interactivo. De esta forma, el usuario puede incrementar las funciones disponibles en MATLAB, añadiendo las suyas propias. En los siguientes ejercicios se trabajara de forma interactiva en la ventana Command Window. Por defecto, la carpeta de trabajo es la carpeta MATLAB, aunque ésta se puede cambiar.

Símbolos de operaciones aritméticas Operación Símbolo Ejemplo Suma + 10+7 Resta 10-7 Multiplicación * 10*7 División Derecha / 10/7 División Izquierda \ 10\7 = 7/10 Exponenciación ^ 10^7 Prioridad de operaciones: o Primero: Paréntesis. Para paréntesis anidados, el más interno es el que primero se ejecuta. -3-

o Segundo: Exponenciación. o Tercero: Multiplicación y división (igual prioridad) o Cuarto; Suma y resta. 2.2 Variables: Tipos y asignación de valores. El símbolo >> es el prompt (o indicador) de MATLAB e indica que está listo para aceptar ordenes. Para ejecutar una orden basta pulsar la tecla ENTER. El nombre que se asigna por defecto a la salida es ans (abreviatura de answer). Las asignaciones en MATLAB se realizan como en cualquier lenguaje de programación, pero no requieren ningún tipo de declaración de variables (en una primera aproximación). Las operaciones se realizan siempre en aritmética de coma flotante de doble precisión. El efecto de escribir un punto y coma (;) al final de una instrucción es evitar que se muestre por pantalla su resultado, aunque sí se ejecuta. Si se utiliza el símbolo %, a partir de allí se considera que la línea es un comentario. Para poder realizar operaciones con números complejos, MATLAB tiene reservada la letra i para la unidad imaginaria. Esto es una preasignación de la variable i, que no está bloqueada de ningún modo. -4-

MATLAB distingue entre mayúsculas y minúsculas, razón por la cual la variable a y la variable A son distintas. El nombre de las variables sigue las reglas habituales de un lenguaje de programación: debe comenzar por una letra, aunque puede contener números; no debe contener espacios en blanco ni algún tipo de símbolo reservado (coma, punto y coma, dos puntos, guión,...). Conceptos Básicos La orden clc limpia la pantalla de comandos. La orden clear elimina todas las variables no permanentes. Es posible borrar únicamente algunas de las variables del espacio de trabajo con la orden • clear nombre_variable Y si hay duda sobre alguna función de MATLAB, con la orden • help nombre_funcion se puede consultar cualquier función del programa. Además hay un menú de ayuda más detallado en la parte superior derecha de la barra de menús. •

Se interrumpe una ejecución con Ctrl + C.

Las teclas Ç y È permiten recuperar órdenes ejecutadas anteriormente. Tecleando primero un grupo de caracteres y empleando las flechas se puede recuperar un histórico de órdenes ejecutadas anteriormente que comienzan por esos caracteres. Si se quiere guardar todo lo hecho, la orden • diary nombre_fichero.txt Permite grabar en un fichero de texto la sesión de trabajo. Con diary off y diary on desactivamos y activamos la grabación en el fichero. • •

who indica qué variables se están utilizando. whos da una información más amplia sobre el tamaño y tipo de variable.

Algunas variables especiales: •

pi es el número π.



eps es el ε máquina, es decir, el número positivo más pequeño tal que 1 + ε ≠ 1 en la unidad de coma flotante del ordenador. >> eps ans = 2.2204e-016 • •

inf número infinito NaN (not–a–number) es una magnitud no numérica y se obtiene, por ejemplo, como resultado de indeterminaciones matemáticas del tipo (0/0) ó (∞-∞): -5-



realmin y realmax son los números reales positivos, más pequeño y más grande respectivamente, que se pueden utilizar.

MATLAB no tiene aritmética entera incorporada. Las operaciones con enteros son realizadas exactamente mientras ocurran dentro de la precisión máquina (hasta unas dieciseis cifras). Aún así, MATLAB reconoce en cierto modo que se trata de números enteros y devuelve los resultados como si estuviera realizando aritmética entera. En general MATLAB trabaja en aritmética de coma flotante de doble precisión. El usuario elige el formato de salida. Algunos formatos: format short es el formato por defecto; punto fijo y cuatro dígitos decimales format short e notación científica con cuatro dígitos decimales format long punto fijo y catorce dígitos decimales format long e notación científica con quince dígitos decimales format rat aproximaciones al número racional más cercano.

-6-

2.3 Operaciones básicas del álgebra matricial. Por defecto, todas las variables en MATLAB se tratan como arrays con dos índices, esto es, como matrices. No obstante, es más simple comenzar aprendiendo a manipular vectores, es decir, arrays numerados con un único índice. MATLAB distingue entre vectores fila y columna. Esto resulta poco natural si se entienden los vectores como algo distinto de las matrices, pero es conveniente acostumbrarse pronto a este detalle, puesto que es parte integrante de la filosofía matricial de MATLAB.

-7-

La matrices se definen entre corchetes escribiéndolas por filas y se utiliza el punto y coma para separar una fila de otra. También se pueden separar los elementos de las filas con comas. Cada elemento de una matriz se reconoce por dos índices.

-8-

Listas implícitas Las listas implícitas son listas de números en las que se especifica el primer y último elementos y el incremento entre cada elemento de la lista. Su empleo es muy común en MATLAB, tanto para desarrollo de las capacidades gráficas como en cualquier nivel de programación. El resultado es siempre un vector fila.

Otra forma de generar listas de número equidistantes es utilizando la función linspace en la cual hay que especificar como argumentos el primer elemento, el último elemento y el número total de elementos en la lista.

-9-

2.4 Funciones de matlab Funciones matemáticas elementales.

Funciones trigonométricas.

- 10 -

En el caso de vectores o matrices, estas funciones actúan sobre cada uno de los elementos. En el caso de matrices cuadradas exp(A) y sin(A) no son las funciones analíticas exponencial y seno ya que estás funciones de MATLAB actúan elemento a elemento. Por la misma razón sqrt(A)*sqrt(A) no es A.

Funciones de redondeo.

- 11 -

Vectorización de operaciones aritméticas El producto es, por defecto, la operación de producto de matrices. De la misma manera, las potencias de una matriz son los productos repetidos de una matriz por sí misma. El símbolo de división tiene un significado más complejo, relacionado con el producto por la inversa del denominador. Para realizar productos y divisiones elemento a elemento (operaciones vectorizadas), hay que emplear los símbolos “.*” y “./” , mientras que .^2 (o expresiones parecidas con otros exponentes) sirve para elevar cada componente de una matriz o vector al exponente indicado.

- 12 -

2.5 Ejemplos 1. Identidad trigonométrica Sea la siguiente identidad trigonométrica:

 

Verifique que dicha identidad es correcta calculando ambos miembros de la ecuación, sustituyendo el valor de x por

2. Transferencia de calor Un objeto con una temperatura inicial T0 se introduce en el instante t=0 dentro de una cámara que tiene una temperatura constante Ts. Entonces, el objeto experimenta un cambio de temperatura que se corresponde con la ecuación: Donde T es la temperatura del objeto en el instante t, y k es una constante. Una lata de refresco, con una temperatura de 120°F, se introduce en un refrigerador que tiene en su interior una temperatura de 38°F. Calcular, redondeando el resultado al grado más próximo, la temperatura de la lata después de 3 horas. Considerar k=0.45.

- 13 -

3. Creación de una matriz Utilizando los comandos ones y zeros, crear una matriz de 4 x 5 en la cual las primeras dos filas sean ceros y las dos siguientes sean unos.

4. Creación de una matriz Crear una matriz de 6 x 6 en la cual las dos filas centrales, junto con las dos columnas centrales, sean unos, siendo el resto de elementos cero.

- 14 -

5. Manipulación de matrices Sean dos matrices, una A de 5 x 6 y otra B de 3 x 5. Y un vector v de longitud 9 2 5 8 11 3 6 9 12 4 7 10 13 5 8 11 14 6 9 12 15  

99 98

14 17 15 18 16 19     17 20 18 21 97 96

5 10 15 20 25 30 30 35 40 45 50 55   55 60 65 70 75 80

95 94

93 92

91  

Crear las tres matrices Escribir un solo comando que reemplace: a) Las cuatro últimas columnas de las filas 1 y la 3 de A por las cuatro primeras columnas de las primeras dos filas de la matriz B b) Las cuatro últimas columnas de la cuarta fila de A por los elementos 5 a 8 de v c) Las cuatro últimas columnas de la quinta fila de A por las columnas 3 a 5 de la tercera fila de B

A([1 3 4 5],3:6) = Matriz de 4x4 compuesta por las columnas 3 a 6 de las filas 1, 3, 4 y 5 [B([1 2],1:4);v(5:8);B(3,2:5)] = Matriz de 4x4 las primeras dos filas son las columnas 1 a 4 de las filas 1 y 2 de la matriz B. La tercera fila son los elementos 5 a 8 del vector v. la fila cuarta son las columnas 2 a 5 de la fila 3 de la matriz B - 15 -

6. Resolución de tres ecuaciones lineales Resolver el siguiente sistema de ecuaciones lineales. 4 2 6 8 2 8 2 4 6 10 3 0 El sistema anterior se puede representar de forma matricial AX=B 4 2 6 8 2 8 2 4 6 10 3 0

7. Experimento de fricción (procesamiento de arrays elemento a elemento) El coeficiente de fricción µ se puede calcular experimentalmente midiendo la fuerza F requerida para mover una masa m. a partir de estos parámetros, el coeficiente de fricción se puede calcular de la forma:

           

9.81 



En la tabla siguiente se presentan los resultados de seis experimentos en los cuales se midió F. Determinar el coeficiente de fricción en cada experimento, así como el valor medio de todos los experimentos realizados. Experimento

1

2

3

4

5

6

Masa m (kg)

2

4

5

10

20

50

Fuerza F (N)

12.5

23.5

30

61

118

294

- 16 -

2.6 Problemas 1. Calcule: .

a)

7 6

b) 2. Calcule: 2

a)

7 7

b) 2

55

3. Calcule:  

a) b)

43

√910 √

4. Calcule: a)



b) Cos 5. Defina la variable x=13.5 y calcule: a) 5 26.7 52 b) c)



|

|

6. Defina las variables x=9.6 y z=8.1 calcule: d) e) 7. Defina las variables a=15.62, b=-7.08, c=62.5 y d=0.5(ab-c), y calcule: a)

|

|

b) 8. Dadas las siguientes identidades trigonométricas: - 17 -

a)

 2



  cos

b) Verifique que ambas son correctas calculando para ello cada lado de la identidad, sustituyendo el valor de 9. Dadas las siguientes identidades trigonométricas: c)

 2

d) Verifique que ambas son correctas calculando para ello cada lado de la identidad, sustituyendo el valor de 10. Defina dos variables:

   

/7. Utilice estas variables para

demostrar que la siguiente identidad trigonométrica es correcta. 1 1 cos cos 2      2 2 11. Cuando se suman fracciones debe calcularse el mínimo común múltiplo para poder realizar la operación correctamente. Por ejemplo en minimo común múltiplo de ¼ y 1/10 es 20. Encuentre una función apropiada que calcule el mínimo común múltiplo de dos números, por ejemplo demuestre que: a) El minimo común múltiplo de 4 y 10 es 20 b) El minimo común múltiplo de 6 y 38 es 114 12. La magnitud M de un terremoto en la Escala Richter viene dada por: donde E es la energía emitida por el terremoto y E0=104.4 julios es una constante (energía de un terremoto más pequeño de referencia). Determine cuantas veces más energía emite un terremoto que registra 7.2 en la Escala de Richter respecto a otro que registra 5.3. 13. Cree un vector fila que contenga los elementos: 32, 4, 81,e2.5, cos(π/3), 14, 12 14. Cree un vector columna que contenga los elementos: 55, 14, ln(51), 987, 0, 5sen(2.5π). 15. Cree un vector fila en el cual el primer elemento sea 1 y el último elemento sea 33, con una distancia de 2 entre los elementos (1, 3, 5,….33). - 18 -

16. Cree un vector columna en el cual el primer elemento sea 15, la distancia de los elementos sea -5, y donde el último elemento sea -25. (un vector columna se puede crear a partir de la transposición de un vector fila). 17. Cree un vector fila con 15 elementos igualmente distanciados, en el cual el primer elemento sea 7 y el último 40. 18. Cree un vector columna con 12 elementos igualmente distanciados, en el cual el primer elemento sea -1 y el último -15. 19. Cree un vector, llamado Aprimero, que tenga 16 elementos, siendo el primero el 4, con un incremento de 3 siendo el último elemento el 49. Posteriormente utilice el símbolo de dos puntos para crear un nuevo vector, llamado Asegundo, que tenga ocho elementos. Los primeros cuatro elementos serán los primeros cuatro elementos del vector Aprimero, y los cuatro últimos serán los cuatro últimos elementos del vector Aprimero. 20. Cree una matriz como la que se muestra utilizando la notación de vectores para crear vectores con distancia constante, y/o el comando linspace para crear las filas. 1 72 0

4 7 10 13 16 19 22 25 66 60 54 48 42 36 30 24 0.125 0.250 0.375 0.500 0.625 0.750 0.875 1.0

6 43 2 11 87 21. Cree la siguiente matriz: A= 12 6 34 0 5 34 18 7 41 9 Utilice la matriz para: a) Crear un vector fila de cinco elementos llamado va, que contenga los elementos de la segunda fila de A. b) Crear un vector fila de seis elementos llamado vb, que contenga los elementos de la cuarta columna de A. c) Crear un vector fila de diez elementos llamado vc, que contenga los elementos de la primera y segunda fila de A. d) Crear un vector fila de seis elementos llamado vd que contenga los elementos de la segunda a la quinta columna de A. 2 4 6 8 10 22. Cree la siguiente matriz: C= 3 6 9 12 15 7 14 21 28 35 Utilice la matriz C para: - 19 -

a) Crear un vector columna de tres elementos llamado ua, que contenga elementos de la tercera columna de C. b) Crear un vector columna de cinco elementos llamado ub, que contenga elementos de la segunda fila de C. c) Crear un vector columna de nueve elementos llamado uc, que contenga elementos de la primera, tercera y quinta columna de C. d) Crear un vector columna de diez elementos llamado ud, que contenga elementos de la primera y segunda fila de C.

los los los los

1 2 3 4 5 6 7 2 4 6 8 10 12 14 21 18 15 12 9 6 3 5 10 15 20 25 30 35

23. Cree la siguiente matriz

a) Cree una matriz B de 3x4 a partir de la primera, tercera y cuarta fila, y de la primera, tercera, quinta y séptima columna de la matriz A. b) Cree un vector fila de 15 elementos llamado u, a partir de los elementos de la tercera fila y de la quinta a la séptima columna de la matriz A. 24. Utilizando las funciones zeros, ones y eye, cree los siguientes arrays: 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0            1 1   0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 25. Utilizando el comando eye, cree un array A. a continuación, utilice los dos punto para acceder a los elementos en el array, cambiando el array para que sea como el de la parte derecha. 1 0 0 0 0 0 0

0 1 0 0 0 0 0

0 0 1 0 0 0 0

0 0 0 1 0 0 0

0 0 0 0 1 0 0

0 0 0 0 0 1 0

0 0 0 0        0 0 1

2 2 3 0 4 4 4

2 2 3 0 4 4 4

2 2 3 0 7 7 7

0 0 0 1 0 0 0

5 5 5 0 9 9 9

5 5 5 0 9 9 9

5 5 5 0 9 9 9

26. Utilizando las funciones zeros y ones, cree una matriz 3x5 en la cual la primera, segunda y quinta columnas sean ceros, y la tercera y cuarta columnas sean unos. 27. Cree una matriz de 5x7 en la cual la primera fila contenga los números: 1 2 3 4 5 6 7, y la segunda fila contenga: 8 9 10 11 12 13 14, la tercera fila contenga los números del 15 al 21, y así sucesivamente. A partir de esta matriz, cree otra - 20 -

nueva de 3x4 compuesta por las filas 2 a la 4 y las columnas de la 3 a la 6 de la primera matriz. 28. Cree una matriz A de 3x3 donde todos los elementos sean 1. Cree también una matriz B de 2x2 donde todos los elementos sean 5. A continuación, añada nuevos elementos a la matriz A a base de añadir la matriz B, de manera que A quede finalmente de la siguiente forma: 1 1 1 0 0

1 1 1 0 0

1 1 1 0 0

0 0 0 5 5

0 0 0 5 5

29. Sea la función 1 , calcular el valor de y para los siguientes valores de x: -2.5, -2, -1.5, -1, -0.5, 0, 1, 1.5, 2, 2.5, 3. Resuelva el problema creando primero un vector x y después un vector y, utilizando las operaciones elemento a elemento para el cálculo. 30. La profundidad de un pozo, d, en metros se puede determinar a partir del tiempo que tarda en caer una piedra a su interior (vel. inicial cero). Este cálculo viene , donde t es el tiempo en segundos y g=9.81 m/s2.

determinado por:

Calcular d para t=1, 2, 3, 4, 5, 6, 7, 8, 9, 10 s. Cree un vector t y calcule d utilizando operaciones elemento a elemento. 31. Defina x e y como vectores, tales que x=2, 4, 6, 8, 10, y=3, 6, 9, 12, 15. Calcular z a partir de operaciones elemento a elemento. 12 32. Defina los escalares h=0.9, k=12.5, y los vectores x=1, 2, 3, 4, y= 0.9, 0.8, 0.7, 0.6, z=2.5, 3.0, 3.5, 4.0. Utilice estas variables para calcular T utilizando operaciones elemento a elemento.

33. Demuestre que lim

1

Para hacer esto cree un vector n que tenga los elementos: 1, 10, 100, 500, 1000, 2000, 4000, 8000. Después cree un vector y en el cual cada elemento será calculado a partir de los elementos de n mediante 1 Compare los elementos de y con el valor de e (teclee exp(1) para el valor de e)

- 21 -

34. Demostrar que la serie numérica ∑

converge a

6. Para hacer esto,

calcule la suma para: a) n=100 b) n=1000 c) n=10000 para cada inciso, cree un vector v en el cual el primer elemento sea 1, con incremento 1, y como ultimo termino 100, 1000 o 10000. Utilice posteriormente operaciones elemento a elemento para crear un vector en el cual los elementos sean 1/n2. Finalmente utilice la función sum para sumar los términos de la serie. Compare los valores obtenidos en los incisos a, b, c con el valor 35. demostrar que la serie ∑

6

converge a ln 2. Para hacer esto, calcule

la suma para: a) n=50 b) n=500 c) n=5000 para cada inciso cree un vector n en el cual el primer elemento sea 0, el incremento 1 y el último término 50, 500, 5000. Posteriormente calcule, mediante operaciones elemento a elemento, un vector en el cual los elementos sean

. Finalmente utilice la función sum para sumar los

términos de la serie. Compare el valor obtenido en los incisos a, b, c, con ln 2. 36. Cree las siguientes matrices: 5 1 6

2 7 10

4 3       0

11 0 2

5 12 6

3 4        1

7 10 8

14 3 5

1 2 9

a) Calcule A+B y B+A para demostrar que la suma de matrices cumple la propiedad conmutativa. b) Calcule A+(B+C) y (A+B)+C para demostrar que la suma de matrices cumple la propiedad asociativa. c) Calcule 5(A+C) y 5A+5C para demostrar que, cuando se multiplica una matriz por un escalar, la multiplicación cumple la propiedad distributiva. d) Calcule A(B+C) y AB+AC para demostrar que la multiplicación de matrices cumple la propiedad distributiva. 37. Utilice las matrices A, B y C anteriores para contestar a las siguientes preguntas: a) ¿Es A*B=B*A b) ¿Es A*(B*C)=(A*B)*C? - 22 -

c) ¿Es (A*B)t=Bt*At? (t significa transpuesta) d) ¿Es (A+B)t=At+Bt? 38. Resuelva el siguiente sistema de ecuaciones lineales: 5x+4y-2z+6w=4 3x+6y+6z+4.5w=13.5 6x+12y-2z+16w=20 4x-2y+2z-4w=6 39. Un proyectil se dispara con una velocidad de 750 m/s. calcule la distancia d a la que el proyectil alcanza el suelo si el ángulo de lanzamiento θ cambia de 5° a 85° en incrementos de 5°. Utilice operaciones elemento a elemento para visualizar los resultados cree una matriz de 17x2 en la cual los elementos de la primera columna sean los ángulos de lanzamiento, y los de la segunda las correspondientes distancias redondeadas al entero más próximo. 40. Dos proyectiles A y B, se disparan en el mismo instante desde el mismo punto. El proyectil A se dispara a una velocidad de 680 m/s con un ángulo de 65°, mientras que el proyectil B se dispara a una velocidad de 780 m/s con un ángulo de 42°. Calcule que proyectil llega antes a tierra. Después, tome el tiempo de vuelo tf de ese proyectil y divídalo en diez incrementos, creando para ello un vector t con 11 elementos igualmente espaciados (el primer elemento será 0 y el ultimo tf). Calcule la distancia entre los dos proyectiles para cada una de estas 11 tabulaciones de t

- 23 -

3. Programación y Archivos m. 3.1 El editor de archivos m. Las funciones y scripts no son más que archivos de texto ASCII, con la extensión *.m, que contienen definición de funciones o conjuntos de comandos respectivamente. El editor permite tanto crear y modificar estos archivos, como ejecutarlos paso a paso para ver si contienen errores (proceso de Debug o depuración, eliminar errores al programa). También Matlab permite que utilicemos cualquier editor (edit de DOS, Word, Notepad, etc.), ya que los archivos son sólo de texto. El gráfico muestra la ventana principal del Editor/Debugger. Puede apreciarse que aun no se ha introducido código alguno. El editor muestra con diferentes colores los diferentes tipos o elementos constitutivos de los comandos. (en verde los comentarios, en rojo las cadenas de caracteres, etc.). El editor además indica que las comillas o paréntesis que se abren se cierren correctamente. A continuación se observa un script llamado prueba.m, (en la barra azul puede verificarse), el cual contiene un conjunto de comandos, relativos al uso de matrices y cadenas. NOTAS: La función rand(n) retorna una matriz cuadrada nxn, cuyos elementos son números aleatorios entre 0 y 1, la función magic(n) también retorna una matriz cuadrada nxn pero con la particularidad de que la suma de los elementos de cada una de sus filas, columnas y diagonales tiene el mismo valor.

- 24 -

Recuerde que las cadenas de caracteres se delimitan con comillas simples y no con comillas dobles. La función inv(M) retorna la matriz inversa de M. Es importante la utilización del punto y coma (;) al final de cada sentencia, pues evita que Matlab haga eco de la misma al ejecutarla produciendo salida innecesaria al Command Window. Esta figura corresponde a la ejecución de este archivo de comandos controlado con el Debugger. Dicha ejecución se comienza con el comando Run en el menú Debug. Los puntos rojos que aparecen en el margen izquierdo son breakpoints (puntos donde se detiene la ejecución del programa). La flecha amarilla indica la sentencia en que está detenida la ejecución; cuando el cursor se coloca sobre una variable aparece una ventana con los valores de esa variable. Puede verse en la figura que está activa barra de herramientas que corresponde al Debugger. Cada botón significa lo siguiente. Set/Clear Breakpoint. Coloca o borra un breakpoint en la línea en que está el cursor. Clear All Breakpoints. Elimina todos los breakpoints que haya en el fichero. Step. Avanzar un paso sin entrar en las funciones de usuario llamadas en esa línea. Step In. Avanzar un paso, y si en ese paso hay una llamada a una función cuyo fichero *.m está accesible, entra en dicha función. Step Out. Salir de la función que se está ejecutando en ese momento. Continue. Continuar la ejecución hasta el siguiente breakpoint. Exit Debug Mode. Terminar la ejecución del Debugger. Stack. En la parte derecha de la barra de herramientas aparece esta lista desplegable mediante la cual se puede elegir el contexto, es decir el espacio de trabajo o el ámbito de las variables que se quieren examinar. - 25 -

3.2 Manejo de Archivos m y elementos básicos de programación. ¿Cómo accedemos al editor? Desde el Command Window: >> edit; Desde el menú File / New / M-file. ¿Cómo se ejecuta un script? Sencillamente se debe introducir su nombre en la línea de comandos. O mediante el editor. ¿Cómo se ejecuta una función? De igual manera que un script pero sus argumentos deben pasarse entre paréntesis y separados por coma. Ejemplo: mi_funcion(arg1, arg2, ..., argn) ¿Qué es una variable? Una variable es esencialmente una etiqueta a la que se le asigna un valor mientras el valor permanece en memoria. Funciones de entrada y salida: Valores de entrada en un fichero script. Cuando se ejecuta un fichero script, las variables utilizadas en los cálculos dentro del fichero deben tener valores asignados previamente. La asignación de estos valores se puede realizar de tres formas, dependiendo de dónde y cómo se haya definido la variable.

- 26 -

Input: Esta función permite imprimir un mensaje en la línea de comandos y recuperar como valor de retorno un valor numérico o el resultado de una expresión tecleada.

el comando input también se puede utilizar para asignar una cadena a una variable. se puede realizar de dos formas: Una es introduciendo la cadena entre comillas simples una vez que el mensaje del comando input se visualiza en la Ventana de comandos. Otra es utilizar una opción de comando input que permite concretar que los caracteres serán introducidos como cadena. Este comando tiene la siguiente forma: nombre_variable=input(‘Mensaje’,’s’) - 27 -

Comandos de Salida: Comando Disp: Esta función permite imprimir en pantalla un mensaje de texto o el valor de una matriz, pero sin imprimir su nombre. En realidad, disp siempre imprime vectores y/o matrices: las cadenas de caracteres son un caso particular de vectores.

- 28 -

Comando fprintf : Se utiliza para visualizar salidas de programas (texto y datos) en la pantalla, o bien para almacenarlas en un archivo, con este comando a diferencia de disp., la salida puede tener un formato preestablecido. En este caso se pueden combinar texto y resultados numéricos provenientes de cálculos o variables predefinidas en la misma línea. Además, el formato de los números se puede controlar directamente. % La salida de esta línea se escribirá en forma continua fprintf('El problema no tiene solución. Por favor, compruebe los datos de entrada')

El problema no tiene solución. Por favor, compruebe los datos de entrada % La salida de esta línea es divida en dos renglones por el carácter \n fprintf('El problema no tiene solución. \n Por favor, compruebe los datos de entrada')

El problema no tiene solución. Por favor, compruebe los datos de entrada>>

Utilización del comando fprintf para visualizar datos y texto juntos: fprintf(‘texto %-5.2f texto adicional’, nombre_variable) o el símbolo % marca el lugar donde se insertará el numero dentro del texto. o El signo – (opcional), bandera, si es – (menos) Justificación izquierda del numero dentro del campo, si es + (mas) Visualiza el carácter del signo(+ o -) delante del numero, si es 0(cero) Añade ceros si el numero es más pequeño que el campo. o La especificación del ancho y precisión del campo (5 en el ejemplo) es opcional. El primer número es el ancho del campo, el cual nos indica el menor número de dígitos en la visualización. Si el numero que se visualiza es menor que el ancho del campo, se añadirán ceros o espacios delante del número en cuestión. El segundo número (2 en el ejemplo) especifica el número de dígitos que se mostraran a la derecha del punto decimal. o El formato de conversión (f en el ejemplo), es obligatorio. A continuación se muestran los caracteres de conversión más utilizados: e E f g G i

Notación exponencial en minúsculas (ej. 1.709098e+001) Notación exponencial en mayúsculas (ej. 1.709098E+001) Notación de punto fijo (ej. 17.090980) Representación en formato corto de las notaciones e o f. Representación en formato corto de las notaciones E o f Entero

- 29 -

Ejemplo de cómo usar el comando fprintf:

- 30 -

- 31 -

3.3 Estructuras de Control 3.3.1 Sentencia If: En su forma más simple, la sentencia if se describe como sigue: if condicion sentencias end La condición no va encerrada entre paréntesis. Existe también la "bifurcación múltiple", en la que pueden concatenarse tantas condiciones como se desee, y que tiene la forma: if condicion1 bloque1 elseif condicion2 bloque 2 elseif condicion3 bloque 3 else % opción por defecto para cuando no se cumplan las otras condiciones. bloque 4 end El uso de else es opcional. Operadores relacionales Igualdad == Desigualdad ~= Menor < Mayor > Menor o igual =

and or not xor any all

Operadores lógicos & (ampersand) | (pipe) ~ (tilde) o exclusivo True si algún elemento del vector es true True si todos los elementos del vector son true

Ejemplos

- 32 -

- 33 -

3.3.2 Sentencia Switch: Esta sentencia realiza la función análoga a un conjunto if...elseif concatenados. Su forma general es: switch switch_expresion case {case_expr1} bloque 1 case {case_expr2, case_expr3, case_expr4, ...}, bloque 2 otherwise, bloque 3 end NOTA: Al igual que con else, el uso de otherwise es opcional. Al principio se evalúa la switch_expresion, cuyo resultado debe ser un número escalar o una cadena de caracteres. Este resultado se compara con las case_expr, y se ejecuta el bloque de sentencias que corresponda con ese resultado. Si ninguno es igual a switch_expresion se ejecutan las sentencias correspondientes a otherwise (que significa de otra manera). Es posible poner varias case_expr dentro de llaves. Ejemplo de uso switch:

- 34 -

3.3.3 Sentencia For: La sentencia for repite un conjunto de sentencias un número predeterminado de veces. La siguiente construcción ejecuta sentencias con valores de i de 1 a n, variando en uno: for i=1:n sentencias end For anidados: for i=1:n for j=1:m sentencias end end Ejemplos de uso de for: nro = input('Ingrese un número positivo: '); - 35 -

- 36 -

Serie Numérica: Calcular la suma de los primeros n términos de la siguiente serie numérica: ∑ Ejecutar el archivo para n=4 y para n=20.

Modificación de los elementos de un vector: Sea el vector V=[5,17,-3,8,0,-1,12,15,20,-6,6.4,-7,16],. Escribir un programa que multiplique por dos los elementos de V positivos y divisibles por 3 y/o por 5, y eleve al cubo los elementos negativos pero mayores que -5

- 37 -

3.3.4 Sentencia While: La sintaxis de la estructura while es la siguiente. while condicion sentencias end - 38 -

donde condicion puede ser una expresión vectorial o matricial. Las sentencias se siguen ejecutando mientras haya elementos distintos de cero en condicion, es decir, mientras haya algún o algunos elementos true. El bucle termina cuando todos los elementos de condicion son false (es decir, cero). Ejemplo de uso de while:

Ejemplo de uso de while con break (corta el bucle):

- 39 -

3.3.5 Funciones (Function) Los scripts aportan a Matlab la manera de realizar tareas de una manera más rápida. Las funciones permiten definir funciones enteramente análogas a las de Matlab, con su nombre, sus argumentos y sus valores de retorno. Los archivos *.m que definen funciones permiten extender las posibilidades de Matlab; de hecho existen bibliotecas de archivos *.m que se venden (toolkits) o se distribuyen gratuitamente. Tanto en scripts como en funciones la primera línea de comentarios conforma el help. Ejemplo: Dado el script llamado cuadrado.m: % este es un script que eleva un número al cuadrado nro = input('Ingrese un número positivo: '); nro = nro * nro; disp('El número ingresado elevado al cuadrado es: '); disp(nro); Y cuando escribimos en el Workspace: >> help cuadrado este es un script que eleva un número al cuadrado - 40 -

Construcción de funciones: La primera línea de un archivo llamado ejemplo.m que define una función tiene la forma: function [lista de valores de retorno] = ejemplo (lista de argumentos) donde ejemplo es el nombre de la función. Entre corchetes y separados por coma van los valores de retorno (siempre que haya más de uno), y entre paréntesis también separados por comas los argumentos. Puede haber funciones sin valores de retorno y también sin argumentos. Si no hay valores de retorno se omiten los corchetes. Y el signo igual (=); si sólo hay un valor de retorno no hacen falta poner corchetes. Tampoco hace falta poner paréntesis si no hay argumentos. Las variables definidas dentro de una función son variables locales, en el sentido de que son inaccesibles desde otras partes del programa y en el que no interfieren con variables del mismo nombre definidas en otras funciones o partes del programa. Para que la función tenga acceso a variables que no han sido pasadas como argumentos es necesario declarar dichas variables como variables globales, tanto en el programa principal como en distintas funciones que deben acceder a su valor. Dentro de la función, los valores de retorno deben ser calculados en algún momento (no hay sentencia return). Se utiliza return sólo para salir forzosamente del cuerpo de la función.

Ejemplos de funciones:

- 41 -

Escribir un archivo de función (llamado ecuación) para la función



. La

entrada de la función es x y la salida f(x). Escribir la función tal que x sea un vector. Utilizar la función pata calcular:

- 42 -

3.4 Aplicaciones Plan de pensiones. Una persona jubilada de la Universidad tiene 500,000 pesos en una cuenta de plan de pensiones que le paga el 5% de interés anual. Esta persona planea sacar dinero de su cuenta una vez al año. Empieza sacando 25,000 pesos después del primer año. Posteriormente en el futuro, incrementara la cantidad retirada en función de la tasa inflación anual. Por ejemplo, si la inflación es del 3%, retirara 25750 pesos al final del segundo año. Calcular el número de años que esta persona tardara en sacar todo el dinero de su cuenta. Suponiendo para ello una inflación anual constante del 2%. Representar en un grafico las cantidades anuales de dinero retiradas y el balance de la cuenta a lo largo de los años.

- 43 -

Generación de números para el sorteo de la lotería. En un sorteo de lotería el jugador debe elegir varios números de entre una lista dada. Escribir una función que genere una lista n de números enteros, distribuidos uniformemente entre un rango a y b. todos los números seleccionados de la lista deben ser distintos. a) Utilizar la lista para generar una lista de 6 números que varíen entre 1 y 49 b) Utilizar la lista para generar una lista de 8 números que varíen entre 60 y 75 c) Utilizar la lista para generar una lista de 9 números que varíen entre -15 y 15

- 44 -

Problemas: 1.- la temperatura máxima diaria (en °F) en Nueva York y Anchorage, Alaska, durante el mes de enero de 2001 viene dada por los siguientes vectores. TNY=[31 26 30 33 33 39 41 41 34 33 45 42 36 39 37 45 43 36 41 37 32 32 35 42 38 33 40 37 36 51 50] TANC=[37 24 28 25 21 28 46 37 36 20 24 31 34 40 43 36 34 41 42 35 38 36 35 33 42 42 37 26 20 25 31] Escriba un programa que calcule: a) La temperatura media en ese mes para cada ciudad. b) El número de días que estuvo la temperatura de cada ciudad por debajo de la media. c) El número de días, y a que días de mes corresponden, en los cuales la temperatura fue igual en ambas ciudades. d) El número de días, y a que días del mes corresponden, en los cuales la temperatura de ambas ciudades se mantuvo por encima de 32 °F. 2.- represente la siguiente función de dos formas distintas: 4                6 2                         2 2.5         6.5        2.5 6 a) Escribiendo un fichero script que utilice bucles y sentencias condicionales. b) Escribiendo una función f(x) para utilizarla posteriormente en un archivo script 3.- escriba un programa script que calcule las raíces reales de una función cuadrática ax2+bx+c=0. - 45 -

Llame al archivo raicescuad. Cuando el archivo se ejecute, este debe pedir al usuario que introduzca los valores de las constantes a, b y c. Para calcular las raíces de la ecuación, el programa calculara el discriminante D=b2-4ac Si D>0, el programa visualizara un mensaje del tipo: ’La ecuación tiene dos raíces’, y los valores de las raíces se visualizaran en la línea siguiente. Si D=0, el programa visualizara un mensaje del tipo: ’La ecuación tiene una raíz’, y el valor de la raíz se visualizara en la línea siguiente. Si D> x=[1 2 3], y=[1 4 9], plot(x,y)

7 6 5

x= 1

2

4

3

3

y= 1

4

9

2 1

Realiza la representación grafica de los puntos (1; 1), (2; 4) y (3; 9) unidos por una línea recta.

1

1.2

1.4

1.6

1.8

2

2.2

2.4

2.6

2.8

3

2.6

2.8

3

9 8

Si la orden hubiera sido >>plot(x,y,’:r’)

7

Entonces habría pintado los puntos x; y como líneas punteadas rojas.

5

6

4 3

Para personalizar los gráficos, el comando plot admite en su sintaxis otros argumentos que se pueden utilizar para definir el color y estilo de líneas y marcadores.

2 1

1

1.2

1.4

1.6

1.8

2

2.2

2.4

Plot (x,y, ’especificadores de línea’, ’Propiedades’, ’Valores’) - 50 -

4.2.2 Especificadores de línea Son opcionales y se pueden utilizar para definir el color y estilo de línea, así como el tipo de marcadores: Especificador -: -. + * . o x

Estilo de línea Línea continua Línea continua Línea de guiones Línea punteada Línea de guiones y puntos Cruces asteriscos Puntos Círculos Equis

Especificador r y m c g b w k

Color de línea rojo amarillo magenta turquesa verde azul blanco negro

Introduciendo una a una en la ventana de comandos las siguientes ordenes obtener la representación grafica de la función f(x) = sen xe-0.4x en el intervalo [0, 10]. >> x=0:0.05:10; >> y=sin(x).*exp(-0.4*x); >> plot(x,y) >> axis([0,10,-1,1]) >> xlabel('eje x'), ylabel('eje y') >> title('La Primer Grafica') >> grid >> text(4,-0.1,'Minimo')

% Por que se utiliza la operación .*? % genera la gráfica % La x valora en [0; 10] y la y en [-1; 1] % Rótulos en los ejes x; y %Titulo de la grafica % Sitúa una rejilla en la grafica %Sitúa un comentario en el punto (4,-0.1) La Primer Grafica

1 0.8 0.6 0.4

eje y

0.2 0 Minimo -0.2 -0.4 -0.6 -0.8 -1

0

1

2

3

4

5 eje x

- 51 -

6

7

8

9

10

4.2.2 Propiedades y Valores Son opcionales, y se utilizan para concretar el grueso de la línea, el tamaño de los marcadores, así como los colores de relleno y del borde del marcador. propiedad linewidth

Descripción Especifica el grosor de la línea

markersize

Especifica el tamaño de las marcas

markeredgecolor Especifica el color del marcador, o el color del borde de la línea para marcadores con relleno markerfacecolor Especifica el color de relleno de los marcadores

Posible valor de la propiedad Un número representado en unidades de puntos (por defecto 0.5) Un número representado en unidades de puntos Especificadores de color, introducidos en forma de cadena Especificadores de color, introducidos en forma de cadena

Ejemplo: Plot(x,y, ‘-mo’, ‘linewidth ‘,2,’markersize’,12,’markeredgecolor’,’g’,’markerfacecolor’,’y’) Crea un gráfico en el cual una línea sólida de color magenta une puntos que se representan mediante marcadores en forma círculo. El grosor de línea es de 2 puntos, y el tamaño de los círculos utilizados como marcadores es de 12 puntos. Los marcadores (círculos) tienen bordes de color verde, y amarillo como color relleno. Especificador propiedad Posible valor para la propiedad Estilo de línea Linestyle Especificador de estilo de línea, introducidos en forma de cadena Color de línea Color Especificador de color, introducidos en forma de cadena Marcador marker Especificador de marcador, introducido en forma de cadena

- 52 -

4.2.4 Generación de gráficos a partir de datos dados Ventas de una compañía desde el año 1988 a 1994 Año Ventas (millones)

1988 8

1989 12

1990 20

- 53 -

1991 22

1992 18

1993 24

1994 27

4.2.5 Generación de gráficos a partir de funciones Representar gráficamente la función 3.5 . cos  6

2

en el intervalo

4.

4.2.6 El comando fplot Representa gráficamente una función de la forma y=f(x) entre unos límites especificados por el usuario. El comando tiene la siguiente sintaxis: Fplot (‘función’, limites, especificadores de línea) Representar una función del tipo

4

2

>> fplot('x^2+4*sin(2*x)-1',[-3,3])

- 54 -



3

3

4.2.7 Representación gráfica de varias funciones a la vez La representación de varias funciones se puede realizar de tre formas diferentes. Una de ellas consiste en utilizar el comando plot, otra en utilizar los comandos hold on y hold off, y la tercera consiste en utilizar el comando line. Utilizando el comando plot Dibujar la función 3 26 10,  así como su primera y segunda derivadas, en el intervalo 2 4. Todas las funciones deben representarse juntas en el mismo gráfico.

- 55 -

Utilizando los comandos hold on y hold off

Utilizando el comando line

4.3 Edición de atributos de los gráficos. Los gráficos se pueden formatear o bien utilizando comandos matlab a continuación de los comandos plot o fplot, o bien utilizando el editor de gráficos de la ventana de gráficos. El primer método es útil cuando los comandos plot o fplot son parte de un programa (archivo script). Cuando un programa incluye comandos de formato, cada vez que se ejecuta crea un gráfico con formato. Por otra parte, el formato que se aplica mediante el editor de gráficos de la ventana de gráficos solo se mantiene para un gráfico en concreto, y se tendrá que volver a aplicar la próxima vez que se cree el gráfico. 4.3.1 Formateado de una representación gráfica mediante comandos Los comandos de formato se introducen después de aquellos que crean o visualizan gráficos: plot y fplot. Algunos de ellos son: Los comandos xlabel , ylabel: Sirven para poner titulo, en forma de texto, a los ejes. Su sintaxis es: xlabel(‘texto’) ylabel(‘texto’) El comando title: Añade un título (principal) al gráfico en la parte superior del mismo. Su sintaxis es: title(‘texto’) - 56 -

El comando text: Permite situar una etiqueta de texto dentro del gráfico, tiene dos variantes: text(x,y,’texto’) gtext(‘texto’) El comando axis: Cuando el comando plot(x, y) se ejecuta, matlab crea los ejes correspondientes para la representación gráfica, basándose en los valores máximo y mínimo de los valores posibles que toman x e y. El comando axis permite cambiar el rango de los ejes, así como su apariencia. A continuación se muestran algunos de los posibles formatos que acepta el comando axis. axis([xmin,xmax,ymin,ymax]) establece los límites de ambos ejes, x e y, entre los valores máximos y mínimos. axis equal Establece la misma escala en ambos ejes. axis square Establece la región de los ejes en un cuadrado. axis tight Establece los límites de los ejes en función del rango de los datos. El comando grid: grid on Añade una cuadrícula a la representación gráfica. grid off Elimina la cuadrícula de la representación gráfica. Ejemplo:

- 57 -

4.3.2 Formateado de una representación gráfica mediante el editor gráfico La apariencia de un gráfico generado en la ventana de gráficos se puede modificar de forma interactiva pulsando con el ratón sobre el gráfico y/o utilizando los menús. El editor gráfico se puede utilizar para añadir elementos nuevos o componentes en una representación gráfica, o para modificar el formato de los elementos previamente introducidos mediante comandos. 4.3.3 Gráficos con ejes logarítmicos Los comandos utilizados en matlab para representar gráficos con ejes logarítmicos son: Ejemplo: Graficar la función 2 .   de escalas logarítmicas y lineales.

 0.1

60 utilizando distintas combinaciones

Nombre_variable=linspace(xi,xf,n) (xi=primer elemento, xf=último elemento, n=número de elementos)

- 58 -

4.3.4 Gráficos varios Gráfico de barras verticales Formato de la función: bar(x,y)

- 59 -

Gráfico de barras horizontales Formato de la función: barh(x,y)

Gráfico de escaleras Formato de la función: stairs(x,y)

Gráfico de tallo o líneas verticales Formato de la función: stem(x,y)

Gráfico circular Formato de la función Pie(x)

Más de un gráfico en la misma página. Con la orden subplot podemos representar una matriz con mxn subgráficas en una sola figura; la sintaxis es:

- 60 -

Gráfica 2,2,1

Gráfica 2,2,2 40

0.5

20 t.*cos(t)

1

0

-0.5

-1

cos(t). 2

t=0:0.3:40; subplot(2,2,1), plot(t,cos(t)) title('Gráfica 2,2,1') xlabel('t'); ylabel('cos(t)') subplot(2,2,2), plot(t,t.*cos(t)) title('Gráfica 2,2,2') xlabel('t'); ylabel('t.*cos(t)') subplot(2,2,3), plot(t,cos(t).^2) title('Gráfica 2,2,3') xlabel('t'); ylabel('cos(t).^2') subplot(2,2,4), plot(t,(t.^2).*(cos(t).^2)) title('Gráfica 2,2,4') xlabel('t'); ylabel('t.^2.*cos(t).^2')

0

-20

0

10

20 t

30

-40

40

0

10

Gráfica 2,2,3

20 t

30

40

30

40

Gráfica 2,2,4

1

1500

0.8 t. 2.*cos(t). 2

Donde k es un número natural que indica el orden en que aparece la gráfica: la primera, la segunda, ... Como ejemplo ejecutamos el siguiente listado:

cos(t)

subplot(m,n,k)

0.6 0.4

1000

500

0.2 0

0

10

20 t

30

0

40

0

10

20 t

Graficas de curvas La representación de la curva de ecuaciones polares ρ(θ) = sen(4θ)e-0.3 θ para θ Є [0, π] se puede realizar con la orden polar y con el siguiente listado: Coordenadas polares

t=0:.05:pi; r=sin(4*t).*exp(-.3*t); polar(t,r) title('Coordenadas polares') grid

90

1

120

60 0.8 0.6

150

30 0.4 0.2

180

0

330

210

240

300 270

- 61 -

4.4 Grabar y Exportar. •

Una vez completado un gráfico, puede ser almacenado de dos formas: o Guardarlo con un formato que permita abrirlo en una nueva sesión de MATLAB, abriendo una ventana de diálogo seleccionando File → Save, o bien, save grafico.fig en la ventana de comandos o en el Editor/Debugger. o Exportarlo, eligiendo el formato adecuado al programa donde lo vayamos a utilizar. Esto se consigue: Seleccionar File → Export... y elegir la extensión deseada en la ventana de diálogo o escribiendo » print grafico.ext en la ventana de comandos o en el Editor/Debugger.

4.5 Introducción a gráficos 3D Los gráficos tridimensionales proporcionan una manera práctica de representar datos de más de dos variables. Matlab proporciona distintas opciones y funciones destinadas a la representación de gráficos tridimensionales. 4.5.1 Gráficos de línea Está constituido por una línea que se obtiene uniendo una serie de puntos en un espacio tridimensional. La forma más sencilla y básica es mediante la función plot3. Plot3(x,y,z, ’Especificadores de línea’, ’propiedades’, ’Valores’) Ejemplo: √   

2

√ cos 2

0.5

- 62 -

 0

6

4.5.2 Gráficos de malla y superficie Son gráficos tridimensionales utilizados para representar funciones que tiene la forma z=f(x,y), donde x e y son variables independientes, y z es la variable dependiente. Estos gráficos se generan n tres pasos: o El primer paso es crear una malla o rejilla en el plano x-y que cubra el dominio de la función. [x,y]=meshgrid(x,y) o El segundo paso es calcular el valor de z en cada punto de la rejilla. z=x.*y.^2./(x.^2+y.^2) o El tercer paso es representar el gráfico. Mesh(x,y,z) o surf(x,y,z) Tipo de gráfico Gráfico de malla: mesh(x, y, z)

Gráfico

Gráfico de superficie: surf(x, y, z)

Gráfico de malla con cortina: meshz(x, y, z)

Gráfico de malla con contorno: meshc(x, y, z)

- 63 -

Tipo de gráfico Gráfico de superficie con contorno: surfc(x, y, z)

Gráfico de superficie con alumbrado: surfl(x, y, z)

Gráfico de cascada: waterfall(x, y, z)

Gráfico de contorno 3-D: contour3(x, y, z, n) n es el numero de niveles de contorno(opcional)

Gráfico de contorno 2-D: contour(x, y, z, n) n es el numero de niveles de contorno(opcional)

- 64 -

Gráfico

Problemas: 1.- Represente dos gráficos de forma separada, de la función f(x)=0.6x5-5x3+9x+2; uno de los gráficos debe estar en el dominio -4≤x≤4, y el otro en el dominio -2.7≤x≤2.7   

2.- Represente la función

10

10

3.- utilice el comando fplot para representar la función: 9

0.01

0.03

0.4

2

6



   

4

6

.

4.- represente la función 10 10. observe que esta función posee una asíntota vertical en el punto x=4. Represente la función mediante la creación de dos vectores para el dominio de x. el primer vector (llámelo x1) contendrá los elementos -10 a 3.7, y el segundo vector (llámelo x2) los elementos 4.3 hasta 10. Adicionalmente habrá que crear dos vectores y1 e y2 para los correspondientes valores de la función sobre los dos vectores anteriormente creados para el dominio de x. seguidamente represente la función mediante dos curvas en la misma región gráfica (y1 frente a x1, y2 frente a x2).   10 10. observe que esta función 5.- Represente la función tiene dos asíntotas verticales. Represente la función dividiendo el dominio de x en tres partes; una que valla desde -10 hasta aproximadamente la asíntota izquierda, otra entre las dos asíntotas, y una tercera desde aproximadamente la asíntota derecha hasta 10. Establezca el rango del eje y entre -20 y 20. 6.- represente la función f(x)=3xsen(x)-2x y su derivada, ambas en la misma región gráfica, en el intervalo -2π≤x≤2π. Represente la función con una línea solida, y su derivada con una línea discontinua. Añada una leyenda y etiquetas para los ejes. 7.- la magnitud M, en la escala Richter, de un terremoto viene dada por: 2 3

10

.

Donde E es la energía en julios liberada por el terremoto. Haga un gráfico de E (en ordenadas) frente a M (en abscisas) para 3≤M≤8. Utilice una escala logarítmica para E y una lineal para M. etiquete los ejes y añada un titulo al gráfico. 8.- la posición x en función del tiempo t de una partícula que se mueve a lo largo de una línea recta viene dada por: x(t)=0.4t3-2t2-5t+13 metros. La velocidad v(t) de la partícula se calcula mediante la derivada de x(t) con respecto al tiempo t, y la aceleración a(t) se calcula derivando v(t) con respecto al tiempo t. Deduzca las expresiones de la velocidad y la aceleración de la partícula y represente su posición, velocidad y aceleración en función del tiempo para 0≤t≤7 s. utilice el comando - 65 -

subplot para crear tres graficas en la misma ventana de gráficos, etiquete los ejes apropiadamente con las unidades correctas. 5. La Interfaz Gráfica de Usuario (GUI). 5.1 El editor de Interfases Gráficas de usuarios (GUI). Una interfase gráfica es el vinculo entre el usuario y un programa computacional, constituida generalmente por un conjunto de comandos o menús, instrumentos y métodos 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 e información. Ejemplos de interfases gráficas son las ventanas de Word, Excel, la ventana de Matlab, entre otras. Existen diferentes lenguajes de programación que permiten crear GUIs tales como Visual C, Visual Basic, TK y Matlab, entre otros muchos.

5.2 Objetos y Propiedades disponibles para las GUI. La forma de implementar las GUI con Matlab es crear los objetos y definir las acciones que cada una va a realizar. Al usar GUIDE para crear un GUI obtendremos dos archivos: Un archivo FIG con la descripción de los componentes que contiene la interfase y. Un archivo M que contiene las funciones y los controles del GUI así como el callback. Un callback se define como la acción que lleva a cabo un objeto de la GUI cuando el usuario lo active. Suponga que en una ventana existe un botón que al presionarlo ejecutará una serie de instrucciones, a ese conjunto de instrucciones se le conoce como la función callback. Para crear una GUI se usa GUIDE, ya sea escribiendo guide en la ventana de comandos o ejecutando desde el menú principal File-New-GUI. - 66 -

Posteriormente se mostrará una ventana con opciones parea la creación de GUI o si se desea abrir una ya existente. En la parte superior se muestran los menús y opciones de GUIDE. En la parte izquierda los diferentes controles y en la parte central el área de diseño donde se irán poniendo los controles a usar. En la parte superior también se encuentra la barra de herramientas que contiene entre otras: Alineación de objetos, Editor de menú, Editor del orden del tabulador, Editor de archivos M, Inspector de propiedades, Navegador de objetos y Activación de GUI. se puede hacer que los controles aparezcan con su nombre mediante el menú File-Preferences-Guide y seleccionando Show names in component palette. Para ver las propiedades de un control primero se crea este, seleccionándolo y arrastrándolo a donde se desea que quede colocado, y luego se activa el inspector de propiedades (situados sobre el control creado se da clic al botón derecho del mouse y se selecciona Property Inspector). Apareciendo la ventana de propiedades. Siendo las más usadas: BackgroundColor. Cambia el color del fondo del control. Callback. Le dice al control que hacer cuando este se active. Enable. Activa o desactiva un control. String. Es el texto que se muestra en el control. Tag. Identifica el control.

- 67 -

5.3 Ejemplos de GUI. Hola Mundo Crear una nueva figura (GUI) y agregar un Static Text y un Push Button y guardarla como HolaMundo.fig; la extensión fig la da Matlab automáticamente. Después de guardar el archivo, GUIDE automáticamente mostrara una ventana nueva con el código del archivo HolaMundo.m generado por GUIDE. En la ventana de GUIDE seleccionar el Static Text y activar el inspector de Propiedades, modificar la propiedad String por Hola Mundo, repetir la misma operación para el Push Button en la propiedad String escribir Salir Editar el callback del botón Salir para que al ser activado cierre la ventana. Para hacer esto presionar el botón Salir con el botón derecho del mouse y seleccionar View Callback-Callback, se mostrara el editor de funciones del archivo HolaMundo.m donde se escribirá la instrucción: close (gcbf) Lo cual indica que se cerrara una figura de tipo gráfico. A continuación se vuelve a guardar el archivo, se activa la figura con la herramienta activación de GUI y se mostrara la salida.

- 68 -

Convertir Temperaturas Permite convertir entre las escalas de temperatura Celsius-kelvin-Fahrenheit. Ejecutar un nuevo GUIDE y colocar cuatro StaticText dándoles el tamaño indicado. Modificar a cada una la propiedad String escribiendo lo siguiente: Calculador de Temperaturas Celsius Kelvin Fahrenheit Debajo de las etiquetas Celsius, Kelvin, Fahrenheit. Agregar tres Edit Text, modificarles la propiedad String para que queden en blanco, modificarles la propiedad Tag a Celsius, kelvin y Fahrenheit, respectivamente. Y debajo de estos, cuatro Push Button, cambiándoles la propiedad String a Calcula para los tres primeros y a Salir para el último. Cambiarles también la propiedad Tag a Boton_Celsius, Boton_Kelvin y Boton_Fahrenheit, respectivamente, y para el botón Salir cambiar su propiedad Tag a Boton_Salir Una vez realizado lo anterior guardar la interfase con File-Save As, y ponerle el nombre de conv_temp, esto abrirá una nueva ventana del editor en donde se pondrás el código necesario. Ahora se tienen dos archivos: conv_temp.fig y conv_temp.m

- 69 -

Agregar código al botón Salir, seleccionar la opción callback del botón y escribir close(gcbf)

En el control de Calcula que está debajo de Celsius poner el código para convertir de Celsius a kelvin y Fahrenheit, de acuerdo al siguiente algoritmo: o Recibir el dato de Celsius o Realizar conversión de Celsius a Kelvin o Realizar conversión de Celsius a Fahrenheit o Mostrar resultados Para esto seleccionar la opción callback del botón Calcula y añadir el código siguiente:

En el control de Calcula que está debajo de Kelvin poner el código para convertir de kelvin a Celsius y Fahrenheit. Seleccionar la opción callback del botón Calcula y añadir el código siguiente:

- 70 -

En el control de Calcula que está debajo de Fahrenheit poner el código para convertir de Fahrenheit a kelvin y Celsius. Seleccionar la opción callback del botón Calcula y añadir el código siguiente:

Guardar nuevamente el archivo, y ahora se puede ejecutar.

- 71 -

5.4 Planeación y desarrollo de GUI. Antes de empezar a programar es imprescindible hablar con el usuario final de la GUI. Es importante entender cuáles son las necesidades exactas que tienen que ser cubiertas por la aplicación. Para ello es necesario entender el tipo de datos y variables que son introducidas por el usuario, así como las excepciones que puedan producirse, los casos que ocurren pocas veces pero que hay que tener en cuenta, etc. También es necesario saber cómo quiere el usuario que se presenten los datos; si se necesitan gráficos o tablas, si va a imprimir, o cómo va a guardar los resultados, dónde se van a guardar y en qué formato. Para diseñar correctamente una GUI, lo mejor es hacer un bosquejo a papel y lápiz. Presentar al usuario para su discusión y corrección y así mejorarlo. De esta manera se consigue que no haya errores u omisiones y evita que después de haber avanzado en el trabajo sea necesaria la corrección de él, con lo cual retardaría la entrega y encarecería el proyecto. Las GUIs tienen que diseñarse de modo que los botones estén donde el usuario los requiere. Si nuestra GUI tiene varias páginas distintas y en cada una de ellas hay un botón que dice “Guardar” es conveniente que ese botón esté localizado en el mismo sitio siempre. Una vez que se tiene claro qué objetos tendrá la GUI, gráficos, textos, radio buttons, check boxes, edición de texto, entrada de valores, lectura de matrices, etc., y una vez que se tenga claro de qué forma aparecerán en la interfaz (el layout) es necesario hacer un programa de tipo script que tenga la misma funcionalidad que la GUI que se quiere programar. Antes de incorporar el programa a la GUI, es necesario hacer todo tipo de pruebas con él hasta estar completamente seguros de que el programa que se va a incorporar en la GUI es el programa deseado.

- 72 -