BIBLIOGRAFÍA
i
ii
M ATLAB aplicado a las ciencias de la inge niería
M ATLAB aplicado a las ciencias de la ingeniería
iii
iv
M ATLAB aplicado a las ciencias de la inge niería
Primera edición, marzo 2016. 250 eje mplares Hecho e l Depósito Legal e n la Biblioteca Nacional del Perú N° 2016-02237. Editado por: © Rubén Galeas Arana. Jr. Tarapacá 672 Pilcomayo-Huancayo-Junín. Impreso en: Multiservicios Centro Gráfico del Sr. Heber García Dorregaray. Jr. Marañón 121 Huancayo. RUC. 10198637993. Marzo 2016. MATLAB APLICADO A LAS CIENCIAS DE LA INGENIERÍA Código CTI : 0403 0503 IMPLEMENTACIÓN DE ESTÁNDARES PARA LA SEGURIDAD Y ADMINISTRACIÓN DE DATOS Y PROGRAMAS Código UNESCO : 1203 17 INFORMÁTICA. ISBN: 978-612-00-2196-5 Autores: Mg. Rubé n Gale as Arana. Mg. Juan Guido Arellano Gue rre ro. Ing. Hernán Ramón Juan de Dios Baldeón. Derechos Rese rvados. Prohibida la reproducción total o parcial de este libro, su tratamiento informático, la transmisión de ninguna otra forma o por cualquier otro medio; ya sea electrónico, mecánico, por fotocopia u otros métodos; sin permiso previo y por escrito de los autores. Distribución y Ventas. Jr. Tarapacá 672 Pilcomayo-Huancayo. Teléfono: 064-261444.
[email protected]
v
M ATLAB aplicado a las ciencias de la ingeniería
UNIVERS IDAD NACIONAL DEL CENTR O DEL PE RU CENTRO DE INVESTIGACIÓN DE LA UNCP Instituto de Inve stigación de la Facultad de Ingenie ría Eléctrica y Elect rónica
INFORME FINAL Proyecto: LIBRO DE INVESTIGACIÓN Título:
MAT LAB APLICADO A LAS CIENCIAS DE LA INGENIERÍA Código CTI
: 0403 0503 IMP LEMENTACIÓN DE ESTANDARES PARA LA SEGURIDAD Y ADMINISTRACIÓN DE DATOS Y PROGRAMAS
Código UNESCO
: 1203 17 INFORMÁTICA
Fecha de inscripción
: 10 de junio de 2015
Fecha de culminación : 10 de marzo de 2016 Ejecutores:
Apellidos y Nombres
1 Investigador
2 Participación
Facultad /Dependencia /Institución
GALEAS ARANA RUBEN
Docente
Responsable
FIEE
ARELLANO GUERRERO JUAN
Docente
Corresponsable
FIEE
JUAN DE DIOS BALDEON HERNAN
Docente
Colaborador
FIEE
vi
M ATLAB aplicado a las ciencias de la inge niería
M ATLAB aplicado a las ciencias de la ingeniería
vii
“Cuidemos nuestro medio ambiente, recuerda que éste es nuestro único hogar, no tenemos otro”.
A todos los profesionales que confían en la ingeniería, porque la ingeniería nunca engaña.
viii
M ATLAB aplicado a las ciencias de la inge niería
M ATLAB aplicado a las ciencias de la ingeniería
ix
LISTA DE FIGURAS Figura 1.1. Pantalla del escritorio donde está el ícono del MATLAB. Figura 1.2. Pantalla principal del M ATLAB versión R2015a. Figura 1.3. Opciones para activar las ventanas Workspace y Command History . Figura 1.4. Pantalla principal del MATLAB con la Ventana de comandos, ventana de trabajo y la ventana de historia de comandos. Figura 1.5. Modo de uso de la ventana de comandos. Figura área de de trabajo. Figura 1.6. 1.7. Ventana Ventana del de historia comandos. Figura 1.8. Ventana de ayuda de la sentencia sqrt. Figura 1.9. Íconos que permiten guarda y recuperar variables de trabajo. Figura 3.1. Representación gráfica de un arreglo unidimensional. Figura 3.2. Representación de una matriz de mxn. Figura 4.1. Pantalla principal del MATLAB que muestra los botones para crear archivos-Ficheros”. “M Figura 4.2. Pantalla principal del MATLAB en el que se muestra la ventana de editor de programas. Figura 4.3. Ventana de grabación de archivos. Figura 4.4. Estructura secuencial. Figura 4.5. Ventana de editor de programas del MATLAB. Figura 4.6. Estructura condicional simple. Figura 4.7. Estructura condicional doble. Figura 4.8. Estructura condicional múltiple. Figura 4.9. Estructura de decisión múltiple. Figura 4.10. Estructura repetitiva “mientras”. Figura 4.11. Ventana que muestra la parábola con 8 puntos. Figura 4.12. Ventana que muestra la parábola con 100 puntos. Figura 5.1. Ventana gráfica del MATLAB. Figura 5.2. Grafico que muestra la unión de los puntos (3;1), (5;3), (2;-1) y (4;3). Figura 5.3. Gráfica de una recta conociendo dos puntos. Figura 5.4. Gráfica de la recta de la Figura 5.3 en MATLAB con ejes iguales. Figura 5.5. Gráfica de la recta de la Figura 5.3 en MATLAB con área definida. Figura 5.6. Gráfica de la recta de la Figura 5.3 en MATLAB con rejilla. Figura 5.7. Gráfico que representa a la recta y=2x-3. Figura 5.8. Gráfico que representa a la recta y=2x-3 con rejillas más pequeñas. 2-4x+5. Figura 5.9. Gráfico que representa a la parábola y=2x 3-6x2+2x-3. Figura 5.10. Gráfico que representa a la función cúbica y=x 4+x3-5x2-3. Figura 5.11. Gráfico que representa a la función de la forma y=x Figura 5.12. Gráficas de funciones racionales de la forma y=1/p(x). Figura 5.13. Gráfico que representa a la función de la forma y=1/(2-x). 2+x-12). Figura 5.14. Gráfico que representa a la función de la forma y=1/(x Figura 5.15. Gráfica tradicional de la función y=sen(x). Figura 5.16. Gráfico que representa a la función de la forma y=sind(x). Figura 5.17. Gráfico que representa a la función de la forma y=2+sind(x). Figura 5.18. Gráfico que representa a la función de la forma y=sind(x+90). Figura 5.19. Gráfico que representa a la función de la forma y=3sind(x).
x
M ATLAB aplicado a las ciencias de la inge niería
Figura 5.20. Gráfico que representa a la función de la forma y=sind(3x). Figura 5.21. Gráfico de la función sinusoidal de la forma y= y=2+3sind(3x+90). Figura 5.22. Gráfico una función por partes. Figura 5.23. Usos de la función plot(x,y,'linestyle','--','marker','x','color','r','linewidth',2.5). Figura 5.24. Usos de la función plot(x,y,'-o'). Figura 5.25. Gráfico de múltiples curvas. Figura 5.26. Gráfico de múltiples curvas con características de cada curva. Figura 5.27. Gráfico de múltiples curvas utilizando la sentencia hold on . Figura 5.28. Gráfico utilizando todas las características de los gráficos en MATLAB. Figura 5.29. Gráfica en múltiples ventanas en MATLAB. Figura 5.30. Representación del plano polar. Figura 5.31. Representación del punto P(4,70°) en el plano polar. Figura 5.32. Representación de los puntos (2.5,30°), (6,45°) y (4,70°) en el plano polar. Figura 5.33. Utilización de las características especiales de la funciónpolar. Figura 5.34. Utilización de las características especiales de la funciónpolar. Figura 5.35. Utilización de las funciones logarítmicas en MATLAB. Figura 5.36. Vectores en el plano cartesiano. Figura 5.37. Uso de la funcióncompass . Figura 5.38. Comparación de las sentenciasplot y fill . Figura 5.39. Puntos de una línea en 3D. Figura 5.40. Gráfico de una línea en 3D con la función plot3 . Figura 5.41. Gráfico de un resorte en 3D con la función plot3 . Figura 5.42. Uso de la funciónplot3 con sus características especiales. Figura 5.43. Uso de las funcionesplot3 , mesh y surf . Figura 5.44. Uso de la funciónmesh con un mejor acabado. Figura 5.45. Uso de la funciónsurf con un mejor acabado. Figura 5.46. Uso de la funciónsurf con shading flat con un mejor acabado. Figura 5.47. Uso de la funcióncontour con 25 curvas de nivel. Figura 5.48. Uso de la funcióncontour3 con 25 curvas de nivel. Figura 5.49. Uso de la funciónsphere con n=20 (por defecto). Figura 5.50. Uso de la funciónsphere con n=10. Figura 5.51. Uso de la funcióncylinder con r=1 y n=20 (por defecto). Figura 5.52. Uso de la funcióncylinder con r=5 y n=10. Figura 5.53. Resultado final después de ejecutar la función movimiento.
M ATLAB aplicado a las ciencias de la ingeniería
xi
INTRODUCCIÓN MATLAB es el nombre abreviado de“MATriz LABoratory”, es un lenguaje de programación especialmente diseñado para el uso con finescientíficos o de ingeniería, por tanto, nos permite programar todo tipo de cálculos numéricos con matrices, vectores, números escalares (tanto con números reales como con números complejos) y cadenas de caracteres; de una manera más sencilla y eficiente que otros lenguajes de programación. Dicho de otro modo, MATLAB te brinda las herramientas necesarias con las que tú construyes el programa que te permitirá resolver los cálculos necesarios para tú análisis, trabajoo proyecto. Antes de que empieces a leer esta entrada queremos hacerte una advertencia . MATLAB (como cualquier otro programa de cálculo científico) no es una excepción a la regla de que sólo se aprende con práctica, esfuerzo y muchas horasde estudio y dedicación, como tantas otras cosas en la vida. Por supuesto, si utilizas material deapoyo y alguien que guíe tus primeros pasos, las muchas horas serán tan sólo unas cuantas horas y ya podrás utilizarel software para los propósitos que desees. Todo esto suena un poco complicado, pero losprincipios que rigen MATLAB sonsencillos, especialmente si conoces otros lenguajes de programación como C++, Visual Basic, FoxPro entre otros. MATLAB es un lenguaje de alto rendimiento para cálculos técnicos, uno de sus puntos importantes es que permite construir nuestras propias herramientas reutilizables. Podemos crear fácilmente nuestras propias funciones y programas especiales (conocidos como M-archivos) en código Matlab, los podemos agrupar enToolbox (también llamadas librerías): colección especializada de M-archivos para trabajar en clases particulares de problemas. Matlab, a parte del cálculo matricial y álgebra lineal, también permite hacer cálculos con polinomios, funciones, límites, derivadas, integrales, ecuaciones diferenciales ordinarias, gráficos, aplicacionesGUI (Interfaz Gráfica de Usuario) y simulaciones con el SIMULINK. Quizá la parte más difícil, es que modifiques tumodo de pensar de humano a máquina, diseñando un algoritmo que el software y tú comprendas.
Los autores.
xii
M ATLAB aplicado a las ciencias de la inge niería
M ATLAB aplicado a las ciencias de la ingeniería
xiii
ÍNDICE INTRODUCCIÓN
xi
CAPÍTULO I: CARACT ERÍSTICAS BÁSICAS DELM AT LAB
3
1.1 EL ESPACIO DE TRABAJO DEL MATLAB.
3
1.2 VENTANAS DEL MATLAB. a) Ventana de comandos (command window).
5 6
b) Ventana del área de trabajo (Workspace). c) Ventana de historia de comandos (Command history). 1.3 AYUDA EN LÍNEA (HELP). 1.4 ALMACENAR Y RECUPERAR DATOS.
7 8 8 9
CAPÍTULO II: OPERACIONES Y FUNCIONES BÁSICAS CON MATLAB
13
2.1 VARIABLES EN MATLAB. 2.2 CONSTANTES EN MATLAB.
13 13
2.3 OPERACIONES CON ESCALARES EN MATLAB. 2.4 VISUALIZACIÓN DE DATOS EN LA VENTANA DE COMANDOS. 2.5 FORMATOS DE SALIDA EN MATLAB.
14 17 18
2.6 USO DE PARÉNTESIS Y PRECEDENCIA DE LAS OPERACIONES EN MATLAB. 2.7 FUNCIONES INTERNAS O PREDEFINICAS EN MATLAB.
20 21
APLICACIONES DEL CAPÍTULO II.
34
CAPÍTULO III: ARREGLOS – VECTORES Y MAT RICES CON MATL AB
47
3.1 ARREGLO UNIDIMENSIONAL (LISTA O VECTOR).
47
a) Formas abreviadas de construir un vector.
50
b) Operaciones aritméticas con vectores. c) Funciones que trabajan con vectores.
53 57
3.2 ARREGLO BIDIMENSIONAL (MATRIZ).
61
a) Operaciones aritméticas con matrices. b) Funciones que trabajan con matrices. c) Construcción rápida de matrices. APLICACIONES DEL CAPÍTULO III.
67 72 78 81
xiv
M ATLAB aplicado a las ciencias de la inge niería
CAPÍTULO IV: PROGRAMACIÓN EN MATLAB
93
4.1 CREACIÓN DE ARCHIVOS “M -FICHEROS” EN MATLAB. 4.2 OPERACIONES DE ENTREDA Y SALIDA DE DATOS EN MATLAB.
93 95
a) Entrada de datos (lectura de datos).
95
b) Salida de datos. 4.3 ESTRUCTURAS SECUENCIALES. 4.4. ESTRUCTURAS CONDICIONALES.
95 97 98
a) Operadores de relación en MATLAB. b) Operadores lógicos en MATLAB. c) Estructura condicional simple (if … end).
99 99 100
d) Estructura condicional doble (if … else … end). e) Estructura condicional múltiple (if … elseif … elseif … else ... end) f) Estructura de decisión múltiple (switch … case1 … case2 … othe rwise ... end)
101 103 105
4.5. ESTRUCTURAS DE CONTROL REPETITIVOS. a) Contador. b) Acumulador. c) Estructura repetitiva “mientras” (while--- end).
108 108 108 108
d) Estructura repetitiva “para” (for --- end).
110
4.6. FUNCIONES DEFINADAS POR EL USUARIO. a) Estructura de una función definida por el usuario.
112 113
b) Funciones sin entrada o salida. APLICACIONES DEL CAPÍTULO IV.
114 117
CAPÍTULO V: GRÁFICOS EN MATLAB
121
5.1 GRÁFICAS 2D.BIDIMENSIONALES – a) Gráficas de funciones de la forma y = f(x).
121 122
- Gráfica de una recta de la formay=ax+b. - Gráfica de una función cuadrática de la formay=ax2(parábola). +bx+c
122 127
- Gráfica de una función cúbica de la formay=ax3+bx2+cx+d.
128
- Gráfica de funciones polinómicas de la forma y=an xn+an-1xn-1+an-2 xn-2+…+ao.
129
- Gráfica de una función racional de la forma y=1/p(x).
131
- Gráfica de una función sinusoidal de la formay=a+b.sen(cx+ɸ).
133
- Gráfica de una función por partes. b) Características especiales de la función plot.
137 139
c) Gráfica de múltiples curvas con la funciónplot.
141
M ATLAB aplicado a las ciencias de la ingeniería d) Gráfica en múltiples ventanas (subgráficas). e) Curvas en polares. f) Funciones logarítmicas. g) Funciones de gráficos especiales. 5.2 GRÁFICAS TRIDIMENSIONAL - 3D. a) Curvas en el espacio. b) Gráficas de funciones de la forma z = f(x;y).
xv 142 145 149 150 152 152 155
c) Algunas superficies conocidas en el espacio. 5.4 GRÁFICAS EN MOVIMEINTO (MOVIES).
162 165
APLICACIONES DEL CAPÍTULO V. BIBLIOGRAFÍA
166 179
xvi
M ATLAB aplicado a las ciencias de la inge niería
BIBLIOGRAFÍA
1
2
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
CAPÍTULO I: CARACTERÍSTICAS BÁSICAS DEL M ATLAB
3
CAPÍTULO I CARACTERÍSTICAS BÁSICAS DEL MATLAB 1.1 EL ESPACIO DE T RABAJO DEL M AT LAB. Usar MATLAB por primera vez es fácil, dominarlo puede tomar años. En este capítulo se introducirá al lector al ambiente de MATLAB y se le mostrará cómo efectuar cálculos matemáticos básicos. Dado que el procedimiento para instalar MATLAB depende de su sistema operativo de la computadora, se supone que el lector tiene instalado MATLAB en su computadora o que trabaja en un laboratorio de computación donde tiene instalado el MATLAB. Para iniciar MATLAB en el ambiente Windows se debe hacer doble clic en el ícono del escritorio que se muestra en la Figura 1.1, recordando al lector que la versión que estudiaremos en la presente edición es el M ATLAB R2015a
Figura 1.1. Pantalla del escritorio donde está el ícono del MATLAB. Una vez abierto el MATLAB debe salir la pantalla principal delMATLAB R2015a que se muestra en la Figura 1.2, en el cual se muestra la ventana de comando (Command Window) con el prompt del MATLAB (>>) el cual indica que el MATLAB está listo para que ingrese un comando.
4
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Figura 1.2. Pantalla principal del M ATLAB versión R2015a. La parte más importante que se muestra en la Figura 1.2 es Command el Window (Ventana de comandos), en esta ventana se puede realizar cálculos en forma similar a como lo hace en un calculadora científica. Por ejemplo para calcular una suma de 5+6 se escribe el siguiente comando en el prompt del MATLAB (>>). >> 5+6 ans = 11 También se puede hacer operaciones combinadas tales como: >> 3+4*(7-2) ans = 23 Otro ejemplo. >> cos(pi/3) ans = 0.5000
CAPÍTULO I: CARACTERÍSTICAS BÁSICAS DEL M ATLAB
5
1.2 VENTANAS DEL MATLAB. MATLAB utiliza varias ventanas de despliegue, tal como se puede observar en la Figura 1.2, la vista principal al momento de cargar el MATLAB solo muestra la Ventana de Comandos (Command Windows), sin embargo existen dos ventanas importantes para un adecuado uso del MATLAB, dichas ventanas son la Ventana del área de trabajoWorkspace ( ) y la Ventana de historia de comandos (Command history ), las cuales se activan haciendo clic en el ícono Layout del menú y luego seleccionar la opciónThree Column, luego seleccionar la opción Command History y activar la opción Docked (ver Figura 1.3).
Figura 1.3. Opciones para activar las ventanas Workspace y Command History . Luego de activar dichas ventanas, la pantalla principal se verá tal como se muestra en la Figura 1.4, en el cual se puede apreciar las tres ventanas más importantes del MATLAB.
6
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Figura 1.4. Pantalla principal del MATLAB con la Ventana de comandos, ventana de trabajo y la ventana de historia de comandos. a) Ventana de comandos (command window). Esta ventana ofrece un ambiente similar a una memoria de trabajo, en el cual se realiza las operaciones matemáticas, se almacena valores y resultados calculados en variables, se invoca a las funciones que tiene el MATLAB, etc.; esta ventana es la más importante del MATLAB y siempre debe estar visible. Como ejemplo se puede ingresar los datos que se muestran en la Figura 1.5, en el cual se almacena el valor de 12 en la variable “a”, el valor de 5 en la variable “b” y luego se calcula la suma de a+b y se almacena en la variable “c”. Si se desea limpiar la pantalla de la ventana de comandos se debe utilizar la sentencia clc . >>clc Para salir del MATLAB se debe utilizar la sentencia quit. >>quit Para hacer comentarios en MATLAB se debe utilizar el símbolo de porcentaje (%). >>X=12;
%se define la variable X con un valor de 12
>>A=[2,1,3,6,9,4];
%se def ine el array A con 6 ele ment os.
CAPÍTULO I: CARACTERÍSTICAS BÁSICAS DEL M ATLAB
7
Figura 1.5. Modo de uso de la ventana de comandos. b) Ventana del áre a de trabajo (Workspace). Esta ventana básicamente sirve para mantenernos informados sobre el valor actual que tienen las variables que se ejecutan en la ventana de comandos, en la Figura 1.6 se muestra un ejemplo de las variables “a”, “b” y “c” ejecutados cuyos valores son 12, 5 y 17 respectivamente.
Figura 1.6. Ventana del área de trabajo. Si se desea borrar alguna variable en particular se debe utilizar la sentencia clear en la ventana de comandos, por ejemplo si deseamos borrar la variable “b” se pondría: >>clear b
8
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Y si quisiéramos borrar todas las variables utilizaríamos simplemente la sentenciaclear. >>clear Para saber qué variables se han utilizado y que están guardados en la memoria se puede utilizar la sentencia who o whos. >>who c) Ventana de historia de comandos (Command history). Esta ventana registra todos los comandos que se escriben en la ventana de comandos, este registro se realiza por fechas; entonces cuando se desea volver a ejecutar alguna operación o alguna sentencia simplemente se busca en la ventana de historia de comandos y se hace doble clic y en la ventana de comandos se ejecutará la acción correspondiente. En la Figura 1.7 se muestra los comandos que se ejecutaron enla ventana de comandos que se muestra en la Figura 1.5.
Figura 1.7. Ventana de historia de comandos. 1.3 AYUDA EN LÍNEA (HELP). MATLAB dispone de una excelente sentencia de ayuda en línea, esta sentencia help es con el que se puede encontrar ayuda en línea de alguna función o sentencia que tiene el MATLAB. Existe varias formas de ingresar alhelp, pero el más recomendable es digitar la sentenciahelp seguido del comando o función sobre el cual senecesita la ayuda, por ejemplo si deseamos ayuda sobre la sentencia sqrt en la ventana de comandos se digitaría lo siguiente: >>help sqrt En ese momento saldrá la ventana que se muestra en la Figura 1.8.
CAPÍTULO I: CARACTERÍSTICAS BÁSICAS DEL M ATLAB
9
Figura 1.8. Ventana de ayuda de la sentencia sqrt. En la ventana de la Figura 1.8 se observa varias opciones de la cuales se puede resaltar que cuando se desea mayor información sobre la sentencia de ayuda se debe hacer clic en la opción reference page for sqrt, luego del cual saldrá una nueva ventana de ayuda con toda la información referente a la sentenciasqrt y de las sentencias relacionadas con esta. 1.4 ALMACENAR Y RECUPERAR DAT OS . Matlab permite guardar y cargar datos de los archivos del computador. Para guardar todas las variables actuales que se encuentran en la ventana Workspace se debe hacer clic en el ícono Save Wor kspace que se muestra en la Figura 1.9, y con la opción del ícono Im port Data se carga la s variables de un espacio de trabajo guardado previamente.
Figura 1.9. Íconos que permiten guarda y recuperar variables de trabajo.
10
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
BIBLIOGRAFÍA
11
12
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
CAPÍTULO II: OPERACIONES Y FUNCIONES BÁSICAS CON M ATLAB
13
CAPÍTULO II OPERACIONES Y FUNCIONES BÁSICAS CON MATLAB 2.1 VARIABLES EN MAT LAB. En MATLAB como en cualquier otro lenguaje de programación se utilizan variables, estas deben tener un nombre según ciertas reglas que se enumeran a continuación: * Necesariamente tienen que empezar por una letra y pueden estar seguidos de letras, dígitos y A, b1, suma, altura, suma1, suma_edad son variables o el símbolo subguión ( _ ). Por ejemplo: válidos, mientras que 1suma, 2b, suma-edad no se pueden utilizar como variables. * Las mayúsculas y minúsculas se diferencian en los nombres de variables. Por ejemploA y a son dos variables diferentes, de igual manera Suma y suma son dos variables diferentes. * Los nombres de variables no pueden contener ningún símbolo, no es válido usar los símbolos: +, -, *, /, \, >, <, @ , %, &, #, etc. * Es recomendable no usar como nombre de variables las sentencias predefinidas del MATLAB, por ejemplo no se debe usarfor, if, while, close, end , pi, sin, cos, etc. A diferencia de otros lenguajes de programación en MATLAB no es necesario declarar las base, altura y area. variables. En el siguiente ejemplo se muestra el uso de las variables >> base=12 base = 12 >> altura=5 altura = 5 >> area=base*altura area = 60 2.2 CONSTANTES EN MATLAB. El MATLAB tiene predefinido algunas constantes que es recomendable no volverlos a definir con otros valores, dichas constantes se muestran en el Cuadro 2.1.
Infinito
14
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Por ejemplo: >> pi ans = 3.1416 >> i ans = 0 + 1.0000i >> realmax ans = 1.7977e+308 Cuadro 2.1. Relación de constantes definidas en MATLAB. Constante Definición Valor ans Variable usada por defecto para almacenar el último ??? pi Razón de una circunferencia a su diámetro 3.1416 Número más pequeño, tal que cuando se le suma 1, eps 2.2204e-016 crea un número en coma flotante en el computador mayor inf infinito Magnitud nan no numérica NaN i yj 0 + 1.0000i i=j= realmin El número real positivo más pequeño que es utilizable 2.2251e-308 realmax El número real positivo más grande que es utilizable 1.7977e+308
√1
2.3 OPERACIONES CO N ESC ALARES EN MAT LAB. MATLAB, a diferencia de otros lenguajes de programación, realiza operaciones con números enteros, reales y complejos tanto con escalares como con matrices (este tema se verá más adelante), a continuación desarrollaremos las operaciones con escalares (enteros, reales y complejos). Todas las operaciones aritméticas que se realizan entre dos escalares se muestra en el Cuadro 2.2.
CAPÍTULO II: OPERACIONES Y FUNCIONES BÁSICAS CON M ATLAB
Operación aritmética
+ * /
15
Cuadro 2.2. Operaciones aritméticas con MATLAB. Sintaxis Descripción e n MATLAB a+b Suma de a y b. a-b Resta de a y b a*b Multiplicación a y b a/b División de a entre b. a\b a^b
^\
División inversa a entre ab,laesb decir Potenciación de de a elevado (ab) a\b=b/a.
En el siguiente ejemplo se muestra los resultados de las operaciones aritméticas con MATLAB. >> a=12.5678954 a= 12.5679 >> b=5.987654332 b= 5.9877 >> suma=a+b suma = 18.5555 >> resta=a-b resta = 6.5802 >> multiplicacion=a*b multiplicacion = 75.2522 >> div ision=a/b division = 2.0990 >> divinversa=a\b
16
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
divinversa = 0.4764 >> potencia=a^b potencia = 3.8195e+06 Como se dijo anteriormente, el MATLAB también trabaja con números complejos tal como se muestra a continuación. >> a=3+2i a= 3.0000 + 2.0000i >> b=5.67-3.87654i b= 5.6700 - 3.8765i >> suma=a+b suma = 8.6700 - 1.8765i >> resta=a-b resta = -2.6700 + 5.8765i >> multiplicacion=a*b multiplicacion = 24.7631 - 0.2896i >> division=a/b division = 0.1962 + 0.4869i >> divinversa=a\b divinversa = 0.7121 - 1.7669i
CAPÍTULO II: OPERACIONES Y FUNCIONES BÁSICAS CON M ATLAB
17
>> potencia=a^b potencia = -9.3838e+02 - 1.4028e+04i 2.4 VISUALIZACIÓN DE DAT OS EN LA VENTANA DE COMANDOS . Un aspecto importante a tener en cuenta en MATLAB, es el uso del punto y coma (;) al final de las sentencias que se escriben en la ventana de comandos; como se puede observar en los ejemplos anteriores no hemos usado el punto y coma, lo que significa que el resultado de una variable se muestra en pantalla mientras que si pondríamos el punto y coma, el resultado solo se podría ver en la ventana de trabajo (Workspace) en los siguientes ejemplos analizaremos ambos casos. Cuando no se usa el punto y coma. >> a=12.56 a= 12.5600 >> b=2.213 b= 2.2130 >> c=a+b c= 14.7730 >> d=a-b d= 10.3470 Cuando se usa el punto y coma. >> a=12.56; >> b=2.213;
18
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
>> c=a+b; >> d=a-b; >> suma=a+c; >> q=a*b; 2.5 FORMAT OS D E SALIDA EN MATLAB. Todos los cálculos que se realizan en MATLAB se hacen en doble presión, sin embargo por defecto sólo se muestran los resultados con 4 cifras decimales, pero cuando se desea ver los resultados con dos decimales o con 15 decimales se utiliza la sentenciaformat, cuyos formatos de salida se muestran en el Cuadro 2.3 para el valor de pi. Cuadro 2.3. Valores de la constante pi en varios formatos que acepta el MATLAB.
Tipo Re s ultado format short Formato coma fija con 4 dígitos después de la coma (es el formato que viene por defecto). format long Formato coma fija con 15 dígitos después de la coma. format short e Formato coma flotante con 4 dígitos después
Eje mplo: >> pi 3.1416 3.14159265358979 3.1416e+000
de la coma en formato científico.
format long e Formato coma flotante con 15 dígitos
3.141592653589793e+000 después de al coma en formato científico. format short g La mejor entre comafija o flotante con 4 3.1416 dígitos después de la coma. 3.14159265358979 format long g La mejor entre coma fija o flotante con 15 dígitos después de la coma 3.14 format bank Formato coma fija con 2 dígitos después de la coma Hexadecim format al hex 400921fb54442d18 format Aproxirat mación racional 355/113
En los siguientes ejemplos podemos darnos cuenta sobre el uso de la sentenciaformat. >> format long >> a=12.5678954 a= 12.567895399999999 >> b=5.987654332 b=
CAPÍTULO II: OPERACIONES Y FUNCIONES BÁSICAS CON M ATLAB 5.987654332000000 >> suma=a+b suma = 18.555549731999999 >> resta=a-b resta = 6.580241067999999 >> multiplicacion=a*b multiplicacion = 75.252213335932865 >> div ision=a/b division = 2.098968093871588 >> divinversa=a\ b divinversa = 0.476424583546423 >> potencia=a^b potencia = 3.819479772876211e+06 Y si ponemos format bank, sería: >> format bank >> a=12.5678954 a= 12.57 >> b=5.987654332 b= 5.99 >> suma=a+b
19
20
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
suma = 18.56 >> resta=a-b resta = 6.58 >> multiplicacion=a*b multiplicacion = 75.25 >> division=a/b division = 2.10 >> divinversa=a\b divinversa = 0.48 >> potencia=a^b potencia = 3819479.77 Para regresar a su estado por defecto solo se debe utilizar la sentenciaformat. >>format
%retorna los valores de salida por defecto.
2.6 USO DE PARÉNTESIS Y PRECEDENCIA DE LAS OPERACIONES EN MATLAB. Para hacer cálculos aritméticos en MATLAB se debe tener en cuenta el uso correcto de los paréntesis y la precedencia de las operaciones aritméticas. Las operaciones producto“*” y el cociente“/” tienen precedencia sobre la suma“+” y la diferencia “-“ , tal como podemos ver en los siguientes ejemplos, además utilizamos paréntesis para cambiar el orden en el que se efectúan las operaciones: >> 2*3+4
CAPÍTULO II: OPERACIONES Y FUNCIONES BÁSICAS CON M ATLAB
21
ans = 10 >> 2*(3+4) ans = 14 >> 2/3+4 ans = 4.6667 >> 2/(3+4) ans = 0.2857 Hay que tener cuidado a la hora de realizar las operaciones, ya que a veces podemos obtener un resultado distinto al esperado, al no estar acostumbradosa escribir las operaciones en una sola línea y no utilizar de modo adecuado los paréntesis. 2.7 FUNCIONES INTERNAS O PREDEFINICAS EN MATLAB. La versión R2015a del MATLAB posee un gran número de funciones implementadas, a las cuales se invoca escribiendo el nombre de la función junto con el parámetro o parámetros necesarios.A continuación desarrollaremos solo las principales funciones predefinidas en MATLAB, sin embargo si el lector quiere saber más sobre alguna función en especial, lo único que tiene que hacer es usar la opciónhelp nombre de la función, por ejemplo: >> help sqrt % se mostrará toda la ayuda referente a la función sqrt (ver Figura 1.8). Cuadro 2.4. Funciones aritméticas. Función ceil(x) fix(x) floor(x) mod(x,y) rem(x,y) round(x) rand()
Descripción Redondea al entero más cercano hacia infinito positivo del valor de x. Redondea al entero más cercano hacia cero del valor de x. Redondea al entero más cercano hacia menos infinito del valor de x. Calcula el residuo de una división de x/y Calcula el residuo de una división de x/y Redondea al entero más cercano de x. Genera un número aleatorio entre 0 y 1.
22
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
A continuación se desarrolla algunas formas de utilizar las funciones aritméticas. >> ce il(12.4) ans = 13 >> ceil(-2.3) ans = -2 >> ce il(20/6) ans = 4 >> ceil(2.6+3.2i) ans = 3.0000 + 4.0000i >> fix(3.1) ans = 3 >> fix(3.8) ans = 3 >> fix(-3.8) ans = -3 >> fix(2.7-2.6i) ans = 2.0000 - 2.0000i >> floor(6.7) ans =
CAPÍTULO II: OPERACIONES Y FUNCIONES BÁSICAS CON M ATLAB
6 >> floor(-6.7) ans = -7 >> floor(20/6) ans = 3 >> floor(2.4-9.6i) ans = 2.0000 -10.0000i >> mod(20,6) ans = 2 >> mod(49,7) ans = 0 >> rem(20,6) ans = 2 >> rem(49,7) ans = 0 >> rand() ans = 0.9649 >> rand()
23
24
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Función sin(x) sind(x) asin(x) asind(x) sinh(x)
Cuadro 2.5. Funciones trigonométricas. Descripción Calcula el valor del seno de x expresado en radianes. Calcula el valor del seno de x expresado en grados sexagesimales. Calcula el valor en radianes del arco seno de x. Calcula el valor en grados sexagesimales del arco seno de x. Calcula el seno hiperbólico de x en radianes.
asinh(x) cos(x) cosd(x) acos(x) acosd(x) cosh(x)
Calcula el valor en radianes del arco seno hiperbólico de x Calcula el valor del coseno de x expresado en radianes. Calcula el valor del coseno de x expresado en grados sexagesimales. Calcula el valor en radianes del arco coseno de x. Calcula el valor en grados sexagesimales del arco coseno de x. Calcula el coseno hiperbólico de x en radianes.
acosh(x) tan(x) tand(x) atan(x) atand(x) atan2(x,y) atan2d(x,y) tanh(x)
Calcula el valor en radianes del arco coseno hiperbólico de x. Calcula el valor de la tangente de x expresado en radianes. Calcula el valor de la tangente de x expresado en grados sexagesimales. Calcula el valor en radianes del arco tangente de x. Calcula el valor en grados sexagesimales del arco tangente de x. Calcula el valor en radianes del arco tangente de (x,y). Calcula el valor en grados sexagesimales del arco tangente de (x,y). Calcula el tangente hiperbólico de x en radianes.
atanh(x) cot(x) cotd(x) acot(x) acotd(x) coth(x)
sinh(x)=(e x-e-x)/2
cosh(x)=(e x+e-x)/2
tanh(x)=sinh(x)/cosh(x)
Calcula el valor en radianes del arco tangente hiperbólico de x. Calcula el valor de la cotangente de x expresado en radianes. Calcula el valor de la cotangente de x expresado en grados sexagesimales. Calcula el valor en radianes del arco cotangente de x. Calcula el valor en grados sexagesimales del arco cotangente de x. Calcula el cotangente hiperbólico de x en radianes.
coth(x)=cosh(x)/sinh(x)
acoth(x) sec(x) secd(x) asec(x) asecd(x) sech(x)
Calcula el valor en radianes del arco cotangente hiperbólico de x. Calcula el valor de la secante de x expresado en radianes. Calcula el valor de la secante de x expresado en grados sexagesimales. Calcula el valor en radianes del arco secante de x. Calcula el valor en grados sexagesimales del arco secante de x. Calcula el secante hiperbólico de x en radianes.
asech(x) csc(x) cscd(x) acsc(x) acscd(x) csch(x)
Calcula el valor en radianes del arco secante hiperbólico de x. Calcula el valor de la cosecante de x expresado en radianes. Calcula el valor de la cosecante de x expresado en grados sexagesimales. Calcula el valor en radianes del arco cosecante de x. Calcula el valor en grados sexagesimales del arco cosecante de x. Calcula el cosecante hiperbólico de x en radianes.
acsch(x)
Calcula el valor en radianes del arco cosecante hiperbólico de x.
sech(x)=1/cosh(x)
csch(x)=1/sinh(x)
CAPÍTULO II: OPERACIONES Y FUNCIONES BÁSICAS CON M ATLAB
A continuación se desarrolla algunas formas de utilizar las funciones trigonométricas. >> sin(pi/6) %calcula el seno de pi/6 radianes ans = 0.5000 >> sind(30) ans = 0.5000 >> tand(90) ans = Inf >> cotd(90) ans = 0 >> asin(0.5) ans = 0.5236 >> asind(0.5) ans = 30.0000 >> sinh(10) ans = 1.1013e+04 >> cosh(-2.4) ans = 5.5569 >> secd(60) ans =
25
26
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
2.0000 >> sin(3-2i) ans = 0.5309 + 3.5906i Cuadro 2.6. Funciones logarítmicas y exponenciales. Función Descripción exp(x) Calcula el valor de ex. expm1(x) Calcula el valor de exp(x)-1. log(x) Calcula del logaritmo natural de x. log10(x) Calcula el logaritmo en base 10 de x log1p(x) Calcula el valor de log(1+x). log2(x) Calcula el logaritmo en base 2 de x. nthroot(x,n) Calcula la n-ésima raíz real de x. sqrt(x) Calcula la raíz cuadrada de x. A continuación se desarrolla algunas formas de utilizar las funciones logarítmicas y exponenciales. >> e xp(2.65) ans = 14.1540 >> exp(2.65-2.1i) ans = -7.1456 -12.2179i >> log10(12.765) ans = 1.1060 >> nthroot(32,5) ans = 2
CAPÍTULO II: OPERACIONES Y FUNCIONES BÁSICAS CON M ATLAB
27
>> sqrt(25.78) ans = 5.0774 >> sqrt(2-2i) ans = 1.5538 - 0.6436i
Función abs(x) angle(x) complex(a,b) conj(x) imag(x) real(x)
Cuadro 2.7. Funciones de números complejos. Descripción Calcula el valor de valor absoluto o módulo de x=a+bi. Calcula el ángulo de fase de x=a+bi en radianes. Crea un número complejo de la forma a+bi. Calcula la conjugada de x=a+bi. Extrae la parte imaginaria de x=a+bi. Extrae la parte real de x=a+bi.
A continuación se desarrolla algunas formas de utilizar las funciones de números complejos. >> A=complex(3,4) A= 3.0000 + 4.0000i >> modulo=abs(A) modulo = 5 >> angulo=angle(A) angulo = 0.9273 >> C=conj(A) C=
28
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
3.0000 - 4.0000i >> i=imag(A) i= 4 >> r =re al(A) r= 3 Cuadro 2.8. Funciones de matemática discreta. Descripción Calcula los factores primos de x. Calcula el factorial de x. Calcula el máximo común divisor de a y b. Calcula el mínimo común múltiplo. Determina si x es primo o no. Devuelve cero si x no es primo y uno si x es primo nchoosek(n,k) Calcula el número de combinaciones de n tomados de k en k. perms(n,k) Calcula el número de permutaciones de n.. primes(x) Calcula todos los número primos menores o iguales a x. Función factor(x) factorial(x) gcd(a,b) lcm(a,b) isprime(x)
A continuación se desarrolla algunas formas de utilizar las funciones de matemática discreta. >> factor(24) ans = 2
2
2
>> factorial(5) ans = 120 >> gcd(18,12) ans =
3
CAPÍTULO II: OPERACIONES Y FUNCIONES BÁSICAS CON M ATLAB
6 >> lcm(18,12) ans = 36 >> isprime(11) ans = 1 >> isprime(12) ans = 0 >> nchoosek(5,3) ans = 10 >> pe rms(5) ans = 5 >> primes(30) ans = 2
3
5
7 11
13
17 19 23
29
Cuadro 2.9. Funciones de conversión de coordenadas. Función Descripción cart2pol(x,y) Convierte coordenadas cartesianas a coordenadas polares. cart2pol(x,y,z) Convierte coordenadas cartesianas a coordenadas cilíndricas. pol2cart(teta,r) Convierte coordenadas polares a coordenadas cartesianas. pol2cart(teta,r,z) Convierte coordenadas cilíndricas a coordenadas cartesianas. cart2sph(x,y,z) Convierte coordenadas cartesianas a coordenadas esféricas. sph2cart(teta,phi,r) Convierte coordenadas esféricas a coordenadas cartesianas.
29
30
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
A continuación se desarrolla algunas formas de utilizar las funciones de conversión de coordenadas. >> [teta,r]=cart2pol(3,4)
% dev uelv e teta en radianes.
teta = 0.9273 r= 5 [tet a,r,z]=cart2pol(3,4,7)
% dev uelv e teta en radianes.
teta = 0.9273 r= 5 z= 7 >> [x,y]=pol2cart(0.9273,5) x= 3.0000 y= 4.0000 >> [x,y,z]=pol2cart(0.9273,5,7) x= 3.0000 y=
CAPÍTULO II: OPERACIONES Y FUNCIONES BÁSICAS CON M ATLAB
31
4.0000 z= 7 >> [teta,phi,r]=cart2sph(3,5,7)
% dev uelv e teta y phi en radianes.
teta = 1.0304 phi = 0.8763 r= 9.1104 >> [x,y,z]=sph2cart(1.0304,0.8763,9.1104) x= 3 y= 5 z= 7 Cuadro 2.10. Funciones de cambios de base numéricos y de cadena. Función Descripción bin2dec() Convierte una cadena en binario a un número decimal entero dec2bin() base2dec dec2base str2double num2str()
Convierte un número decimal entero a una cadena en binario. Convierte una cadena en base B a número decimal entero. Convierte un número decimal entero a una cadena en base B. Convierte una cadena de números a un número de doble precisión. Convierte un número a una cadena.
A continuación se desarrolla algunas formas de utilizar las funciones de cambios de base numéricos y de cadena.
32
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
>> bin='1001011' %númer o en base almacenado como cadena. bin = 1001011 >> dec=bin2dec(bin) %convierte la cadena en binario a número decimal. dec = 75 >> bin1=dec2bin(dec) %convie rte número decimal a binario tipo cadena. bin1 = 1001011 >> b6='40521' %núme ro en base 6 almacenado como cadena. b6 = 40521 >> dec1=base2de c(b6,6) %Convierte la cadena en base 6 a base 10. dec1 = 5377 >> b1=dec2base(de c1,6) %convierte un número en base 10 a cadena en base 6. b1 = 40521 >> b2=dec2base(de c1,8) %convierte un número en base 10 a cadena en base 8. b2 = 12401 >> cad='425.78' cad =
%númer o almacenado como cadena.
CAPÍTULO II: OPERACIONES Y FUNCIONES BÁSICAS CON M ATLAB
33
425.78 >> n=str2double(cad) %convie rte una cadena de dígitos a número decimal. n= 425.7800 >> cad1=num2str(n) %convierte un número decimal a una cadena de dígitos. cad1 = 425.78
34
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
APLICACIONES DEL CAPÍTULO II. 2.1. Crear la variable r=pi/6 radianes y luego convertir a grados sexagesimales, usar la siguiente fórmula:
Solución en MATLAB. >> r=pi/6; >> S=180*r/pi S= 30.0000 Por lo tanto diremos que pi/6 radianes es equivalente a 30° sexagesimales. 2.2. Calcular el volumen del cilindro que se muestra en la siguiente figura, sabiendo que el radio es de 50 cm y la altura es de 2 m.
Figura 2.1 Solución en MATLAB. Antes de solucionar se debe tener cuidado con las unidades, en este ejemplo r=50 cm y h=2 m, por lo tanto se debe uniformizar de la siguiente manera: r=50 cm =0,5 m y h=2 m, entonces en MATLAB sería. >> r=0.5;
CAPÍTULO II: OPERACIONES Y FUNCIONES BÁSICAS CON M ATLAB
35
>> h=2; >> V=pi*r^2*h V= 1.5708 Por lo tanto diremos que el volumen del cilindro es 1,57083.m 2.3. Calcular el valor de la componente vertical (Ay) y la componente horizontal (Ax) del vector A cuyo módulo es 12 newton que se muestra en la Figura 2.2, sabiendo que =35°.
Figura 2.2 Solución en MATLAB. >> A=12; >> alfa=35; >> Ax=A*cosd(alfa) Ax = 9.8298 >> Ay=A*sind(alfa) Ay = 6.8829 Por lo tanto diremos que la componente Ax=9,8298 N y Ay=6,8829 N.
36
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
2.4. Determinar las tensiones sobre las cuerdas AC y BC que se muestra en la figura; sabiendo que =25°, =55° y el peso del bloque es de 50 N.
Solución matemática.
∑0 → .cos∝ .cos
(1)
∑ 0 → .s en ∝ .sen
. .+ .
(2)
Solución en MATLAB. >> clc >> alfa=25; >> be ta=55; >> W=50; >> TA=W*cosd(beta)/(sind(alfa)*cosd(beta)+cosd(alfa)*sind(beta)) %ecuación 2. TA = 29.1212 >> TB= TA*cosd(alfa)/cosd(beta)
%ecuación 1.
TB = 46.0145 Por lo tanto diremos que la tensión en A esAT =29,1212 N y la tensión en B es BT=46,0145 N.
CAPÍTULO II: OPERACIONES Y FUNCIONES BÁSICAS CON M ATLAB
37
2.5. Se tiene una temperatura de 20 °C, convertir dicha temperatura a las escalas en grados Kelvin (°K), Fahrenheit (°F) y Rankine (°R) usar la siguiente fórmula:
Solución en MATLAB. >> clc >> C=20; >> K=C+273 K= 293 >> F=9*C/5+32 F= 68 >> R=9*C/5+492 R= 528 Por lo tanto diremos: 20 °C = 293 °K = 68 °F = 528 °R. 2.6. Considere el aparato de joule que se muestra en la figura. La masa de cada uno de los dos bloques es de 1,5 kg y el tanque aislado se llena con 200 g de agua. Determina el aumento de la temperatura del agua después que los bloques caen una altura de 3 m.
38
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Solución: El recipiente está aislado térmicamente, por lo que no fluye energía por calor, es decir:
0 ∆ 0 2ℎ El trabajo por la caída de los bloques es igual al trabajo realizado sobre el agua en el recipiente por las cuchillas giratorias. Este trabajo se traduce en un aumento de la energía interna del agua.
2ℎ∆ ..∆ ∆ 2ℎ . Donde C es el calor específico del agua es igual 4186 a J/(kg.°C) Solución en MATLAB. clc >> m=1.5; %masa de cada bloque >> g=9.8; %cte. aceleación de la grave dad >> h=3; %altura que cae cada bloque >> agua=200/1000; %masa de agua en kg. >> m C=4186; %cte. >> T= 2*m*g*h/(magua*C) T= 0.1054 Por lo tanto diremos que la temperatura es de 0,1054 °C. -6 C y q2=+2,5x10-6 C que 2.7. Determinar la fuerza que actúa sobre las cargas eléctricas q1=+1x10 se encuentran en reposo y en el vacío a una distancia de 5 cm.
Donde k=9x109 N.m2/C2 Constante de Coulomb enel vacío.
CAPÍTULO II: OPERACIONES Y FUNCIONES BÁSICAS CON M ATLAB
39
Solución en MATLAB. >> clc >> k=9e9; %cte de Coulomb >> q1=1e -6; >> q2=2.5e-6; >> r=5/100; %distancia en met ros. >> F=k*q1*q2/r^2 F= 9 Por lo tanto diremos que la fuerza de repulsión es de 9 N. 2.8. Determinar la altura “h” de la torre de alta tensión y el ángulo “θ” que se muestra en la siguiente figura.
Solución matemática. Para hallar la altura en este caso se aplica la siguiente fórmula:
y el ángulo se calcula con:
ℎ 2. atan ℎ
40
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Solución en MATLAB. >> d1=50; >> d2=200; >> h=sqrt(d2^2-2*d1*d2) h= 141.4214 >> the ta=atand(h/d2) theta = 35.2644 Por lo tanto diremos que la altura “h” de la torre es de 141,4214 m y el ángulo =35,2644°. θ 2.9. Determinar el área del triángulo que se muestra en la siguiente figura sabiendo que los lados a, b y c miden 10, 12 y 15 cm respectivamente.
Solución matemática. - Cálculo del semiperímetro:
y el área sería:
2 á
Solución en MATLAB. >> a=10; >> b=12; >> c=15; >> p=(a+b+c)/2; >> area=sqrt(p*(p-a)*(p-b)*(p-c))
CAPÍTULO II: OPERACIONES Y FUNCIONES BÁSICAS CON M ATLAB
41
area = 59.8117 2. Por lo tanto diremos que el área del triángulo es 59,8117 cm 10. 2.10. Determinar el coeficiente del octavo término del desarrollo del siguiente binomio (2x+3y)
Solución matemática. n Para el coeficiente se utilizahallar la siguiente fórmula:del término k+1 del desarrollo de un binomio de la forma (ax+by)
Solución en MATLAB.
+ − .
>> a=2; >> b=3; >> n=10; >> k=8-1; >> T8=nchoosek(n,k)*a^(n-k)*b^k T8 = 2099520 Por lo tanto diremos que el coeficiente del octavo término es 2 099 520. 2.11. Determinar las raíces de unaecuación cuadrática de la forma Ax2+Bx+C=0 cuando A=2, B=3 y C=-12, para el cual se utiliza la siguiente fórmula:
Solución en MATLAB.
√2 4 √2 4
>> clc >> A=2; >> B= 3; >> C =-12; >> x1=(-B+sqrt(B^2-4*A*C))/(2*A) x1 = 1.8117 >> x2=(-B-sqrt(B^2-4*A*C))/(2*A)
42
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
x2 = -3.3117 Por lo tanto diremos que x1=1,8117 y x2=-3,3117. Este mismo problema podemos calcular para A=2, B=5 y C=25; >> clc >> A=2; >> B= 5; >> C=25; x1=(-B+sqrt(B^2-4*A*C))/(2*A) x1 = -1.2500 + 3.3072i >> x2=(-B-sqrt(B^2-4*A*C))/(2*A) x2 = -1.2500 - 3.3072i En este caso se observa que los resultados son número complejos, es decir x1=-1,25+3,3072i y x2=-1,25-3,3072i. 2.12. Determinar la altura “h” de la figura que se muestra sabiendo que θ=60°, Vo=60 m/s y dx=400 m.
Solución matemática.
.cos ∗ → .cos
CAPÍTULO II: OPERACIONES Y FUNCIONES BÁSICAS CON M ATLAB
Solución en MATLAB.
43
ℎ .sen.
>> clc >> v o=60; >> the ta=60; >> dx=400; >> t=dx/(vo*cosd(theta)); >> h=vo*sind(theta)*t-9.81*t^2/2 h= -179.1797 Por lo tanto diremos que h=-179.1797 m (negativo porque está debajo del eje x de referencia). 2.13. El pez arquero caza insectos lanzándoles un chorro de agua (ver siguiente figura). Determinar la velocidad inicial (Vo) del chorro de agua y la distancia horizontal (d) para que el pez pueda dar sobre un escarabajo que se encuentra a una altura h=1,2 m sobre la superficie del agua, además el ángulo de disparo es 70°.
Solución matemática.
ℎ.2 → = 2ℎ .2 2 .2 → 2
44
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Solución en MATLAB. >> clc >> h=1.2; >> the ta=70; >> v o=sqrt(2*h*9.81)/sind(theta) vo = 5.1636 >> d=vo^2*sind(2*theta)/(2*9.81) d= 0.8735 Por lo tanto diremos que para que el pez de en el escarabajo debe estar ubicado a una distancia de 0,8735 m y enviar con una velocidad inicial de 5,1636 m/s.
BIBLIOGRAFÍA
45
46
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
47
CAPÍTULO III ARREGLOS – VECTORES Y MATRICES CON MATLAB Un arreglo es una estructura que MATLAB utiliza para almacenar y manipular datos. Un arreglo es una lista de números dispuestosen filas y/o columnas, si están dispuestos en filas se llaman arreglos unidimensionales (lista o vector) y si están dispuestos en filas y columnas se llaman arreglos bidimensionales (matrices) y si se tiene más de dos dimensiones se llama hipermatrices. 3.1 ARREGLO UNIDIMENSIONAL (LISTA O VECTOR). Un arreglo unidimensional en MATLAB es un conjunto de elementos dispuestos uno a continuación de otros, donde cada elemento conserva su mismo espacio y tienen su propio ní dice de identificación que viene a ser la numeración consecutiva de cada espacio que ocupa un dato en el arreglo, esta numeración en MATLAB empieza en uno (1) a diferencia de otros lenguajes de programación como el C++ que empieza en cero (0). En la Figura 3.1 se ilustra el concepto de arreglo unidimensional.
Figura 3.1. Representación gráfica de un arreglo unidimensional. Para crear una lista o vector en MATLAB se debe ingresar los datos separados por espacios en blanco o separados por comas y todo ello debe estar entre corchetes. >> A=[10 12 6 8 -1 8.9] A= 10.0000 12.0000 6.0000 8.0000 -1.0000 8.9000 O también se puede ingresar separados por comas (,). >> A=[10,12,6,8,-1,8.9] A= 10.0000 12.0000 6.0000 8.0000 -1.0000 8.9000 También podría ser combinación de comas (,) o espacios en blanco. >> A=[10,12 6 8,-1,8.9]
48
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
A= 10.0000 12.0000 6.0000 8.0000 -1.0000 8.9000 Para acceder a los elementos individuales de una lista o vector A se hace utilizando los subíndices entre paréntesis, así A(n) sería el n-ésimo elemento del vector X y siqueremos acceder al último elemento podemos indicarlo usandoen d como subíndice. >> A(5)
% quinto ele mento del ve ctor A.
ans = -1 >> A(2) ans = 12 >> A(e nd) %último elementos del ve ctor A ans = 8.9000 Un vector puede cambiar su tamaño, si tiene n elementos, basta añadir nuevos valores para las posiciones n+1, n+2 y así sucesivamente. Si es necesario MATLAB asigna ceros a los elementos entre el último del vector srcinal y el añadido. Por ejemplo el vector A tiene 6 elementos pero se pueden añadir elementos de la siguiente manera: >> A(7)=4
%se agrega un séptimo ele mento al ve ctor A con un valor de 4.
A= 10.0000 12.0000 6.0000 8.0000 -1.0000 8.9000 4.0000 >> A(10)=2 %llena con ceros las posiciones 8 y9 A= 10.0000 12.0000 6.0000 8.0000 -1.0000 8.9000 4.0000
0
0 2.0000
También es posible añadir nuevos elementos a un vector ya existente a partir de otros vectores.
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
49
>> x=[3 -2 6 -7 4 5]; >> y=[1 2 3 4]; >> z1=[x,y] %une los ve ctores x e y para formar z1 z1 = 3
-2
6
-7
>> z2=[x(1),y,x(4)]
4
5
1
2
3
4
%une el ele mento 1 de x con el vector y más el ele mento 4 de x para formar z2.
z2 = 3
1
2
3
4 -7
Para acceder a un bloque de elementos a la vez, se usa la notación de dos puntos (:), así x(m:n) nos muestra desde el m-ésimo hasta el n-ésimo elemento del vector x. >> x=[3 -2 6 -7 4 5]; >> x(2:5) %devue lve desde el elemento 2 hasta el elemento 5 del vector x ans = -2
6
-7
4
También es posible eliminar elementos de un vector existente mediante la asignación del vacío [] al elemento o rango de elementos que se deseen eliminar. >> x=[3 -2 6 -7 4 5]; >> x(2)=[ ] % se elimina el segundo ele mento del vector x x= 3
6
-7
4
5
>> x(2:4)=[ ] % se elimina los elementos del 2 al 4 del v ector x x= 3
5
Si introducimos un número entre el primero y el segundo también separado por dos puntos (:) se mostrarán los elementos del primero al último indicado, incrementados según el número que aparece en el centro (o decrementados si el número esnegativo). >> x=[3 -2 6 -7 4 5 -8 -3 2];
50
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
>> x(2:2:6) % devuelve el segundo, cuarto y sexto elemento del vector x ans = -2
-7
5
Otra forma de obtener un conjunto concreto de elementos del vector es indicando entre corchetes [] las posiciones de los elementos que queremos obtener poniendo paréntesis fuera de los corchetes. >> x=[3 -2 6 -7 4 5 -8 -3 2]; >> x([3 5 1 6]) % devue lve los elementos 3, 5, 1 y 6 del v ector x ans = 6
4
3
5
a) Formas abre viadas de construir un vector. A continuación se da algunas formas abreviadas de construir un vector, entonces a parte de definir un vector introduciendo cada uno de sus elementos, también podemos crearlo haciendo uso de las siguientes sentencias: (a:b) crea un vector que comienza en el valora y acaba en el valorb aumentando de 1 en 1. >> x=(1:7) % crea el ve ctor x que comienza e n 1 aumenta de 1 en 1 y acaba en 7 x= 1
2
3
4
5
7
8
9
6
7
>> y=(5:9) y= 5
6
(a:c:b) crea un vector que comienza en el valor a y acaba en el valorb aumentando dec en c. >> x=(1:3:10) x= 1
4
7
10
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
51
>> y=(2:4:11) y= 2
6 10
>> z=(50:-7:1) z= 50 43 36
29 22 15
8
1
linspace (a,b) genera un vector linealmente espaciado entre los valores a y b con 100 elementos. >> x=linspace(-5,5) %genera e l vector x con 100 elementos desde -5 hasta 5 x= Columns 1 through 10 -5.0000 -4.8990 -4.7980 -4.6970 -4.5960 -4.4949 -4.3939 -4.2929 -4.1919 -4.0909 Columns 11 through 20 -3.9899 -3.8889 -3.7879 -3.6869 -3.5859 -3.4848 -3.3838 -3.2828 -3.1818 -3.0808 Columns 21 through 30 -2.9798 -2.8788 -2.7778 -2.6768 -2.5758 -2.4747 -2.3737 -2.2727 -2.1717 -2.0707 Columns 31 through 40 -1.9697 -1.8687 -1.7677 -1.6667 -1.5657 -1.4646 -1.3636 -1.2626 -1.1616 -1.0606 Columns 41 through 50 -0.9596 -0.8586 -0.7576 -0.6566 -0.5556 -0.4545 -0.3535 -0.2525 -0.1515 -0.0505 Columns 51 through 60 0.0505 0.1515 0.2525 0.3535 0.4545 0.5556 0.6566 0.7576 0.8586 0.9596 Columns 61 through 70 1.0606 1.1616 1.2626 1.3636 1.4646 1.5657 1.6667 1.7677 1.8687 1.9697
52
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Columns 71 through 80 2.0707 2.1717 2.2727 2.3737 2.4747 2.5758 2.6768 2.7778 2.8788 2.9798 Columns 81 through 90 3.0808 3.1818 3.2828 3.3838 3.4848 3.5859 3.6869 3.7879 3.8889 3.9899 Columns 91 through 100 4.0909 4.1919 4.2929 4.3939 4.4949 4.5960 4.6970 4.7980 4.8990 5.0000
linspace (a,b,c) genera un vector linealmente espaciado entre los valores a y b con c elementos. >> y=linspace(-5,5,20) %genera el v ector y con 20 elementos desde -5 hasta 5 y= Columns 1 through 10 -5.0000 -4.4737 -3.9474 -3.4211 -2.8947 -2.3684 -1.8421 -1.3158 -0.7895 -0.2632 Columns 11 through 20 0.2632 0.7895 1.3158 1.8421 2.3684 2.8947 3.4211 3.9474 4.4737 5.0000 logspace (a,b) genera un vector logarítmicamente espaciado entre los valores 10^a y 10^b con 50 elementos. >> x=logspace(0.2,4) x= 1.0e+04 * Columns 1 through 10 0.0002 0.0002 0.0002 0.0003 0.0003 0.0004 0.0005 0.0006 0.0007 0.0008 Columns 11 through 20 0.0009 0.0011 0.0014 0.0016 0.0019 0.0023 0.0028 0.0033 0.0039 0.0047 Columns 21 through 30
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
53
0.0056 0.0067 0.0081 0.0096 0.0115 0.0138 0.0165 0.0197 0.0235 0.0281 Columns 31 through 40 0.0336 0.0402 0.0480 0.0574 0.0687 0.0821 0.0981 0.1173 0.1403 0.1677 Columns 41 through 50 0.2005 0.2397 0.2865 0.3425 0.4095 0.4895 0.5853 0.6997 0.8365 1.0000 logspace (a,b,c)genera un vector logarítmicamente espaciado entre los valores 10^a y 10^b con c elementos. >> x=logspace(0.2,4,10) x= 1.0e+04 * 0.0002 0.0004 0.0011 0.0029 0.0077 0.0205 0.0541 0.1431 0.3782 1.0000 b) Ope raciones aritméticas con vectore s. En el Cuadro 3.1 se muestra todas las operaciones aritmética que se pueden hacer con vectores. Cuadro 3.1. Operaciones aritméticas con vectores en MATLAB. Sintaxis Descripción en MAT LAB x+k Suma a cada elemento del vector x el escalar k. x-k Resta a cada elemento del vector x el escalar k. k*x Multiplica a cada elemento del vector x el escalar k. x/k Divide a cada elemento del vector x el escalar k. k.^x Potenciación del escalar k a cada elemento del vector x. x.^k Potenciación de cada elemento del vector x elevado a la k. x+y Suma de los vectores x e y con el mismo número de elementos. x-y Resta de los vectores x e y con el mismo número de elementos. x.*y Multiplicación elemento a elemento de los vectores x e y. x./y División elemento a elemento. x.^y Potenciación elemento a elemento A continuación desarrollaremos algunos ejemplos de operaciones aritméticas con vectores y escalar en MATLAB. >> x=[3,-2,2,5,-1,4]
54
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
x= 3
-2
2
5
9
12
-1
4
>> z1=x+7 z1 = 10
5
6
11
>> z2=2*x z2 = 6 -4
4 10 -2
8
>> z3=x.^2 z3 = 9
4
4
25
1
16
A continuación desarrollaremos algunos ejemplos de operaciones aritméticas entre vectores en MATLAB. >> x=[3,-2,2,5,-1,4] x= 3
-2
2
5
-1
4
3
4
5
6
5
9
4
10
>> y=(1:6) y= 1
2
>> z 1=x+y z1 = 4
0
>> z2=x-y
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
55
z2 = 2
-4 -1
1
-6 -2
>> z3=x.*y z3 = 3
-4
6
20 -5
24
>> z4=x./y z4 = 3.0000 -1.0000 0.6667 1.2500 -0.2000 0.6667 >> z5=x.^y z5 = 3
4
8
625
-1
4096
A continuación desarrollaremos ejemplos de aplicaciones aritméticas con vectores de número complejos. >> x=[2-i,1+2i,4+2i,-2+i] x= 2.0000 - 1.0000i 1.0000 + 2.0000i 4.0000 + 2.0000i -2.0000 + 1.0000i >> y=[i,-1+3i,2,2+2i] y= 0.0000 + 1.0000i -1.0000 + 3.0000i 2.0000 + 0.0000i 2.0000 + 2.0000i >> x=[2-i,1+2i,4+2i,-2+i] x= 2.0000 - 1.0000i 1.0000 + 2.0000i 4.0000 + 2.0000i -2.0000 + 1.0000i >> y=[i,-1+3i,2,2+2i]
56
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
y= 0.0000 + 1.0000i -1.0000 + 3.0000i 2.0000 + 0.0000i 2.0000 + 2.0000i >> z1=3+2i+x z1 = 5.0000 + 1.0000i 4.0000 + 4.0000i 7.0000 + 4.0000i 1.0000 + 3.0000i >> z2=x-2 z2 = 0.0000 - 1.0000i -1.0000 + 2.0000i 2.0000 + 2.0000i -4.0000 + 1.0000i >> z3=2*x z3 = 4.0000 - 2.0000i 2.0000 + 4.0000i 8.0000 + 4.0000i -4.0000 + 2.0000i >> z 4=x+y z4 = 2.0000 + 0.0000i 0.0000 + 5.0000i 6.0000 + 2.0000i 0.0000 + 3.0000i >> z5=x.*y z5 = 1.0000 + 2.0000i -7.0000 + 1.0000i 8.0000 + 4.0000i -6.0000 - 2.0000i >> z5=x./y z5 = -1.0000 - 2.0000i 0.5000 - 0.5000i 2.0000 + 1.0000i -0.2500 + 0.7500i >> z6=x.^y z6 = 1.1023 + 1.1457i 0.0042 + 0.0156i 12.0000 +16.0000i 0.0183 + 0.0149i
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
57
c) Funciones que tr abajan con vectore s. En el Cuadro 3.2 se muestra las funciones más importantes que trabajan con vectores.
Función length(x) sum(x)
Cuadro 3.2. Funciones relacionados con vectores en MATLAB. Descripción Determina el número de elementos del vector x. Calcula la suma de todos los elementos del vector x.
prod(x) unión(x,y) intersect(x,y) setdiff(x,y) sort(x) max(x) min(x) mean(x) median(x) mode(x) std(x) var(x) cross(x,y) dot(x,y)
Calcula el producto de los todos los elementos Determina la unión de conjuntos x e y. del vector x. Determina la intersección de los conjuntos x e y. Determina la diferencia de los conjuntos x e y. Ordena de menor a mayor los elementos del vector x Determina el mayor elemento del vector x. Determina el menor elemento del vector x. Determina el promedio de los elementos del vector x. Determina la mediana de los datos del vector x. Determina la moda de los datos del vector x. Determina la desviación estándar de los datos del vector x. Determina la varianza de los datos del vector x. Determina el producto vectorial de los vectores x e y. Determina el producto escalar de los vectores x e y.
A continuación desarrollaremos algunos ejemplos de funciones que trabajan con vectores. >> x=[3 -4 7 5 2 -2 1 6] x= 3
-4
7
5
>> n=length(x) n= 8 >> suma=sum(x) suma = 18 >> p=prod(x)
2
-2
1
6
58
– FIEE UNCP
– Juan Arellano – Hernán Juan de Dios
Rubén Galeas
p= 10080 >> maximo=max(x) maximo = 7 >> minimo=min(x) minimo = -4 >> ordenado=sort(x) ordenado = -4
-2
1
2
3
5
6
7
A continuación desarrollaremos ejemplos de las funciones de teoría de conjuntos con MATLAB. >> x=[3 -4 7 5 2 -2 1 6]; >> y=[3 2 -5 5 10 3 4 -3 2 1 -6 8 1 -2]; >> u=union(x,y) % Calcula la unión de los conjuntos x e y. u= -6
-5 -4 -3
-2
1
2
3
4
5
6
7
8 10
>> i=intersect(x,y) % Calcula la interse cción de los conjuntos x e y. i= -2
1
2
3
5
>> d=setdiff(x,y) % Calcula la difere ncia de los conjuntos x e y. d= -4
6
7
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
59
>> d1=setdiff(y,x) % Calcula la difere ncia de los conjuntos y e x. d1 = -6
-5 -3
4
8 10
A continuación desarrollaremos ejemplos de las funciones estadísticas con MATLAB. >> x=[12 8 12 10 15 14 13 8 18 12 10 16 11 14 12 11 18 9 12 15]; >> med ia=mean(x) % Calcula la media de los datos estadísticos de x. media = 12.5000 >> med iana=med ian(x) % Calcula la medina de los datos estadísticos de x. mediana = 12 >> moda=mode(x) % Calcula la moda de los datos estadísticos de x. moda = 12 >> de=std(x) % Calcula la desviación estándar de los datos estadísticos de x. de = 2.9110 >> v=v ar(x) % Calcula la varianza de los datos estadísticos de x. v= 8.4737 A continuación desarrollaremos ejemplos de las funciones vectoriales con MATLAB. En este caso diremos que el vector A=3i-2j+k y el vector B=2i+2j-3k, entonces para hallar el producto vectorial y escalar de dichos vectores sería: >> A=[3 -2 1]; %coeficientes del v ector A. >> B=[2 2 -3]; %coeficientes del vector B. >> AxB=cross(A,B) %calcula el producto ve ctorial de A y B.
60
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
AxB = 4 11 10
%Estos serían los coeficiente s del ve ctor AxB=4i+11j+10k
>> AB=dot(A,B)
%calcula el producto escalar de A y B.
AB = -1 También es necesario indicar que la mayoría de las funciones matemáticas que hemos desarrollado en el capítulo II también funcionan con vectores. A continuación desarrollaremos algunos ejemplos de aplicación. >> x=[3.2,-2.3,5,3,6.8,4.1] x= 3.2000 -2.3000 5.0000 3.0000 6.8000 4.1000 >> y1=sin(x) y1 = -0.0584 -0.7457 -0.9589 0.1411 0.4941 -0.8183 >> y2=ceil(x) y2 = 4
-2
5
3
7
5
3
7
4
>> y3=round(x) y3 = 3
-2
5
>> y4=sqrt(x) y4 = Columns 1 through 4 1.7889 + 0.0000i 0.0000 + 1.5166i 2.2361 + 0.0000i 1.7321 + 0.0000i
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
61
Columns 5 through 6 2.6077 + 0.0000i 2.0248 + 0.0000i >> y5=log(x) y5 = Columns 1 through 4 1.1632 + 0.0000i 0.8329 + 3.1416i 1.6094 + 0.0000i 1.0986 + 0.0000i Columns 5 through 6 1.9169 + 0.0000i 1.4110 + 0.0000i 3.2 ARREGLO BIDIMENSIONAL (MATRIZ). Un arreglo bidimensional en MATLAB es un conjunto de elementos dispuestos en filas y columnas uno a continuación de otros, donde cada elemento conserva su mismo espacio y tienen dos índices de identificación (fila,columna), la primera representa al número de fila que se inicia con uno (1) y la segunda representa al número de la columna que también se inicia con uno (1). En la Figura 3.2 se ilustra el concepto de arreglo bidimensional, donde la matriz A tiene m filas y n columnas.
Figura 3.2. Representación de una matriz de mxn. Por ejemplo una matriz A de 5x6 sería:
62
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
En este punto es necesario aclarar que MATLAB es fundamentalmente un programa de cálculo matricial, por lo que si analizamos a profundidad diremos que una variable del tipo escalar que hemos estudiado en el capítulo II es una caso particular de una matriz de 1x1; ahora los vectores de n elementos también es un caso particular de una matriz de 1xn; A continuación veremos cómo se crean las matrices, cómo se realizan operaciones con estas entidades y cómo se accede a sus elementos. Para crear una matriz en MATLAB se debe ingresar las filas con los datos separados por espacios en blanco o separados por comas y para pasar a otra fila se debe poner necesariamente un punto y coma (;) y todo ello debe estar entre corchetes. >> A=[2 4 -1 0 1 -1;3 5 6 -1 2 0;-1 0 2 1 1 2;1 2 -2 3 1 -1;0 3 4 1 5 -3] A= 2 3 -1 1 0
4 -1 5 6 0 2 2 -2 3 4
0 -1 1 3 1
1 -1 2 0 1 2 1 -1 5 -3
Para acceder a los elementos individuales de una matriz A se hace utilizando los subíndices de filas y columnas entre paréntesis, así A(n,m) sería la n-ésima fila y la m-ésima columna de la matriz A y si queremos acceder al último elemento podemos indicarlo usandoen d como subíndice. >> A(1,4) ans = 0 >> A(2,3) ans = 6 >> A(e nd) %último elemento de la matriz . ans = -3
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
63
Una matriz puede cambiar su tamaño, si tiene n elementos, basta añadir nuevos valores para las posiciones m+1, m+2 y así sucesivamente. Si es necesario MATLAB asigna ceros a los elementos que faltan para completar la matriz. Por ejemplo la matriz A tiene 6 columnas, si queremos aumentar una columna se hace de la siguiente manera: >> A A= 2 3 -1 1 0
4 -1 5 6 0 2 2 -2 3 4
0 -1 1 3 1
1 -1 2 0 1 2 1 -1 5 -3
>> A(1,7)=8 %llena con cer os las demás posiciones. A= 2 3 -1 1 0
4 -1 5 6 0 2 2 -2 3 4
0 -1 1 3 1
1 -1 2 0 1 2 1 -1 5 -3
8 0 0 0 0
También es posible añadir nuevas filas o columnas a una matriz ya existente a partir de otras matrices, pero la condición es que si deseamos añadir más columnas las dos matrices deben tener el mismo número de columnas y si deseamos añadir más filas las dos matrices debentener el mismo número de filas. >> A A= 2 3 -1
4 -1 5 6 0 2
0 -1 1
1 -1 2 0 1 2
8 0 0
10
23 -2 4
13
15 -3 -1
00
5
7
>> B=[1 2 3 4 5 6 7] B= 1
2
3
4
6
64
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
>> C=[A;B] C= 2 3 -1 1 0 1
4 -1 5 6 0 2 2 -2 3 4 2 3
0 -1 1 3 1 4
1 -1 2 0 1 2 1 -1 5 -3 5 6
8 0 0 0 0 7
Para acceder a una fila o a una columna, se usa la notación de dos puntos (:), así A(m,:) nos muestra todos los elementos de la filam y si ponemos A(:,n) nos muestra todos los elementos de la columna n. >> A A= 2 3 -1 1
4 -1 5 6 0 2 2 -2
0 -1 1 3
1 -1 2 0 1 2 1 -1
8 0 0 0
0
3
1
5 -3
0
4
>> A(3,:) %muestra la fila 3 de la matriz A. ans = -1
0
2
1
1
2
0
>> A(:,4) % mue stra la columna 4de la matriz A. ans = 0 -1 13 1 También es posible eliminar filaso columnas de una matriz existente mediante la asignación del vacío [] a la fila o columna que se deseen eliminar. >> A
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
65
A= 2 3 -1 1 0
4 -1 5 6 0 2 2 -2 3 4
0 -1 1 3 1
1 -1 2 0 1 2 1 -1 5 -3
8 0 0 0 0
>> A(:,6)=[ ] %Elimina toda la columna 6 de la matriz A. A= 2 3 -1 1 0
4 -1 5 6 0 2 2 -2 3 4
0 -1 1 3 1
1 2 1 1 5
8 0 0 0 0
>> A(3,:)=[ ] %Elimina toda la fila 3 de la matriz A A= 2 3 1 0
4 -1 5 6 2 -2 3 4
0 -1 3 1
1 2 1 5
8 0 0 0
También es posible intercambiar filas de una matriz existente, cuyo procedimiento es la siguiente: >> A=[2 4 -1 0 1 -1;3 5 6 -1 2 0;-1 0 2 1 1 2;1 2 -2 3 1 -1;0 3 4 1 5 -3] A= 2 3 -1 1
4 -1 5 6 0 2 2 -2
0 -1 1 3
1 -1 2 0 1 2 1 -1
0
3
1
5 -3
4
>> A([1,3],:)=A([3,1],:) %intercambia la fila 1 y 3 A= -1 3 2
0 2 5 6 4 -1
1 -1 0
1 2 2 0 1 -1
66
– FIEE UNCP
1 0
2 -2 3 4
Rubén Galeas 3 1
– Juan Arellano – Hernán Juan de Dios
1 -1 5 -3
También es posible intercambiar columnas de una matriz existente, cuyo procedimiento es la siguiente: >> A=[2 4 -1 0 1 -1;3 5 6 -1 2 0;-1 0 2 1 1 2;1 2 -2 3 1 -1;0 3 4 1 5 -3] A= 2 3 -1 1 0
4 -1 5 6 0 2 2 -2 3 4
0 -1 1 3 1
1 -1 2 0 1 2 1 -1 5 -3
>> A(:,[2,4],:)=A(:,[4,2]) %intercambia la columna 2 y 4 A= 2 3 -1
0 -1 -1 6 1 2
4 5 0
1 -1 2 0 1 2
1 0
3 -2 1 4
2 3
1 -1 5 -3
También es posible renombrar una fila haciendo operaciones aritméticas y sumando a nuevas filas, cuyo procedimiento es la siguiente: >> A=[2 4 -1 0 1 -1;3 5 6 -1 2 0;-1 0 2 1 1 2;1 2 -2 3 1 -1;0 3 4 1 5 -3] A= 2 3 -1 1 0
4 -1 5 6 0 2 2 -2 3 4
0 -1 1 3 1
1 -1 2 0 1 2 1 -1 5 -3
>> A(2,:)=-2*A(2,:) % multiplica por –2 a la fila 2 y se reemplaza toda la fila 2. A= 4 8 -5 -6 -10 -12 -1 0 2 1 2 -2 0 3 4
6
3 -3 2 -4 0 1 1 2 3 1 -1 1 5 -3
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
67
>> A(1,:)=A(1,:)+2*A(4, :) %Multiplica la fila 4 por 2 y se suma a la fila 1. A= 4 3 -1 1 0
8 -5 5 6 0 2 2 -2 3 4
6 -1 1 3 1
3 -3 2 0 1 2 1 -1 5 -3
a) Operaciones aritméticas con matrices. En el Cuadro 3.3 se muestra todas las operaciones aritmética que se pueden hacer con matrices. Cuadro 3.3. Operaciones aritméticas con matrices en MATLAB. Sintaxis Descripción en MAT LAB A+k Suma a cada elemento de la matriz A el escalar k. A-k Resta a cada elemento de la matriz A el escalar k. k*A Multiplica a cada elemento de la matriz A el escalar k. A/k Divide a cada elemento de la matriz A el escalar k. k.^A Potenciación del escalar k a cada elemento de la matriz A. A.^k Potenciación de cada elemento de la matriz A elevado a la k. Suma matricial de las matrices A y B (debe cumplir propiedad de suma de A+B matrices). Resta matricial de las matrices A y B (debe cumplir propiedad de resta de A-B matrices). Multiplicación matricial de las matrices A y B (debe cumplir con propiedad A*B de multiplicación de matrices). División matricial de las matrices A y B (debe cumplir con la propiedad de A/B división de matrices) Multiplicación elemento a elemento de las matrices A y B que deben ser del A.*B mismo orden. División elemento a elemento de las matrices A y B que deben ser del A./B mismo orden. Potenciación elemento a elemento de las matrices A y B que deben ser del A.^B mismo orden. A continuación desarrollaremos algunos ejemplos de operaciones aritméticas con matrices y escalar en MATLAB. >> A=[2 4 -1 0 1 -1;3 5 6 -1 2 0;-1 0 2 1 1 2;1 2 -2 3 1 -1;0 3 4 1 5 -3] A=
68
– FIEE UNCP
2 3 -1 1 0
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
4 -1 0 1 -1 5 6 -1 2 0 0 2 1 1 2 2 -2 3 1 -1 3 4 1 5 -3
>> Z1=A+2 Z1 = 4 5 1 3 2
6 7 2 4 5
1 8 4 0 6
2 3 1 1 4 2 3 3 4 5 3 1 3 7 -1
>> Z2=A-3 Z2 = -1 1 -4 -3 -2 -4 0 2 3 -4 -1 -3 -4 -3 -1 -2 -2 -1 -2 -3
-1 -5 0 -2 -4 0 1 -2 2 -6
>> Z3=2*A Z3 = 4 8 -2 0 6 10 12 -2 -2 0 4 2 2 4 -4 6 0 6 8 2
2
-2 4 0 2 4 2 -2 10 -6
>> Z4=A/2 Z4 = 1.0000 1.5000 -0.5000 0.5000 0
2.0000 2.5000 0 1.0000 1.5000
-0.5000 3.0000 1.0000 -1.0000 2.0000
0 -0.5000 0.5000 1.5000 0.5000
0.5000 -0.5000 1.0000 0 0.5000 1.0000 0.5000 -0.5000 2.5000 -1.5000
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
69
>> Z5=2.^A ans = 4.0000 8.0000 0.5000 2.0000 1.0000
16.0000 0.5000 32.0000 64.0000 1.0000 4.0000 4.0000 0.2500 8.0000 16.0000
1.0000 0.5000 2.0000 8.0000 2.0000
2.0000 0.5000 4.0000 1.0000 2.0000 4.0000 2.0000 0.5000 32.0000 0.1250
>> Z6=A.^2 Z6 = 4 16 1 9 25 36 1 0 4 1 4 4 0 9 16
0 1 1 9 1
1 1 4 0 1 4 1 1 25 9
A continuación desarrollaremos algunos ejemplos de operaciones aritméticas entre matrices en MATLAB. >> A A= 2 3 -1 1 0
4 -1 5 6 0 2 2 -2 3 4
>> B B= 0 -1 1 3 1
12 -10 1 2 1 -1 5 -3
>> Z1=A+B Z1 =
70
– FIEE UNCP
2 2 0 4 1
Rubén Galeas
5 -2 7 6 1 4 3 -3 8 1
>> Z2=A-B Z2 = 2 3 0 4 3 6 -2 -1 0 -2 1 -1 -1 -2 7 >> A A= 2 3
4 -1 5 6
-1
0
2
>> B B= 0 -1 1
1 -1 2 0 1 2
>> Z3=A*B Z3 = -5 9 -49 1 19 2 1 5 >> Z4=A/B Z4 = 3.8000 -0.6000 1.4000
– Juan Arellano – Hernán Juan de Dios
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
71
0.8000 0.4000 3.4000 -2.0000 1.0000 0 >> Z5=A.*B Z5 = 0 4 1 -3 10 0 -1 0 4 >> Z6=A./B Z6 = Inf 4.0000 1.0000 -3.0000 2.5000 Inf -1.0000 0 1.0000 >> Z7=A.^B Z7 = 1.0000 4.0000 -1.0000 0.3333 25.0000 1.0000 -1.0000 0 4.0000 A continuación desarrollaremos ejemplos de aplicaciones aritméticas con matrices de número complejos. >> A=[2-i,1+2i;4+2i,-2+i] A= 2.0000 - 1.0000i 1.0000 + 2.0000i 4.0000 + 2.0000i -2.0000 + 1.0000i >> B=[1+2i,-2;2+3i,-1+i] B= 1.0000 + 2.0000i -2.0000 + 0.0000i 2.0000 + 3.0000i -1.0000 + 1.0000i >> Z1=A+B
72
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Z1 = 3.0000 + 1.0000i -1.0000 + 2.0000i 6.0000 + 5.0000i -3.0000 + 2.0000i >> Z2=2-j+A Z2 = 4.0000 - 2.0000i 3.0000 + 1.0000i 6.0000 + 1.0000i 0.0000 + 0.0000i >> Z3=A*B Z3 = 0.0000 +10.0000i -7.0000 + 1.0000i -7.0000 + 6.0000i -7.0000 - 7.0000i >> Z4=A/B Z4 = -0.6538 - 0.7308i 0.4231 - 0.1154i 1.1923 + 0.0385i 0.3462 - 0.7308i b) Funciones que trabajan con matrices. En el Cuadro 3.4 se muestra las funciones más importantes que trabajan con matrices.
Función size(A) sum(A) prod(A) sort(A) max(A) min(A) mean(A) median(A) mode(A) std(A) var(A) trace(A) det(A)
Cuadro 3.4. Funciones relacionados con matrices en MATLAB. Descripción Determina el número de filas y columnas de la matriz A. Calcula la suma de cada columna de la matriz A. Calcula el producto de cada columna de la matriz A. Ordena de menor a mayor cada columna de la matriz A. Determina el mayor elemento de cada columna de la matriz A. Determina el menor elemento de cada columna de la matriz A. Calcula el promedio de cada columna de la matriz A. Calcula la mediana de cada columna de la matriz A. Calcula la moda de cada columna de la matriz A. Calcula la desviación estándar de cada columna de la matriz A. Calcula la varianza de cada columna de la matriz A. Calcula la traza de la matriz A (suma de diagonal principal) Calcula la determinante de la matriz A.
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
inv(A) diag(A) tril(A) triu(A) rot90(A) fliplr(A) flipud(A) transpose(A)
73
Determina la inversa de la matriz A. Extrae los elementos de la diagonal principal de la matriz A. Construye una matriz triangular superior a partir de la matriz A. Construye una matriz triangular inferior a partir de la matriz A. Hace rotar la matriz A 90° en sentido antihorario Invierte la matriz A en su imagen horizontalmente. Invierte la matriz A en su imagen verticalmente. Determina la transpuesta de la matriz A, es equivalente a A’.
A continuación desarrollaremos algunos ejemplos de funciones que trabajan con matrices. >> A=[2 4 -1 0 1 -1;3 5 6 -1 2 0;-1 0 2 1 1 2;1 2 -2 3 1 -1;0 3 4 1 5 -3] A= 2 3 -1 1 0
4 -1 5 6 0 2 2 -2 3 4
0 -1 1 3 1
>> [f,c]=size(A)
1 -1 2 0 1 2 1 -1 5 -3 %en la variable f número de fila y en c el número de columnas.
f= 5
c= 6 >> S=sum(A) S= 5
14
9
4
10 -3
>> S1=sum(sum(A)) S1 = 39 >> P=prod(A)
74
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
P= 0
0 96
0
10
0
>> or=sort(A) or = -1 0 1 2 3
0 -2 2 -1 3 2 4 4 5 6
-1 1 -3 0 1 -1 1 1 -1 1 2 0 3 5 2
>> mayor=max(A) mayor = 3
5
6
3
5
2
>> meno r=min(A) menor = -1
0 -2
-1
1 -3
>> prom=mean(A) prom = 1.0000 2.8000 1.8000 0.8000 2.0000 -0.6000 >> mediana=median(A) mediana = 1
3
2
1
1 -1
>> moda=mode(A) moda = -1
0 -2
>> ds=std(A)
1
1
-1
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
ds = 1.5811 1.9235 3.3466 1.4832 1.7321 1.8166 >> v arianza=var(A) varianza = 2.5000 3.7000 11.2000 2.2000 3.0000 3.3000 >> B= [2 4 -1 0;3 5 2 0;-1 2 1 2;1 -2 3 1] B= 2 3 -1 1
4 -1 5 2 2 1 -2 3
0 0 2 1
>> t=trace(B) t= 9 >> d=det(B) d= -71.0000 >> I=inv(B) I= 0.5211 -0.1972 -0.1831 0.3662 -0.1268 -0.4648 0.1831 0.3380 0.0986 0.0282 -0.1972 -0.0563 0.6197 -0.4507 0.2958 0.4085 >> di=diag(B) di = 2
75
76
– FIEE UNCP
Rubén Galeas
5 1 1 >> Bs=tril(B) Bs = 2 3 -1 1
0 5 2 -2
0 0 1 3
0 0 0 1
>> Bi=triu(B) Bi = 2 0 0 0
4 5 0 0
-1 2 1 0
0 0 2 1
>> R=rot90(B) R= 0 -1 4 2
0 2 5 3
2 1 1 3 2 -2 -1 1
>> H=fliplr(B) H= 0 0
-1 2
4 5
2 3
21
13
2-2 -11
>> V=flipud(B) V= 1 -1
-2 2
3 1
1 2
– Juan Arellano – Hernán Juan de Dios
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB 3 2
5 4
2 -1
77
0 0
>> T=transpose(B) T= 2 4 -1 0
3 5 2 0
-1 1 2 -2 1 3 2 1
>> T1=B' T1 = 2 4 -1 0
3 5 2 0
-1 1 2 -2 1 3 2 1
También es necesario indicar que la mayoría de las funciones matemáticas que hemos desarrollado en el capítulo II también funcionan con matrices. A continuación desarrollaremos algunos ejemplos de aplicación. >> A=[3.2,-2.3,5;3,6.8,4.1] A= 3.2000 -2.3000 5.0000 3.0000 6.8000 4.1000 >> Z1=sin(A) Z1 = -0.0584 -0.7457 -0.9589 0.1411 0.4941 -0.8183
>> Z2=ce il(A) Z2 = 4 -2 3 7
5 5
>> Z4=round(A)
78
– FIEE UNCP
Rubén Galeas
Z4 = 3 -2 3 7
– Juan Arellano – Hernán Juan de Dios
5 4
>> Z5=sqrt(A) Z5 = 1.7889 + 0.0000i 0.0000 + 1.5166i 2.2361 + 0.0000i 1.7321 + 0.0000i 2.6077 + 0.0000i 2.0248 + 0.0000i >> Z6=log(A) Z6 = 1.1632 + 0.0000i 0.8329 + 3.1416i 1.6094 + 0.0000i 1.0986 + 0.0000i 1.9169 + 0.0000i 1.4110 + 0.0000i c) Construcción rápida de matrices. En el Cuadro 3.5 se muestra las funciones más importantes que sirven para construcción de matrices rápidas. Cuadro 3.5. Funciones relacionados conla construcción de matrices en MATLAB. Función Descripción zeros(n) zeros(m,n) ones(n) ones(m,n) rand(n) rand(m,n) eye(n)
Genera una matriz nula (de ceros) de nxn. Genera una matriz nula (de ceros) de mxn. Genera una matriz de nxn, donde cada elemento es 1. Genera una matriz de mxn, donde cada elemento es 1. Genera una matriz de nxn con números aleatorios entre 0 y 1. Genera una matriz de mxn con números aleatorios entre 0 y 1. Genera una matriz identidad (diagonal de unos) de nxn. Genera una matriz mágica (suma de filas, columnas y diagonales son magic(n) iguales) de nxn. pascal(n) Genera una matriz de nxn con el triángulo de Pascal. Construye una matrizcuya diagonal son a, b, c, … El . orden de la matriz blkdiag(a,b,c,…) depende del número de elementosa, b, c,…
A continuación desarrollaremos algunos ejemplos de funciones que trabajan con matrices. >> Z=zeros(3) Z= 0 0 0
0 0 0
0 0 0
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB >> Z1=zeros(3,4) Z1 = 0 0 0
0 0 0
0 0 0
0 0 0
>> On=ones(4) On = 1 1 1 1
1 1 1 1
1 1 1 1
1 1 1 1
>> On=ones(4,2) On = 1 1 1 1
1 1 1 1
>> R=rand(3) R= 0.8147 0.9058 0.1270
0.9134 0.6324 0.0975
0.2785 0.5469 0.9575
>> R=r and(2,3) R= 0.9649 0.1576
0.9706 0.9572
>> X=eye(3) X= 1 0 0
0 1 0
0 0 1
>> M=magic(3) M= 8
1
6
0.4854 0.8003
79
80
– FIEE UNCP
3 4
Rubén Galeas 5 9
7 2
>> M1=magic(5) M1 = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 18 12 25 19 21 11 2 93 >> P=pascal(4) P= 1 1 1 1
1 1 1 2 3 4 3 6 10 4 10 20
>> C=blkdiag(2,4,1,-2) C= 2
0
0
0
0 0
04 0
10 0
0 -2
– Juan Arellano – Hernán Juan de Dios
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
81
APLICACIONES DEL CAPÍTULO III. 3.1. Dado los conjuntos A, B y C que se muestran en la siguiente figura. Determinar las siguientes operaciones con conjuntos. a) A U B b) A U C c) B ∩ C d) (B U C) ∩ A e) A – B f) (A U C) – (B ∩ C) g) A ∩ B ∩ C
>> A=[1,3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36] A= 1
3
5
>> B=13:24
7
9 12
14 16
18 19 21
23 25
27 30 32
34 36
82
– FIEE UNCP
– Juan Arellano – Hernán Juan de Dios
Rubén Galeas
B= 13 14 15 16 17 18 19 20 21 22 23 24 >> C=3:3:36 C= 3
6
9
12
15 18
>> AoB=union(A,B)
21 24
27
30 33
36
% Solución a.
AoB = 1 3 5 7 9 12 13 14 25 27 30 32 34 36
15
>> AoC=union(A,C)
% Solución b.
AoC = 1 3 5 6 7 32 33 34 36
9
>> ByC=interse ct(B,C)
12 14
16 17
15 16
18 19
18 19 21
20
21 22
23 24 25
23
24
27 30
% Solución c.
ByC = 15 18 21 24 >> BoCyA=inte rse ct(union(B,C),A) BoCyA = 3 9 12
14
16
>> A_B=setdiff(A,B) A_B = 1 3
5
7
18
19
% Solución d.
21 23
27
6
9 12 25 27 30
7
9
12 14
32 34
16 19
>> AyByC=intersect(inte rse ct(A,B),C) AyByC = 18 21
36
% Solución e.
>> AoC_ByC=setdiff(union(A,C),interse ct(B,C)) AoC_ByC = 1 3 5
30
36 % Solución f.
23 25 27
% Solución g.
30 32 33
34 36
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
83
⃗ 2 ⃗ 3 ⃗ 4 3 ⃗ ⃗2
⃗ x
3.2. Dado los vectores:
y
. Determinar el producto vectorial de
.
Solución en MATLAB. >> a=[2 3 4] a= 2
3
4
>> b=[3 1 2] b= 3
1
2
>> axb=cross(a,b) axb = 2 8 -7 Entonces podemos concluir que el producto vectorial es:
⃗x 2 ⃗ 8 ⃗ 7
3.3. En un salón de clase de 30 alumnos se ha preguntado el número de hermanos que tiene, el resultado ha sido el siguiente: 2
1
3
2
2
1
0
5
2
4
6
0
0
1
1
2
1
1
1
2
3
2
4
3
1
0
2
4
2
2
Determinar la media, mediana, moda, desviación estándar y varianza.
84
– FIEE UNCP
– Juan Arellano – Hernán Juan de Dios
Rubén Galeas
Solución en MATLAB. >> h=[2 1 3 2 2 1 0 5 2 4 6 0 0 1 1 2 1 1 1 2 3 2 4 3 1 0 2 4 2 2] h= Columns 1 through 18 2
1
3
2
2
1
0
5
2
4
6
0
1
0
2
4
2
2
Columns 19 through 30 1
2
3
2
4
>> media=mean(h) media = 2 >> mediana=median(h) mediana = 2 >> moda=mode(h) moda = 2 >> destandar=std(h) destandar = 1.4856 >> varianza=var(h) varianza = 2.2069 Por lo tanto diremos que: Media=2 Mediana=2 Moda=2 Desviación estándar=1,4856 Varianza=2,2069
3
0
1
1
2
1
1
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB 3.4. Hallar las raíces de una ecuación de grado n de la forma:
anxn+an-1 xn-1 +an-2 xn-2 +…+ao=0 Como ejemplo hallaremos las raíces de la ecuación:
X2 + 3x – 10 = 0 Solución en MATLAB. >> c=[1,3,-10] c= 1
3 -10
>> x=roots(c) x= -5 2 Entonces podemos concluir que: x1 = -5 y x2=2. Otro ejemplo sería para hallar las raíces de la ecuación:
2x5 – 5x 4 + 3x3 – x + 10=0 Solución en MATLAB. >> c=[2 -5 3 0 -1 10] c= 2
-5
3
0 -1
>> x=roots(c) x= 1.7206 + 0.6507i 1.7206 - 0.6507i 0.0421 + 1.1997i 0.0421 - 1.1997i -1.0253 + 0.0000i
10
85
86
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Entonces podemos concluir que: x1 = 1.7206 + 0.6507i x2 = 1.7206 - 0.6507i x3 = 0.0421 + 1.1997i x4 = 0.0421 - 1.1997i x5 = -1.0253 3.5. Hallar la determinante de la matriz que se muestra en la siguiente figura.
Solución en MATLAB. >> A=[1 3 5 2;0 -1 3 4;2 1 9 6;3 2 4 8] A= 1 0 2 3
3 -1 1 2
5 3 9 4
2 4 6 8
>> d=de t(A) d= 160 La determinante de la matriz A es 160.
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB
87
3.6. Hallar la transpuesta de la matriz.
Como ejemplo hallaremos las transpuestas de las matrices A1, A2 y A3 que se muestran en la siguiente figura:
Solución en MATLAB. >> A1=[3 -1;-2 4] A1 = 3 -1 -2 4 >> A2=[2 4 3;5 -1 2;-2 6 -3] A2 = 2 4 3 5 -1 2 -2 6 -3 >> A3=[2 0 1;-1 3 4;-3 5 7;-5 -4 -2;8 6 9] A3 = 2 -1 -3 -5 8
0 3 5 -4 6
1 4 7 -2 9
88
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
>> A1t=transpose(A1) A1t = 3 -2 -1 4 >> A2t=transpose(A2) A2t = 2 5 -2 4 -1 6 3 2 -3 >> A3t=transpose(A3) A3t = 2 -1 -3 -5 0 3 5 -4 1 4 7 -2
8 6 9
Por lo tanto podemos decir que las transpuestasde las matrices A1, A2 y A3.
3.7. Hallar la inversa de la matriz A que se muestra en la siguiente figura.
CAPÍTULO III: ARREGLOS– VECTORES Y MATRICES CON MATLAB Solución en MATLAB. >> A=[1 -1 3 0;2 1 0 2;0 -1 1 0;0 1 1 -1] A= 1 2 0 0
-1 3 0 1 0 2 -1 1 0 1 1 -1
>> A_1=inv(A) A_1 = 5.0000 -2.0000 -11.0000 -4.0000 -2.0000 1.0000 4.0000 2.0000 -2.0000 1.0000 5.0000 2.0000 -4.0000 2.0000 9.0000 3.0000 Por lo tanto podemos decir que la inversa de la matriz A.
89
90
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
BIBLIOGRAFÍA
91
92
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
CAPÍTULO IV: PROGRAMACIÓN EN MATLAB
93
CAPÍTULO IV PROGRAMACIÓN EN MATLAB Antes de ingresar a la programación en MATLAB, es necesario sugerir que el lector tenga alguna experiencia de programación en otros lenguajes tales como C++, Visual Basic, Visual FoxPro, etc. MATLAB puede utilizarse como un lenguaje de programación que tiene la gran ventaja de poder incorporar a los programas propios del usuario todas las aplicaciones que ya tiene implementadas, lo cual facilita y simplifica en muchos casos la programación. También será de gran utilidad tener en cuenta la estructura vectorial y matricial del programa. Todos los programas en MATLAB se escriben en archivos (*.m) llamados “M-fichero”, el cual se explicará con mayor detalle durante el presente capítulo. 4.1 CREACIÓN DE ARCHIVOS “M -FICHEROS” EN MATLAB. Para crear un archivo “M-Fichero” y poder diseñar un programa, en la versión R2015a del MATLAB, existe básicamente tres maneras: 1°) Presionar Ctrl+N . 2°) Hacer clic en el botón “New Script” que se muestra en la Figura 4.1 3°) Hacer clic en el botón“New” que se muestra en la Figura4.1 y seleccionar la opción“Script” .
Figura 4.1. Pantalla principal del MATLAB que muestra los botones para crear archivos “M -Ficheros”.
Con cualquiera de las tres formas mencionadas, inmediatamente se visualizará la ventana“Editor” en el cual se puede diseñar los programas correspondientes, tal como se muestra en la Figura 4.2.
94
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Figura 4.2. Pantalla principal del MATLAB en el que se muestra la ventana de editor de programas.
Luego de terminar el diseño del programa se debe grabar o guardar el archivo, para ello se debe hacer clic en el botón “Save” que se muestra en la Figura 4.2 y saldrá la ventana que se muestra en la Figura en el estará cual se debe el nombre del archivo y hacer clic en el botón “Guardar” y el 4.3, programa listo paraingresar su ejecución.
Figura 4.3. Ventana de grabación de archivos.
CAPÍTULO IV: PROGRAMACIÓN EN MATLAB
95
Para ejecutar un programa grabado se debe hacer clic en el botón “Run” que se muestra en la Figura 4.2 o simplemente presionar la tecla de función F5, luego el programa se ejecuta en la ventana “Command Windows” que se muestra en la Figura 4.2. 4.2 OPERACIONES DE ENT REDA Y SALIDA DE D AT OS EN M AT LAB. Todo lenguaje de programación, para que sea práctico debe tener procedimientos para entrada y salida de datos. En este caso en MATLAB existen varios procedimientos para entrada y salida de datos los cuales, desarrollaremos a continuación. a) Entrada de datos (lectura de datos). Para ingresar datos a un programa en MATLAB se utiliza la función input de la siguiente manera: >>X=input( );
%Pide un valor numérico sin comentario alguno y dicho valor se almacena en la variable X.
>> Y=input(‘Ingrese dato: ‘);
% Pide un valor numérico con el comentario “Ingrese dato: “ y dicho valor se almacena en la variable Y.
>>C=input('Ingrese cadena: ','s'); % Pide un valor tipo cadena y se almacena en la variable C. b) Salida de datos. Para la salida de datos se utilizan las funcionesdisp y fprintf de la siguiente manera: >>disp(A); %muestra en pantalla el valor almacenado en la variable A. >>disp(‘El resultado e s: ‘); %muestra el mensaje “El resultado es: “ en la pantalla. Para el caso del fprintf tiene una variedad de formas, en el presente texto solo explicaremos los que más se usan, para el resto sugerimos al lector ver la ayuda del MATLAB presionando >>hel p fpr intf . En los siguientes ejemplos podemos observar el uso delfprintf . >> a=5; >> b=5.4; >> suma=a+b; >> fprintf('La suma de %10i más %8.2f es %10.2f\n',a,b,suma) La suma de 5 más 5.40 es 10.40 En la sentencia fprintf , la primera parte solo es un comentario L “ a suma es de”, luego viene la expresión “%10i” lo que significa que en un espacio de 10 caracteres se imprimirá el valor de la variable “a” que es del tipo entero (letrai de integer también se puede usar la letrad de
96
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
x para ver el resultado en decimal, la letrao para visualizar el resultado en base octal o la letra base exadecimal), luego viene otro comentario m “ ás” seguido de “%8.2f” lo que significa que en un espacio de 8 caracteres ycon 2 decimales se imprimirá el valor de la variable “b” que es del tipo real (letraf de float también se puede usar las letrase y E que expresan en formato exponencial y de ingeniería)y luego viene el comentario es “ ” seguido de “%10.2f\n” lo que significa que en un espacio de 10 caracteres y con 2 decimales se imprimirá el valor de la variable “suma”, además “\n” significa que para el siguientefprintf se hará un salto de línea, por último se visualiza “a,b,suma” que es el orden de impresión delfprintf, es decir cada símbolo porcentaje % ( ) que se encuentra dentro delfptinf corresponde a una variable que se imprimirá; en el ejemplo anterior la expresión10i “ ” corresponde a la variable a“”, “%8.2f” corresponde a la variable b“” y finalmente % “ 10.2f\n” corresponde a la variablesuma “ ” seguido del salto de línea. En el resultado que muestra elfprintf anterior se observan espacios en blanco, eso es debido a que se ha impreso con anchos de 8 y 10 espacios para las variables “b” y “suma”, entonces para evitar que salgan espacios innecesarios es mejor asigna un espacio de 1 y el MATLAB se encarga de autoespaciarlos, entonces el ejemplo anterior quedaría así: >> a=5; >> b=5.4; >> suma=a+b; >> f printf('La suma de %1i más %1.2f es %1.2f\n',a,b,suma) La suma de 5 más 5.40 es 10.40 %Ya no se muestran espacios. A continuación presentamos algunos ejemplos adicionales del fprintf con números enteros. >> N=3675; >> fprintf('N=%1d\n',N) %N en base 10 N=3675 >> fprintf('N=%1o\n',N) %N en base 8 (octal) N=7133 >> fprintf('N=%1x\n',N) %N en base 16 (exadecimal) N=e5b %en este caso e=14 y b=11, es decir N=3675=(14)5(11)16. A continuación presentamos algunos ejemplos adicionales del fprintf con números reales. >> N=5678.893; >> N=5678.8930 fprintf('N =%1.4f\n',N)
%se muestra e n formato normal con 4 de cimales.
>> fprintf('N=%1.4e\n',N) %se muestra en formato científico con 4 decimales. N=5.6789e+03 >> fprintf('N=%1.7E\n',N) %se muestra en formato científico con 7 decimales. N=5.6788930E+03 Sin más preámbulo a continuación niciaremos i con la programación, recordando al lector que para programar tiene que ingresar a la ventana “editor” ver( ítem 4.1).
CAPÍTULO IV: PROGRAMACIÓN EN MATLAB
97
4.3 ESTRUCTURAS SECUENCIALES. Se llaman estructuras secuenciales debido a que una acción o instrucción sigue a otra en forma secuencial uno tras otro hasta el final, no dependiendo de alguna condición que haga variar su secuencia. Se debe entender que una estructura secuencial puede tener una sola instrucción o puede tener un grupo de instrucciones. En la Figura 4.4 se muestra el diagrama de flujo de una estructura secuencial, el cual significa que primero se ejecuta la instrucción 1, luego la instrucción 2 y así sucesivamente hasta ejecutar la instrucción N.
Figura 4.4. Estructura secuencial. En el siguiente programa se muestra las instrucciones secuenciales para calcular el volumen de una esfera cuyo radio se debe ingresar desde el teclado, la fórmula para hallar el volumen de una esfera es el siguiente:
4 3
Para diseñar el programa presione ctrl+N para abrir la ventana de edición de programas y luego digite el siguiente programa secuencial. clc; r=input('Ingrese radio: '); v=4*pi*r^3/3; fprintf('volumen=%1.2f\n',v);
Luego grábelocon el nombre “volesfera.m”haciendo clic en el botónSave (ver Figura 4.2), y se debe observar tal como se muestra en la Figura 4.5.
98
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Figura 4.5. Ventana de editor de programas del MATLAB. Luego para ejecutar el programa haga clic en el botón Run (ver Figura 4.2) o presionar la tecla de función F5 luego en la ventana de comandos debe salir lo siguiente: Ingrese radio: 4 volumen=268.08 Lo que significa el volumen de unidades una esfera de radio=4 sinanterior embargo algo importante en los que programas son las respectivas pores esodeel268,08; programa sería mucho mejor si escribimos lo siguiente: clc; r=input('Ingrese radio (cm): '); v=4*pi*r^3/3; fprintf('volumen=%1.2f m3\n',v);
El resultado que se muestra sería: Ingrese radio (cm): 4 vo lumen= 268.08 m3 Lo que significa que el volumen de una esfera de radio=4 cm es de 268,08 3cm . 4.4. EST RUCT URAS C ONDICIONALES. En la mayor parte de los problemas - por no decir todos - que se presentan en la vida cotidiana y que se pueden solucionar mediante un programa computacional, siempre presentan algunas condiciones que harán cambiar una estructura secuencial.
99
CAPÍTULO IV: PROGRAMACIÓN EN MATLAB
Las estructuras condicionales se utilizan para tomar decisiones lógicas, por eso muchas veces, se les llaman estructuras selectivas, porque se tienen que seleccionar una determinada acción de acuerdo al valor de la condición planteada. Las condiciones se especifican usando losoperadores de re lación (menor, mayor, igual, etc.) y los operadores lógicos (y, o, negación), además se debe tener en cuenta que las condiciones pueden ser simples o complejas pero siempre tendrá un único valor que puede ser VERDADERO (V) o FALSO (F). a) Oper adores de r elación en MATLAB. Los operadores de relación, se utilizan para expresar condiciones simples y describe una relación entre dos valores; a través de los operadores de relación se construyen condiciones que serán evaluadas como VERDADERO (1) o FALSO (0). En un programa se puede hacer comparaciones tanto con datos numéricos (enteros y reales) como con datos de tipo carácter o del tipo cadena.En el Cuadro 4.1 se observa los operadores de relación que se usan en MATLAB. Cuadro 4.1. Operadores de relación en MATLAB. Operador de Equivalente relación en Significado matemático MATLAB > < >= <= == ~=
Mayor que Menor que Mayor o igual que Menor o igual que Igual que Diferente que (No igual que)
> < ≥ ≤ = ≠
b) O peradores lógicos en MATLAB. Los operadores lógicos, se utilizan para expresar condiciones complejas, esto se logra combinando con los operadores de relación; en una condición compleja, también el resultado será VERDADERO (1) o FALSO (0). En el Cuadro 4.2 se muestra losoperadores lógicos que existen en MATLAB. Cuadro 4.2.en Operadores lógicosSignificado en MATLAB. Operador Lógico MATLAB & Y (conjunción) | O (disyunción) ~ No (Negación)
100
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
En el Cuadro 4.3 se muestra los valores que devuelve después de trabajar con los operadores lógicos. Variables del tipo lógico A B V V V F F V
Resultados de los operadores de relación (A & B) (A | B) ~A V V F F V F F V V
F F F c) Estructura condicional simple(if … end) .
F
V
Para explicar el funcionamiento de una estructura condicional simple, utilizaremos la Figura 4.6, en el cual cuando la condición es verdadera (V) se ejecuta las instrucciones 1, 2, 3, …, N; en cambio si la condición es falsa (F) no se ejecuta ninguna instrucción y simplemente salta a la siguiente instrucción que tiene el programa.
Figura 4.6. Estructura condicional simple. Una estructura condicional simple en MATLAB tiene la siguiente estructura: if (condición) Instrucción 1; Instrucción 2; Instrucción 3; ⁞ Instrucción N; end Antes de continuar es necesario aclarar que a diferencia del C++, en MATLAB la condición no necesariamente tiene que estar entre paréntesis, sin embargo se recomienda que la condición esté entre paréntesis.
CAPÍTULO IV: PROGRAMACIÓN EN MATLAB
101
A continuación desarrollaremos un programa para calcular el factorial de un número que se ingresa desde el teclado, tener en cuenta que el número debe ser mayor o igual que cero (no se olvide de presionar ctrl+N para abrir la ventana de edición de programas), entonces el programa sería: clc; n=input('Ingrese un número: '); if (n>=0) f=factorial(n); fprintf('factorial de %1d es %1d\n',n,f); end
Cuando se ejecuta sale lo siguiente: Ingrese un número: 5 factorial de 5 es 120 Pero para mejorar el programa cambiamos la sentencia fprintf de la siguiente manera: clc; n=input('Ingrese un número: '); if (n>=0) f=factorial(n); fprintf('%1d! = %1d\n',n,f); end
Cuando se ejecuta sale lo siguiente: Ingrese un número: 5 5! = 120 Pero si ejecutamos para un valor negativo simplemente no sale nada. d) Estructura condicional doble(if … else … e nd) . Para explicar el funcionamiento de una estructura condicional doble, utilizaremos la Figura 4.7, en el cual cuando la condición es verdadera (V) se ejecuta las instrucciones 1, 2, 3, …, N; en cambio si la condición es falsa (F) se ejecuta las instrucciones a, b, c, …, z; aquí es aclarar que solo se ejecuta una de los dos grupos de instrucciones, pero nunca los necesario dos.
102
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Figura 4.7. Estructura condicional doble. Una estructura condicional doble en MATLAB tiene la siguiente estructura: if (condición) Instrucción 1; Instrucción 2; Instrucción 3; ⁞ elseInstrucción N; Instrucción a; Instrucción b; Instrucción c; ⁞ Instrucción z; end A continuación desarrollaremos un programa para calcular el factorial de un número que se ingresa desde el teclado, tener en cuenta que el número debe ser mayor o igual que cero, en caso contrario debe salir un mensaje indicando que el número debe ser mayor que cero, entonces el programa sería: clc; n=input('Ingrese un número: '); if (n>=0) f=factorial(n); fprintf('%1d! = %1d\n',n,f); else disp('En número debe ser mayor o igual que cero'); end
Cuando se ejecuta y se ingresa el número 6, sale lo siguiente:
CAPÍTULO IV: PROGRAMACIÓN EN MATLAB
103
Ingrese un número: 6 6! = 720 Cuando se ejecuta y se ingresa el número -6, sale lo siguiente: Ingrese un número: -6 En número ingre sado debe se r mayor o igual que cer o e) Estructura condicional múltiple(if … elseif … elseif … else .. . end) Este es un caso muy especial, pero muy utilizado en la práctica ya que muchas veces es necesario evaluar más de dos condiciones a la vez tal como se muestra en la Figura 4.8.
Figura 4.8. Estructura condicional múltiple. Tal como se puede apreciar en la Figura 4.8, esta estructura funciona de la siguiente manera: primero evalúa la condición 1, si es verdadera ejecuta “grupo el de instrucciones 1” y salta a la siguiente sentencia del programa y si dicha condición es falsa evalúa la condición 2, si es verdadera ejecuta el“grupo de instrucciones 2” y salta a la siguiente sentencia del programa y si dicha condición es falsa evalúa la condición 3 y así sucesivamente hasta que si todas
104
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
las condiciones son falsas llega a evaluar la condición N, si es verdadera ejecuta“grupo el de instrucciones N” y salta a la siguiente sentencia del programa y si dicha condición es falsa ejecuta el“grupo de instrucciones otro” y continúa el programa. Una estructura condicional múltiple en MATLAB tiene la siguiente estructura: if (condición 1) Grupo de instrucciones 1; else if (condición 2) Grupo de instrucciones 2; else if (condición 3) Grupo de instrucciones 3; ⁞ else if (condición N) Grupo de instrucciones N; else Grupo de instrucciones otro; end A continuación desarrollaremos una aplicación de una estructura condicional múltiple, para ello se pide elaborar un programa queingrese desde el teclado elvalor de “x” y luego debe calcular el valor de “y” de acuerdo al siguiente detalle:
{ ln 0≤<1 <0 ≥1 Aplicando la estructura de condición múltiple, el programa sería. clc x=input('Ingrese el valor de x: '); if (x<0) y=sin(x); elseif (x<1) y=x; else y=x^2+log(x); end fprintf('y=%1.5f\n',y);
Cuando se ejecuta y se ingresa el valor para x=-5, sale lo siguiente: ingrese el valor de x: -5 y=0.95892 Cuando se ejecuta y se ingresa el valor para x=-5, sale lo siguiente:
CAPÍTULO IV: PROGRAMACIÓN EN MATLAB
105
Ingrese el valor de x: 0.4 y=0.40000 Cuando se ejecuta y se ingresa el valor para x=-5, sale lo siguiente: Ingrese el valor de x: 2 y=4.69315 f) Estructura de decisión múltiple (switch… case1 … case2 … otherwise ... end) Este también es un caso muy especial y también muy utilizado en la práctica, sobre todo cuando se diseña sistemas de menús en el cual es necesario seleccionar más de dos opciones posibles, la estructura de decisión múltiple evaluarán una expresión que podrá tomar N valores distintos (Valor 1; Valor 2; Valor; …; 3 Valor N). Tal como se muestra en la Figura 4.9, según se elija uno de estos valores en la condición se realizará una de las acciones correspondientes.
Figura 4.9. Estructura de decisión múltiple.
106
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Una estructura de decisión múltiple en MATLAB tiene la siguiente estructura: switch (expresion) case Valor 1 Grupo de instrucciones 1; case Valor 2 Grupo de instrucciones 2; case Valor 3 Grupo de instrucciones 3; case Valor N Grupo de instrucciones N; otherwise disp('Opción e quivocada'); end A continuación desarrollaremos una aplicación de una estructura de decisión múltiple, para ello se pide elaborar un programa que ingrese un número del 1 al 12 desde el teclado y luego el programa debe devolver el mes que corresponde al número ingresado, el programa sería: clc; n=input('Ingrese número (1-12): '); switch (n) case 1 disp('Enero'); case 2 disp('Febrero'); case 3 disp('Marzo'); case 4 disp('Abril'); case 5 disp('Mayo'); case 6 disp('Junio'); case 7 disp('Julio'); case 8 disp('Agosto'); case 9 disp('Setiembre'); case 10 disp('Octubre'); case 11 disp('Noviembre'); case 12 disp('Diciembre'); otherwise disp('Opción equivocada'); end
107
CAPÍTULO IV: PROGRAMACIÓN EN MATLAB
Cuando se ejecuta y se ingresa el valor para n=5, sale lo siguiente: Ingrese número (1-12): 5 Mayo Cuando se ejecuta y se ingresa el valor para n=2, sale lo siguiente: Ingrese número (1-12): 5 Febrero Cuando se ejecuta y se ingresa el valor para n=15, sale lo siguiente: Ingrese número (1-12): 15 Opción equivocada Para comprender mejor una estructura de decisión múltiple, a continuación desarrollaremos un ejemplo de aplicación matemática, para ello se pide elaborar un programa que ingrese desde el teclado elvalor de “x” y luego debe calcular el valor de “y” de acuerdo al siguiente detalle:
6 {253
2,3,4 1
Aplicando la estructura de decisión múltiple, el programa sería. clc x=input('Ingrese valor de x: '); switch x case 1 y=5-3*x; case {2,3,4} y=2*x^2+6; otherwise y=exp(x)+x; end fprintf('y=%1.4f\n',y);
Cuando se ejecuta y se ingresa el valor para x=3, sale lo siguiente: Ingrese valor de x: 3 y=24.0000 Cuando se ejecuta y se ingresa el valor para x=1, sale lo siguiente: Ingrese valor de x: 1 y=2.0000
108
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Cuando se ejecuta y se ingresa el valor para x=1.78, sale lo siguiente: Ingrese valor de x: 1.78 y=7.7099 4.5. ESTRUCTURAS DE CONTROL REPETITIVOS. En todos los lenguajes de programación modernos como el MATLAB, necesariamente tienen que considerar las estructuras de control repetitivos o de iteraciones tambiénamado ll “bucles”. Los bucles son segmentos de programa cuyas instrucciones se repitan varias veces mientras cumpla una condición, para utilizar adecuadamente las estructuras de control repetitivos es necesario definir los conceptos de contador y acumulador. a) Contador. Los procesos repetitivos son la base del uso de las computadoras. En estos procesos se necesitan contar los sucesos o acciones internas del bucle. Un contador es una variable cuyo valor se incrementa o decrementa de uno en uno. Las siguientes sentencias son ejemplos de acumuladores en MATLAB. i=i+1; x=x+1;
% el valor de i se incrementa de uno en uno. % el valor de x se incrementa de uno en uno.
y=y-1;
% el valor de y se decrementa de uno en uno.
b) Acumulador. Un acumulador es una variable cuya misión es almacenar cantidades variables de valores en la misma variables. Este tipo de variable es muy común utilizar para totalizar por ejemplo en sumas, promedios, etc.. Las siguientes sentencias son ejemplos de acumuladores en MATLAB. suma=10; % el valor de suma se inicia en 10. suma=suma+5; % el valor de suma se incrementa en 5 por tanto suma=15. suma=suma+25; % el valor de suma se incrementa en 25 por tanto suma=40 c) Estructura repetitiva “ mientras” (while --- end). La estructura repetitiva “mientras” es aquella en la que el número de iteraciones no se conoce por anticipado y es que el cuerpo del bucle se repite mientras la condición sea verdadera. En la Figura 4.10 se puede observar eldiagrama de fijo de la estructura repetitiva “mientras”. Tal como se observa en la Figura 4.10, es una estructura que depende de la condición, mientras que la condición sea verdadera se ejecutará la instrucción 1, la instrucción 2, así sucesivamente hasta la instrucción N.
CAPÍTULO IV: PROGRAMACIÓN EN MATLAB
109
Figura 4.10. Estructura repetitiva “mientras”. En el caso de la estructura repetitiva “mientras”, se debe tener en cuenta los siguientes aspectos: 1°) Si a la primera evaluación la condición es falsa (F), elgrupo de instrucciones no se ejecutará ni una sola vez, es decir saltará directamente a la siguiente instrucción del bucle “mientras”. 2°) Si la condición en ningún momento se vuelve falso (F), el bucle se hace infinito, es decir, cuando se utiliza el bucle “mientras” se debe ener t cuidado en que de alguna forma la condición se haga falsa (F). La estructura repetitiva “mientras” en MATLAB tiene la siguiente estructura: while (condición) Instrucción 1; Instrucción 2; Instrucción 3; ⁞ Instrucción N; end A continuación desarrollaremos una aplicación de la estructura repetitiva “mientras”, en este caso desarrollaremos un programa para determinar la suma de N números enteros que se ingresan desde el teclado.
110
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
clc N=input('Ingrese número de datos: '); i=1; suma=0; while (i<=N) dato=input('Ingrese número: '); suma=suma+dato; i=i+1; end fprintf('Suma=%1d\n',suma);
Cuando se ejecuta para un valor de N=5 e ingresamos los datos 12, 17, 8, 30 y 18; sale lo siguiente: Ingrese número de datos: 5 Ingrese número: 12 Ingrese número: 17 Ingrese número: 8 Ingrese número: 30 Ingrese número: 18 Suma=85 d) Estructura repetitiva “para” (for --- end). La estructura repetitiva “para” se inicia con un “contador” que tiene un valor inicial (Vi) y un valor final (Vf) y que en cada iteración se incremente generalmente de uno en uno; pero en MATLAB se puede incrementar de dos en dos o de tres en tres, etc.; entonces la cantidad de veces que se ejecuta el bucle será mientras que el valor actual del “contador” sea menor o igual al valor final (Vf). En la estructura repetitiva “para” el incremento en cada iteración es automático. El diagrama de flujo de esta estructura es similar al de la estructura repetitiva “mientras” (ver Figura 4.10). La estructura repetitiva “para” en M ATLAB tiene la siguiente estructura: for (contador=Vi:Vf) Instrucción 1; Instrucción 2; Instrucción 3; ⁞ Instrucción N; end En el caso mostrado el contador se incremente de uno en uno desde el valor inicial (Vi) hasta llegar al valor final (Vf), si se quiere que el incremento sea de n en n la estructura sería:
CAPÍTULO IV: PROGRAMACIÓN EN MATLAB
111
for (contador=Vi:n:Vf) Instrucción 1; Instrucción 2; Instrucción 3; ⁞ Instrucción N; end En el caso que Vi sea mayor que Vf el valor de n debe ser negativo, y en este caso diremos que el valor del contador se decrementa de n en n. Para poder mostrar la diferencia, a continuación desarrollaremos la misma aplicación de la estructura repetitiva “mientras”, en este caso desarrollaremos un programa para determinar la suma de N números enteros que se ingresan desde el teclado pero utilizando la estructura repetitiva “para”. clc N=input('Ingrese número de datos: '); suma=0; for (i=1:N) dato=input('Ingrese número entero: '); suma=suma+dato; end fprintf('Suma=%1d\n',suma);
Cuando se ejecuta para un valor de N=5 e ingresamos los datos 24, 8, 12, 5 y 12; sale lo siguiente: Ingrese número de datos: 5 Ingrese número entero: 24 Ingrese número entero: 8 Ingrese número entero: 12 Ingrese número entero: 5 Ingrese número entero: 12 Suma=61 Un caso especial del uso de la estructura repetitiva “para”, que ningún lenguaje de programación lo tiene, es que MATLAB puede utilizar de lasiguiente manera: for (i=k) Instrucción 1; Instrucción 2; Instrucción 3; ⁞ Instrucción N; end
112
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Donde k es un array unidimensional (vector) con “n” elementos. Por ejemplo si definimos el array x=[2,3,7,4,5,-1] y deseamos ingresar individualmente a cada valor, el programa sería el siguiente: clc; k=[2,3,7,4,5 -1]; for i=k disp(i); end
Después de ejecutar el programa se muestra los siguientes resultados: 2 3 7 4 5 -1 El cual significa que el valor del contador “i” no se incrementa en forma secuencial, sino que en cada iteración elvalor de “i” va tomando valore s del vector “k”. 4.6. FUNCIONES DEFINADAS POR EL USUARIO. Todo lenguaje de programación tiene sus propias funciones internas, en este caso el MATLAB no es la excepción, en el capítulo II hemos tratado las principales funciones internas sin,(cos, ceil, sqrt, sum , etc.) del MATLAB. El MATLAB tiene más funciones internas desarrollados que otros lenguajes de programación, sin embargo hay algunas funciones especiales que no existen en MATLAB, por ejemplo para calcular el logaritmo de número en cualquier base; por lo tanto es necesario que el lector aprenda adiseñar sus propias funciones. Una función es una secuencia de instrucciones que se realizan con la finalidad de retornar un valor, aunque en MATLAB se puede diseñar funciones que devuelvan dos valores, tres valores, etc., incluso se pueden diseñar funciones que devuelvan varios valores almacenados en un vector (array unidimensional) o en una matriz (array bidimensional). Las funciones definidas por el usuario se almacenan como archivos-M y MATLAB accede a ellos cuando están almacenados en el directorio de trabajo del MATLAB.
CAPÍTULO IV: PROGRAMACIÓN EN MATLAB
113
a) Estructura de una función definida por e l usuario. La estructura de una función en MATLAB es la siguiente: function [variables_re torno]=nombre_funcion(lista_parametr os) Instrucción 1; Instrucción 2; Instrucción 3; ⁞ Instrucción N; variables_retorno; end Donde: [variables_retorno]
Puede ser una, dos o más variables (todos separados por comas); cada variable puede ser escalar, vector o matriz. También es necesario indicar que todas las variables de retorno, deben ser indicados dentro del desarrollo de la función, es decir, la función devolverá el último valor de cada variable almacenado dentro de la función.
nombre_funcion
Representa el nombre de la función el cual debe cumplir los mismos requisitos del nombre de una variable (ver capítulo I). Lo que se recomienda es que no se debe utilizar como nombre de la función aquellas que corresponden a las funciones internas del MATLAB.
(lista_parametros)
La lista de parámetros pueden ser una, dos o más variables (todos separados por comas), cada variable puede ser escalar, vector o matriz. La lista de parámetros son los datos de entrada a la función, del cual dependerán los resultados que devuelve la función.
Como ejemplo de aplicación diseñaremos una función que calcule el logaritmo en base “b”de cualquier número “N” a esta función lo llamaremos log bN, para ello utilizaremos la siguiente fórmula:
log g
Entonces el código de programación sería: function [y]=logbN(N,b) y=log10(N)/log10(b); end
114
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Nota: Las funciones se diseñan en la misma ventana donde se desarrollan los programas, es decir, para empezar a diseñar una función se presionar ctrl+N (ver ítme 4.1) y para usar una función en MATLAB se debe grabar con el mismo nombre de la función respetando minúsculas y mayúsculas (ver Figura 4.3), entonces en este caso debemos grabar con el nombre “logbN.m”, luego para probar el funcionamiento se debe ingresar los siguiente: >> x=logbN(8,2) %calcula el logaritmo de 8 en base 2. x= 3 >> y=logbN(20,4) %calcula el logaritmo de 20 en base 4. y= 2.1610 b) Funciones sin entrada o salida. Normalmente, las funciones necesitan por lo menos una variable como parámetro de entrada y retornan al menos un valor de salida, sin embargo en algunas situaciones no se necesitan ningún valor de entrada, y en algunos otros no se necesitan ningún valor de salida, este último caso se conoce como “procedimiento” enotros lenguajes de programación, la estructura de una función con estas características sería. Generalmente este caso se usa para definir constantes como el valor de pi (3,141592…). function [ ]=nombre_funcion( ) Instrucción 1; Instrucción 2; Instrucción 3; ⁞ Instrucción N; end Por ejemplo si deseamos crear una función que devuelva el valor de la velocidad de la luz, sería: function [y]=velocluz() y=3e8; end
Cuando se llama a la función el resultado que se muestra sería: >> ve locluz ans = 300000000
CAPÍTULO IV: PROGRAMACIÓN EN MATLAB
115
Otra aplicación de un “procedimiento” que es una función que no devuelve ningún valor sería 2+bx+c, entonces el código sería: para graficar una parábola de la forma ax function []=parabola(a,b,c,puntos) x=linspace(-5,5,puntos); y=a*x.^2+b*x-c; plot(x,y); grid on end
Entonces para graficar una parabola de la forma y=x2+4 con 8 puntos sería: >> parabola(1,0,4,8) En este caso el resultado que se obtendría sería el que se muestra en la Figura 4.11.
Figura 4.11. Ventana que muestra la parábola con 8 puntos. Si ejecutamos con 100 puntos sería el que se muestra en la Figura 4.12. >> parabola(1,0,4,100)
116
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Figura 4.12. Ventana que muestra la parábola con 100 puntos.
CAPÍTULO IV: PROGRAMACIÓN EN MATLAB
117
APLICACION ES DEL CAPÍTULO IV. 4.1. Elaborar un programa para determinar las raíces de una ecuación cuadrática de la forma Ax2+Bx+C=0 para el cual se utiliza las siguientes fórmulas:
El programa en MATLAB sería:
√2 4 √2 4
% raíces de una ecuación de la forma Ax2+Bx+C=0 clc; A=input('Ingrese A: '); B=input('Ingrese B: '); C=input('Ingrese C: '); x1=(-B+sqrt(B^2-4*A*C))/(2*A); x2=(-B-sqrt(B^2-4*A*C))/(2*A); fprintf('x1 =');disp(x1); fprintf('x2 =');disp(x2);
Cuando se ejecuta el programa para valores de A=1, B=5 y C=-20 se obtiene lo siguiente: Ingrese A: 1 Ingrese B: 5 Ingrese C: -20 x1 = 2.6235 x2 = -7.6235 4.2. Elaborar un programa para determinar el área del triángulo cuyos lados se deben ingresar desde el teclado; tener en cuenta que si los lados ingresados no corresponden a un triángulo debe salir el mensaje “Los lados no corresponden a un triángulo”.
118
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
% programa para calcular el área de un triángulo. clc a=input('Ingresa lado a: '); b=input('Ingresa lado b: '); c=input('Ingresa lado c: '); if (a+b>c & a+c>b & b+c>a) p=(a+b+c)/2; area=sqrt(p*(p-a)*(p-b)*(p-c)); fprintf('área=%1.2f\n',area); else fprintf('Los lados no corresponden a un triángulo'); end
Cuando se ejecuta el programa para valores de a=3, b=4 y c=5 se obtiene lo siguiente: Ingresa lado a: 3 Ingresa lado b: 4 Ingresa lado c: 5 área=6.00 Cuando se ejecuta el programa para valores de a=2, b=2 y c=100 se obtiene lo siguiente: Ingresa lado a: 2 Ingresa lado b: 2 Ingresa lado c: 100 Los lados no corresponden a un triángulo>>
BIBLIOGRAFÍA
119
120
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
CAPÍTULO V: GRÁFICOS EN M ATLAB
121
CAPÍT ULO V GRÁFICOS EN MATLAB La representación gráfica de cualquier serie de datos es uno de los aspectos muy importantes que tiene el MATLAB. Dispone de funciones para representar series de puntos, líneas, superficies, curvas de nivel, permite agrupar y superponer gráficos, realizar gráficos estadísticos, etc.; prácticamente cualquier cosa puede representarse gráficamente en MATLAB, ya que permite crear complejos gráficos bidimensionales y tridimensionales. Para hacer gráficos se utiliza una ventana especial para la creación de los gráficos que se llama “ventana gráfica” o de dibujo (ver Figura 5.1) en dicha ventana existen una barra de menús y la barra de herramientas con íconos que sirven para editar y mejorar los gráficos. Un ícono muy importante es para guardar los gráficos en ficheros de extensión“.fig” y con el ícono de abrir archivos se puede recuperar los gráficos guardados, además existe otrocono í para imprimir gráficos. Para poder copiar un gráfico y llevarlo al Word o Excel simplemente se debe ingresar al menú Edit/Copy Figure y pegarlo en la aplicación correspondiente utilizando ctrl-V.
Figura 5.1. Ventana gráfica del MATLAB. 5.1 GRÁFICAS BIDIMENSIONALES– 2D. Las gráficas más útiles para los ingenieros son los gráficos bidimensionales. Por las características propias del programa, los gráficos bidimensionales, están orientados a la representación gráfica de vectores.
122
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Para hacer gráficos bidimensionales en MATLAB se utiliza la función plot(x,y) ; donde x e y son vectores que tienen el mismo número de elementos, de tal manera que cada elemento xde corresponde al mismo elemento dey, por lo que se van formando pares ordenados de la forma (xi;yi) dondei represente el índice del vector correspondiente y la función plot va juntando los puntos a través de una línea en el sistema de coordenadas x,y, por ejemplo >> x=[-2,-1,2,4]; >> y=[-3,2,4,-1]; >>plot(x,y); % une los puntos (-2;-3), (-1;2), (2;4) y (4;-1) Luego sale el gráfico que se muestra en la Figura 5.2.
Figura 5.2. Grafico que muestra la unión de los puntos (3;1), (5;3), (2;-1) y (4;3). a) Gráficas de funciones de la forma y = f (x). - G ráfica de una recta de la forma y=ax+b. Para graficar una recta sólo es necesario conocer dos puntos en el plano cartesiano como se muestra en la Figura 5.3, para graficar esta recta que pasa por los puntos (0;-3) y (2;1) en MATLAB se procede dela siguiente manera: >> x=[0 2]; >> y=[- 3 1]; >> plot(x,y) El resultado de esta operación se muestra en la Figura 5.4.
CAPÍTULO V: GRÁFICOS EN M ATLAB
123
Figura 5.3. Gráfica de una recta conociendo dos puntos.
Figura 5.4. Gráfica de la recta de la Figura 5.3 en MATLAB. Observando las Figuras 5.3 y 5.4 podemos indicar que las escalas de los ejes x e y en la Figura 5.4 no son iguales, este problema se soluciona utilizando la sentencia axis“ equal” el que significa que los ejes son iguales; entonces las nuevas sentencias serían: >> x=[0 2]; >> y=[-3 1];
124
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
>> plot(x,y) >> axis equal
Figura 5.4. Gráfica de la recta de la Figura 5.3 en MATLAB con ejes iguales. Otra observación es que el MATLAB auto ajusta sus escalas al tamaño necesario, pero muchas veces, este detalle hace que los gráficos no sean tan explícitos por ello MATLAB tiene la sentencia“axis([x1 x2 y1 y2])” que define el área de la zona gráfica desde el punto (x1;y1) hasta el punto (x2;y2), es decir, la extensión del eje x es desde x1 hasta x2 y del eje y es desde y1 hasta y2. Entonces las nuevas sentencias serían: >> x=[0 2]; >> y=[- 3 1]; >> plot(x,y) >> axis equal >> axis([-5 6 -5 4]) %define el eje x desde -5 hasta 6 y el eje y desde -5 hasta 4. El resultado de esta aplicación se muestra en la Figura 5.5. Para retornar el áreadel gráfico a su estado por defecto se utiliza lasentencia “axis normal“. Por último, si queremos mejorar el gráfico se debe añadir las rejillas, el cual en MATLAB se activa con la sentencia “grid on” con el cual el gráfico se observaría tal como se muestra en la Figura 5.6; para desactivar la rejilla se utiliza la sentencia “grid off”.
CAPÍTULO V: GRÁFICOS EN M ATLAB
125
Figura 5.5. Gráfica de la recta de la Figura 5.3 en MATLAB con área definida. >> x=[0 2]; >> y=[- 3 1]; >> plot(x,y) >> axis equal >> axis([-5 6 -5 4]) %define el eje x desde -5 hasta 6 y el eje y desde -5 hasta 4. >>grid on;
Figura 5.6. Gráfica de la recta de la Figura 5.3 en MATLAB con rejilla.
126
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Después de este pequeño preámbulo muy necesario para comprender mejor los gráficos que genera MATLAB, desarrollaremos las sentencias necesarias para graficar una recta de la forma y=ax+b, donde los literales a y b representan a cualquier número real , entonces como se dijo anteriormente se debe generar dos vectores para x e y, por ello las sentencias graficar una recta sería la siguiente: >>x=linspace( -5,5,11); %genera 11 puntos desde el -5 al 5 >>y=2.*x-3; %gene ra 11 puntos para y=2x-3 >>plot(x,y); >>axis equal; >>axis([-6 6 -15 10 >>gr id on; Entonces se obtiene el gráfico que se muestra en la Figura 5.7.
Figura 5.7. Gráfico que representa a la recta y=2x-3. En algunas ocasiones las cuadrículas son muy grandes, entonces para hacer las cuadrículas más pequeñas se utiliza la sentencia g“ rid minor” y se obtendría la gráfica que se muestra en la Figura 5.8. >>grid minor;
CAPÍTULO V: GRÁFICOS EN M ATLAB
127
Figura 5.8. Gráfico que representa a la recta y=2x-3 con rejillas más pequeñas. - Gráfica de una función cuadrática de la formay=ax2+bx+c (parábola). La ecuación de segundo grado, también llamada ecuación cuadrática, se puede escribir de la forma y=ax2+bx+c, en donde las literales a, b y c representan a cualquier número real. El gráfico de este tipo le corresponde a una parábola. Si el coeficiente del término cuadrático es positivo, o sea a>0, la parábola se abre hacia arriba; si el coeficiente del término cuadrático es negativo, o sea a<0, la parábola se abre hacia abajo. A continuación desarrollaremos las sentencias necesarias para graficar una parábola de la 2
forma y=2x -4x+5. >> x=linspace(-4,6,100); >> y=2*x.^2-4*x+5; >> plot(x,y) >> axis([-5 7 0 60]) >> grid on >> grid minor
128
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Entonces se obtiene el gráfico que se muestra en la Figura 5.9.
Figura 5.9. Gráfico que representa a la parábola 2x y=2-4x+5. - Gráfica de una función cúbica de la formay=ax3+bx2+cx+d. La ecuación de tercer grado, también llamadaecuación cúbica, se puede escribir de la forma y=ax3+bx2+cx+d, en donde las literales a, b, c yd representan a cualquier número real. A continuación desarrollaremos las sentencias necesarias para graficar una función cúbica de la forma y=x3-6x2+2x-3. >> x=linspace(-1.5,6,100); >> y=x.^3-6*x.^2+2*x-3; >> plot(x,y) >> axis([-2 6.5 -30 12]) >> grid on >> grid minor Entonces se obtiene el gráfico que se muestra en la Figura 5.10.
129
CAPÍTULO V: GRÁFICOS EN M ATLAB
y=x3-6x2+2x-3. Figura 5.10. Gráfico que representa a la función cúbica - Gr áfica de funciones polinómicas de la forma y=anxn+an-1 xn-1 +an-2 xn-2+…+ao. En los dos ítems anteriores se estudiaron las gráficas de las funciones polinomiales de segundo grado (función cuadrática) y tercer grado (función cúbica). De igual forma, se podría hacer para las de cuarto grado, las de quinto grado, etc.. Los gráficos de las funciones de tercer grado en adelante se pueden hacer de manera generalizada, pues se cumplen en todas algunos aspectos básicos. Cuando se tiene una gráfica como la mostrada en la Figura 5.11, los puntos que dan la apariencia de ser como el más elevado de un cerro se llaman puntos máximos; en cambio, los puntos que dan la apariencia de ser la parte más baja como de un pozo se llaman puntos mínimos.
Figura 5.11.
130
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
En la Figura 5.11 hay dos puntos máximos (puntos A y C) y dos puntos mínimos (puntos By D), por lo tanto, en total hay cuatro puntos entre máximos y mínimos. En un polinomio de tercer grado hay dos máximos y mínimos (ver Figura 5.10); en un polinomio de cuarto grado existen tres máximos y mínimos, en un polinomio de quinto grado hay cuatro máximos y mínimos, etc.. Es decir, la gráfica de un polinomio de grado “n” debe tener-1”“nmáximos y mínimos. Otra característica de una gráfica polinomial es saber para dónde apuntan sus extremos. Si el polinomio es de grado par sus dos extremos se abren hacia el mismo lado; ambos hacia arriba si el coeficiente del primer término del polinomio es positivo (ver Figura 5.11) o ambos hacia abajo si dicho coeficiente es negativo. A continuación desarrollaremos las sentencias necesarias para graficar una función de cuarto grado de la formay=x4+x3-5x2-3. >> x=linspace(-2.5,2,100); >> y=x.^4+x.^3-5*x.^2-3; >> plot(x,y) >> axis([-3 2.5 -16 2]) >> grid on >> grid minor Entonces se obtiene el gráfico que se muestra en la Figura 5.11.
Figura 5.11. Gráfico que representa a la función de la forma y=x4+x3-5x2-3.
CAPÍTULO V: GRÁFICOS EN M ATLAB
131
- Gráfica de una función racional de la formay=1/p(x). En esta parte, solo estudiaremos las funciones racionales de la forma y=1/p(x), donde el denominador p(x) representa a cualquier polinomio tal que p(x)≠0, en este tipo de funciones aparecen los conceptos de asíntota, el cual es una recta a la cual una curva se acerca más y más sin llegar nunca a tocarla (ver Figura 5.12).
Figura 5.12. Gráficas de funciones racionales de la forma y=1/p(x). A continuación desarrollaremos las sentencias necesarias para graficar una función de cuarto grado de la formay=1/(2-x). >> x=linspace(-2,6,100); >> y=1./(2-x); >> plot(x,y) >> axis([-3 7 -25 25 >> grid on >> grid minor Entonces se obtiene el gráfico que se muestra en la Figura 5.13. A continuación desarrollaremos las sentencias necesarias para graficar una función de cuarto grado de la formay=1/(x2+x-12). >> x=linspace(-7,6,100); >> y=1./(x.^2+x-12); >> plot(x,y) >> plot(x,y)
132
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
>> axis([-8 7 -8 2 >> grid on >> grid minor Entonces se obtiene el gráfico que se muestra en la Figura 5.14.
Figura 5.13. Gráfico que representa a la función de la forma y=1/(2-x).
Figura 5.14. Gráfico que representa a la función de la forma y=1/(x2+x-12).
CAPÍTULO V: GRÁFICOS EN M ATLAB
133
- Gr áfica de una función sinusoidal de la forma y=a+b.sen(cx+ɸ). Este tipo de funciones tiene bastante aplicación dentro del campo de la ingeniería, especialmente en la ingeniería eléctrica, electrónica y mecatrónica. El sinusoide es la gráfica que corresponde a y=sen(x), donde “x” es un ángulo, y como los ángulos se miden en grados sexagesimales o en radianes, “x” puede cualquiera en de ambas unidades, para ello se debe tener en cuenta que en una circunferencia caben 360 grados sexagesimales y también2π radianes, por tanto 360°=2π radianes, la gráfica tradicional de la función y=sen(x) se muestra se muestra en la Figura 5.15. A la forma que se muestra en la Figura 5.15 se le llama “onda sinusoidal” y se observan las características de una función sinusoidal.
Figura 5.15. Gráfica tradicional de la función y=sen(x). A las características elementales que tiene la función y=sen(x), se puede añadir datos adicionales que modifican la onda sinusoidal tradicional, los cuales desarrollaremos a continuación en MATLAB. A continuación graficaremos en MATLAB la función y=sen(x), cuyas sentencias son las siguientes. >> x=linspace(0,360,100); >> y=sind(x); >> plot(x,y) >> axis([0 370 -1.25 1.25 >> grid on >> grid minor
134
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
En la Figura 5.16 se muestra la gráfica de la función y=sen(x) en MATLAB.
Figura 5.16. Gráfico que representa a la función de la forma y=sind(x). Para lograr un desplazamiento en el eje Y se añade un término independiente a la función srcinal, por ejemplo y=2+sen(x) cuya gráfica en MATLAB se muestra en la Figura 5.17, en el cual se aprecia el desplazamiento de 2 unidades en el eje Y hacia arriba. >> x=linspace(0,360,100); >> y=2+sind(x); >> plot(x,y); >> axis([0 370 -1.25 3.25 >> grid on; >> grid minor;
Figura 5.17. Gráfico que representa a la función de la forma y=2+sind(x).
CAPÍTULO V: GRÁFICOS EN M ATLAB
135
Para lograr un desplazamiento en el eje X se añade un ángulo independiente que sume o reste directamente a la variable “x”, por ejemplo y=sen(x +90) cuya gráfica en MATLAB se muestra en la Figura 5.18, en el cual se aprecia el desplazamiento de 90° hacia la derecha del eje X. >> x=linspace(90,450,100); >> y=sind(x+90); >> plot(x,y) >> axis([0 460 -1.25 1.25 >> grid on >> grid minor
Figura 5.18. Gráfico que representa a la función de la forma y=sind(x+90). La amplitud de la onda normal de la función y=sen(x) es desde -1 hasta 1 en el eje Y, sin embargo, se puede variar esta amplitud agregando un coeficiente al término sen(x). Por ejemplo y=3sen(x) cuya gráfica en MATLAB se muestra en la Figura 5.19, en el cual se aprecia que la amplitud de la onda es desde -3 hasta 3 en el eje Y. >> x=linspace(0,360,100); >> y=3*sind(x); >> plot(x,y) >> axis([0 370 -3.25 3.25 >> grid on >> grid minor
136
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Figura 5.19. Gráfico que representa a la función de la forma y=3sind(x). La frecuencia normal de una onda sinusoidal tienen una sola onda en el intervalo de 0° a 360° (de 0 a 2π rad), sin embargo, también se puede modificar la frecuencia aumentado un Por ejemplo y=sen(3x) cuya gráfica en MATLAB se coeficiente directamente a la variable “x”. muestra en la Figura 5.20, en el cual se aprec ia que lafrecuencia es de 3 ondas en el in tervalo de 0° a 360°. >> x=linspace(0,360,100); >> y=sind(3*x); >> plot(x,y) >> axis([0 370 -1.25 1.25 >> grid on >> grid minor
Figura 5.20. Gráfico que representa a la función de la forma y=sind(3x).
CAPÍTULO V: GRÁFICOS EN M ATLAB
137
En resumen podemos hacer una aplicación en MATLAB tomando en cuenta todo lo tratado con respecto a la función sinusoidal de la forma y=a+b.sen(cx+ɸ). Por ejemplo y=2+3sen(3x+90) cuya gráfica en MATLAB se muestra en la Figura 5.21, en el intervalo de 0° a 360°. >> x=linspace(0,360,100); >> y=2+3*sind(3*x+90); >> plot(x,y) >> axis([0 370 -1.50 5.50 >> grid on >> grid minor
Figura 5.21. Gráfico de la función sinusoidal de la forma y= y=2+3sind(3x+90). - G ráfica de una función por parte s. Para hacer gráficas de funciones por partes, se necesita utilizar las condiciones adecuadamente, además algo importante es que en este caso se tiene que hacer necesariamente un programa, se tienecrtl+N) que utilizar la sentencia ; en el siguiente se hará un programa (para elloque presionar para graficar laifsiguiente funciónejemplo siendo los valore de “x” desde-2 hasta 10.
< 0 {7 0≤<1 ≥1
El programa para hacer la gráfica correspondiente sería la siguiente:
138
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
clc clear x y x=linspace(-2,10,100); n=length(x); for (i=1:n) if (x(i)<0) y(i)=x(i)^2; elseif (x(i)<7) y(i)=sin(x(i)); else y(i)=x(i)-7; end end plot(x,y); axis([-3,11,-2,5 grid on grid minor
Cuando se ejecuta el programa sale la gráfica que se muestra en la Figura 5.22.
Figura 5.22. Gráfico una función por partes .
139
CAPÍTULO V: GRÁFICOS EN M ATLAB
b) Características especiales de la función plot . En este punto es necesario desarrollar algunos aspectos sobre la funciónplot ya que MATLAB permite realizar gráficas con el comandoplot ; esta función utiliza diferentes caracteres para mejorar la apariencia de una gráfica tales como color de línea, grosor de línea, etc., en el Cuadro 5.1 se muestra los caracteres especiales que permite utilizar la funciónplot . Cuadro 5.1. Características especiales de la función plot . Tipo de línea Tipo de punto Color linestyle Sólido (defecto) Rayada Punteada Raya - punto
Caracter -: -.
marker Círculo Marca x Marca + Estrella Punto Cuadrado Diamante Triángulo izquierda Triángulo derecha Pentagrama Hexagrama
Caracter o x + * . s d < > p h
color Azul Verde Rojo Cian (celeste) Magenta Amarillo Negro
Caracter b g r c m y k
Adicionalmente a estas sentencias y caracteres que tiene la función plot , también existe la sentencia linewidth (ancho de línea) cuyos valores pueden ser 0.5, 1, 1.5, 2, 2.5, …. Como ejemplo podríamos graficar la función seno con líneas punteadas, con una marca “x” en los puntos, de color rojo y con un ancho de línea de 2.5, entonces el formato general de la opción plot sería: >> x=[1,1,3,5,5,1]; >> y=[1,3,5,3,1,1]; >> plot(x,y,'linestyle' ,'--' ,'marker' ,'x','color','r' ,'linewidth',2.5) >> axis([0,6,0,6]) >> grid on Pero la funciónplot generaría lo mismo si se usara de la siguiente manera: >> plot(x,y,'--xr',' linewidth',2.5) %la sentencia linewidth es obligatorio. El gráfico sería el que se muestra en la Figura 5.23. Aquí es necesario aclarar que las sentencias linestyle , marker , color y linewidth es opcional, se puede usar indistintamente, cada una de las opciones, por ejemplo podemos usarla función plot así: >> plot(x,y,'-o') %color de línea y ancho de línea salen por defecto. >> axis([0,6,0,6]) >> grid on
140
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
El gráfico sería el que se muestra en la Figura 5.24.
Figura 5.23. Usos de la función plot(x,y,'linestyle','--','marker','x','color','r','linewidth',2.5).
Figura 5.24. Usos de la función plot(x,y,'-o').
CAPÍTULO V: GRÁFICOS EN M ATLAB
141
c) Gráfica de múltiples curvas con la funciónplot . En MATLAB es posible graficar múltiples curvas en la misma ventana de edición de la siguiente manera: >> x=linspace(0,2*pi,100); >> y1=sin(x); >> y2=sin(x-0.5); >> y3=sin(x-1); >> plot(x,y1,x,y2,x,y3); >> axis([0,7,-1.2,1.2]) >> grid on El resultado se muestra en la Figura 5.25, en el cual se disting ue las curvas solo por los coleres.
Figura 5.25. Gráfico de múltiples curvas. Pero también es posible utilizar estilos, colores y grosor de línea, tal como se muestra a continuación. >> x=linspace(0,2*pi,100); >> y1=sin(x); >> y2=sin(x-0.5); >> y3=sin(x-1);
142
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
>> plot(x,y1,x,y2,':r',x,y3,'--g','linewidth',1.5); >> axis([0,7,-1.2,1.2]) >> grid on >> grid minor El resultado se muestra en la Figura 5.26, en el cual se distingue las curvas por el estilo de línea y color de línea.
Figura 5.26. Gráfico de múltiples curvas con características de cada curva. Después de haber graficado una o más curvas, se puede añadir más curvas en el mismo eje, utilizando el comandohold on . A continuación al gráfico de la Figura 5.26 añadiremos dos gráficos que corresponden a la función coseno y valor absoluto, de la siguiente manera: >> hold on >> y4=cos(x); >> >> yplot(x,y4,'k'); 5=abs(x-2); >> plot(x,y5,':k','linewidth',2) El resultado se muestra en la Figura 5.27, en el cual se observa que se han incrementado dos curvas de color negro.
CAPÍTULO V: GRÁFICOS EN M ATLAB
143
Figura 5.27. Gráfico de múltiples curvas utilizando la sentenciahold on . Otras características importantes que tiene el MATLAB para hacer gráficas son las sentencias xlabel (permite poner nombre al eje X), ylabel (permite poner nombre al eje Y),title (permite poner título al gráfico),text (permite poner texto en una posición x,y) legend y (permite poner leyenda al gráfico). Para poder explicar y observar el funcionamiento de las sentencias mencionadas graficaremos el comportamiento de dos móviles A y B en un tiempo de 20 segundos que parten del reposo y cuyas aceleraciones son de 3 m/s2 y 5 m/s2 res pectivamente. Para ello utilizaremosla fórmula de cinemática:
Vf=Vo+a.t Entonces digitaremos lo siguiente: >> %tiempo de 0final a 20 >> t=0:20; vfA=0+3*t; . %Velocidad delsegundos móvil A >> vfB=0+5*t; %Velicidad final del móvil B. >> plot(t,vfA,'-xr',' linewidth',2) >> hold on >> plot(t,vfB,'-ok','linewidth',2) >> grid on >> title ('Cinemática - MRUV');
144
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
>> xlabel('T iempo (s)'); >> ylabel('Velocidad final (m/s)'); >> le gend('móvil A','móvil B' ,'location','northwest' ); %también puede usarnorth , south , east , west , northeast , southeast o southwest . >> text(16,24,'Leyenda'); El resultado de las sentencias anteriores se muestra en la Figura 5.28.
Figura 5.28. Gráfico utilizando todas las características de los gráficos en MATLAB. d) Gráfica e n múltiples v entanas (subgráficas). MATLAB permite graficar múltiples curvas en diferentes ventanas, pero en una sola pantalla, utilizando el comandosubplot(m ,n,k) que permite subdividir la ventana de graficación en “m” filas y “n” columnas; el parámetro “k”identifica el número de ventana donde se graficará la curva. Por ejemplo: >> x1=linspace(0,2*pi,100); >> y1=sin(x); >> y2=cos(x); >> x2=linspace(-5,5,100); >> y3=x2.^2-4; >> y4=x2.^3-4*x2-10; >> y5=-x2.^2+1;
CAPÍTULO V: GRÁFICOS EN M ATLAB
145
>> y6=abs(x2); >> subplot(3,2,1),plot(x1,y1),title('Función se no'),grid on >> subplot(3,2,2),plot(x1,y2),title('Función coseno'),grid minor >> subplot(3,2,3),plot(x2,y3),title('Función parábola'),grid minor >> subplot(3,2,4),plot(x2,y4),title('Función cúbica'),grid minor >> subplot(3,2,5),plot(x2,y5,'-.r'),title ('Función parábola') >> subplot(3,2,6),plot(x2,y6),title('Función valor absoluto') El resultado se muestra en la Figura 5.29 donde se observan 6 gráficos ya que con la sentencia subplot se ha indicado de 3x2 figuras.
Figura 5.29. Gráfica en múltiples ventanas en MATLAB. e) Curvas en pola res. Un concepto importante para dibujar curvas polares es conocer elplano polar que está divido de 0 a 2π(en radla o 360° (ver Figura y se puede círculos concéntricos desde 0 hasta el infinito Figura 5.30 solo 5.30) se muestra hastagraficar 8). La gráfica de una curva en coordenadas polares es de la forma r=f( ) donde ϵ[ ]. Un punto de la curva en polares (r, es la distancia “r” del srcen de coordenadas con un ángulo de”“ con respecto al eje polar, por ejemplo en la Figura 5.31 se representa el punto P(4,70°) en el plano polar.
146
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Figura 5.30. Representación del plano polar.
Figura 5.31. Representación del punto P(4,70°) en el plano polar. Para graficar el punto P(r,theta) en MATLAB se usa la función polar(theta,r) donde el primer parámetro “theta ” debe estar expresado en radianesy el segundo parámetro r“” es la distancia del srcen, para ello se debe crear dos vectores con el mismo número de elementos, por ejemplo si quisiéramos graficar los puntos (2.5,30°), (6,45°) y (4,70°) se haría de la siguiente manera la siguiente manera: >> theta=[30*pi/180,45*pi/180,70*pi/180]; %se convierte grados a radianes. >> r=[2.5,6,4]; >> polar(theta,r) El resultado se muestra en la Figura 5.32.
CAPÍTULO V: GRÁFICOS EN M ATLAB
147
Figura 5.32. Representación de los puntos (2.5,30°), (6,45°) y (4,70°) en el plano polar. En forma similar a la sentencia plot , la sentencia polar también tiene las mismas características especiales que se muestran en el Cuadro 5.1. Para aplicar estas características, graficaremos la función polarr=e0.25t con color rojo con líneas punteadas y con una marca “x”. >> t=linspace(0,2*pi,100); >> r= exp(0.25*t); >> polar(t,r,'--r') %con líneas punteadas y línea de color rojo. El resultado de estas características especiales se muestra en la Figura5.33. Otro ejemplo sería para determinar la curva de la función r=sen(0.8t) cuyas sentencias serían: >> t=linspace(0,10*pi,1000); >> r=sin(0.8*t); >> polar(t,r,'-b'); %grafica con líneas continuas de color azul. El resultado de estas características especiales se muestra en la Figura 5.34.
148
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Figura 5.33. Utilización de las características especiales de la funciónpolar.
Figura 5.34. Utilización de las características especiales de la funciónpolar.
CAPÍTULO V: GRÁFICOS EN M ATLAB
149
f) Funciones logarítmicas. Normalmente cuando se grafican funciones, los ejes x e y se dividen en intervalos igualmente espaciados, sin embargo muchas veces en aplicaciones de ingeniería, se utiliza escalas logarítmicas en uno o en ambos ejes, estos ejes fundamentalmente se utilizan para representar datos que varían exponencialmente;para ello MATLAB dispone de lasfunciones: . Genera una gráfica de valoresx e y , con una escala logarítmica parax y una escala lineal paray . semilogy (x, y) . Genera una gráfica de valoresx e y , con una escala logarítmica paray y una escala lineal parax . loglog(x,y) . Genera una gráfica de valores x e y , con una escala logarítmica parax e y . semilogx(x,y)
Para ver la diferencia entre cada una de las funciones mencionadas graficaremos la función y=3.5x2 con 100 puntos para x desde 0 hasta 50. >> x=linspace(0,50,100); >> y=3.5*x.^2; >> subplot(2,2,1);plot(x,y);grid minor;title('función plot'); >> subplot(2,2,2);semilogx(x,y);grid minor;title('función semilogx'); >> subplot(2,2,3);semilogy(x,y);grid minor;title('función semilogy'); >> subplot(2,2,4);loglog(x,y);grid minor;title('función loglog'); El resultado del uso de las funciones logarítmicas se muestra en la Figura 5.35.
Figura 5.35. Utilización de las funciones logarítmicas en MATLAB.
150
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
g) Funciones de gráficos especiales. En MATLAB existen muchas funciones especiales que grafican en el plano, ahora tocaremos algunos de ellos. La función compass(x,y) sirve para graficar un conjunto de vectores con srcen en (0,0) y cuya magnitud y dirección corresponden a un número imaginario de la forma z=x+yi . Por ejemplo para graficar los vectores A, B y C que se muestran en la Figura 5.36 utilizaremos la función com pass( x,y) .
Figura 5.36. Vectores en el plano cartesiano. Para graficar los vectores que se muestra en la Figura 5.36 en MATLAB se procede de la siguiente manera: >> x=[-5,6,4.5]; %Parte real de los vectores A, B y C >> y=[3,5,-3.5]; %Parte imaginaria de los vectores A, B y C >> compass(x,y); El resultado se muestra en la Figura 5.37.
CAPÍTULO V: GRÁFICOS EN M ATLAB
151
Figura 5.37. Uso de la funcióncompass . La función fill(x,y,c) grafica una función y rellena la gráfica con un color que se indica con el parámetro c (los colores son los mismos de la función plot – ver Cuadro 5.1). Por ejemplo para graficar la función y=sen(x) utilizaremos la función fill(x,y,c) . >> x=linspace(0,2*pi,100); >> y=sin(x); >> subplot(2,1,1); >> plot(x,y,'r'); >> grid on >> grid minor >> subplot(2,1,2); >> fill(x,y,'r'); %rellena con color rojo. >> grid on >> grid minor El resultado se muestra en la Figura 5.38. Aquí es necesario explicar que el parámetro c de la función fill también puede tener combinaciones de colores de la siguiente manera: >> fill(x,y,[0 0 0 >> fill(x,y,[1 0 0 >> fill(x,y,[0 1 0 >> fill(x,y,[0 0 1
%rellena con color negro. %rellena con color rojo. %rellena con color verde. %rellena con color azul.
152
– FIEE UNCP
Rubén Galeas
>> fill(x,y,[1 1 1
– Juan Arellano – Hernán Juan de Dios
%rellena con color blanco.
Entonces variando los tres números desde 0 hasta 1 se puede combinar los colores rojo, verde y azul para obtener nuevos colores, por ejemplo: >> fill(x,y,[0.9 0.9 0.9];
%rellenaría con color plomo bajo.
Figura 5.38. Comparación de las sentenciasplot y fill . 5.2 GRÁFICAS TRIDIMENSIONAL - 3D. MATLAB tiene una gran variedad de funciones para hacer gráficas tridimensionales, algunas de las cuales desarrollaremos a continuación, se recomienda al lector que pueda explorar con más profundidad las numerosas posibilidades de representación gráfica que ofrece MATLAB. a) Curvas en el espacio. Las curvas en el espacio se generan de forma similar a las curvas en el plano, por ejemplo existe la funciónplot3(x,y,z) que sirve para hacer líneas en 3D, por ejemplo graficaremos la recta que une los puntos (2;0;0) y (4;3;5) que se muestra en la Figura 5.39.
CAPÍTULO V: GRÁFICOS EN M ATLAB
153
Figura 5.39. Puntos de una línea en 3D. Para graficar la línea que se muestra en la Figura 5.39 en MATLAB se procede de la siguiente manera: >> x=[2,4]; >> y=[0,3]; >> z =[0,5]; >> plot3(x,y,z) >> grid on >> xlabel('Ej e x') >> ylabel('Eje y') >> zlabel('Ej e z' ) El resultado se muestra en la Figura 5.40.
Figura 5.40. Gráfico de una línea en 3D con la función plot3 .
154
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Otro ejemplo es para graficar un resorte, para ello se utiliza las siguientes sentencias: >> x=linspace(0,10*pi,2000); >> y=sin(x); >> z=cos(x); >> plot3(x,y,z); >> grid on >> grid minor >> xlabel('Ej e x') >> ylabel(' Función sen(x)') >> z label('Función cos(x)') El resultado se muestra en la Figura 5.41.
Figura 5.41. Gráfico de un resorte en 3D con la función plot3 . Similar al plot en 2D, también enplot3 se puede utilizar las mismas características especiales como son tipo de línea linestyle ( ), tipo de punto m ( arker ), color de línea c( olor ) tal como se
CAPÍTULO V: GRÁFICOS EN M ATLAB
155
muestra en el Cuadro 5.1, adicionalmente se puede utilizar la sentencia linewidth para el ancho de la línea. En el siguiente ejemplo se puede observar dichas características. >> x=linspace(0,10*pi,2000); >> y=sin(x); >> z =cos(x); >> plot3(x,y,z,'-r' ,'linewidth',4) %Dibuja un espiral con líneas continuas de color rojo con un ancho de 4. >> grid on >> grid minor El resultado se muestra en la Figura 5.42.
Figura 5.42. Uso de la funciónplot3 con sus características especiales. b) Gr áficas de funciones de la forma z = f(x;y). Para graficar funciones de la forma z=f(x;y), al igual que para funciones de una variable (se debe generar un vector parax), para dos variables debemos generar dos matrices, uno para
– FIEE UNCP
156
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
y otro para y , y con dichas matrices se genera un mallado sobre un rectángulo del plano XY con la función meshgrid . Por ejemplo para graficar la siguiente función: x
−(+)
En la región del plano D={(x,y)/2- ≤ x ≤ 2, -2 ≤ y ≤ 2)
Se debe realizar los siguientes pasos. >> [x,y]=meshgrid(-2:0.5:2); Con la función meshgrid internamente se han generado dos matrices x e y cuyos valores se muestran a continuación.
Luego para cada valor de las matrices x e y se calculan los valores de z. >> z=e xp(-(x.^2+y.^2));
CAPÍTULO V: GRÁFICOS EN M ATLAB
157
Ahora como ya tenemos los valores de x , y y z; utilizaremos las funcionesplot3 , mesh y surf en una misma gráfica utilizando la función subplot , tal como se muestra a continuación. >> subplot(2,2,1);plot3(x,y,z);grid minor >> subplot(2,2,2);mesh(x,y,z);grid minor >> subplot(2,2,3);surf(x,y,z);grid minor >> subplot(2,2,4);surf(x,y,z),shading flat;grid minor El resultado se muestra en la Figura 5.43.
Figura 5.43. Uso de las funcionesplot3 , mesh y surf . En la Figura 5.43 se observa los gráficos pero no tan acabados, debido a que se considerado solo matrices de 9x9 (-2:0.5:2), entonces si queremos hacer gráficos con acabados más finos se deben hacer mallas con más puntos como a continuación desarrollaremos con matrices de 50x50. >> [x,y]=meshgrid(linspace(-2,2,50)); >> z=e xp(-(x.^2+y.^2));
158
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
>> mesh(x,y,z); >> grid minor >> xlabel('Eje x'); >> ylabel('Eje y'); >> zlabel('Eje z'); El resultado se muestra en la Figura 5.44.
Figura 5.44. Uso de la funciónmesh con un mejor acabado. Ahora aplicaremos para la función surf , cuyas sentencias serían: >> [x,y]=meshgrid(linspace(-2,2,50)); >> z=e xp(-(x.^2+y.^2)); >> surf(x,y,z); >> xlabel('Eje x'); >> ylabel('Eje y'); >> zlabel('Eje z'); >> grid minor
CAPÍTULO V: GRÁFICOS EN M ATLAB
159
El resultado se muestra en la Figura 5.45.
Figura 5.45. Uso de la funciónsurf con un mejor acabado. Ahora aplicaremos para la función surf con sombra (shading flat ) que le da mejor acabado, cuyas sentencias serían: >> [x,y]=meshgrid(linspace(-2,2,50)); >> z=e xp(-(x.^2+y.^2)); >> surf(x,y,z),shading flat; >> grid minor >> >> xlabel('Eje ylabel('Eje yx'); '); >> zlabel('Eje z' ); El resultado se muestra en la Figura 5.46.
160
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Figura 5.46. Uso de la funciónsurf con shading flat
con un mejor acabado.
Una función importante es la función contour y contour3 que sirve para hacer curvas de nivel. A continuación desarrollaremos una aplicación de cada uno. >> [x,y]=meshgrid(linspace(-2,2,50)); >> z=e xp(-(x.^2+y.^2)); >> contour(x,y,z,25); %Genera 25 curvas de nivel en el plano xy. >> axis equal Y para la funcióncontour3 sería: >> [x,y]=meshgrid(linspace(-2,2,50)); >> z=e xp(-(x.^2+y.^2)); >> contour3(x,y,z,25); Los resultados de las funcionescontour y contour3 , se muestran en las Figuras 5.47 y 5.48 respectivamente.
CAPÍTULO V: GRÁFICOS EN M ATLAB
Figura 5.47. Uso de la funcióncontour con 25 curvas de nivel.
Figura 5.48. Uso de la funcióncontour3 con 25 curvas de nivel.
161
162
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
c) Algunas superficies conocidas en el espacio. Un gráfico importante es el gráfico de una esfera, para ello MATLAB tiene la función sphere(n) , donde n es el número de puntos en los que queda dividido el ecuador de la esfera, este valor por defecto es 20; para graficar una esfera se procede de la siguiente manera: >> sphere; >> axis equal; >> grid minor; El resultado se muestra en la Figura 5.49.
Figura 5.49. Uso de la funciónsphere con n=20 (por defecto). Si probamos con n=10 se obtiene lo siguiente: >> sphere(10); >> axis equal; >> grid minor;
CAPÍTULO V: GRÁFICOS EN M ATLAB
163
El resultado se muestra en la Figura 5.50.
Figura 5.50. Uso de la funciónsphere con n=10. Otro gráfico importante es el gráfico de un cilindro, para ello MATLAB tiene la función cylinder(r,n) , donde r es el radio del cilindro yn es el número caras del cilindro, este valor por defecto es 20 y la altura del cilindro siempre será 1; para graficar un cilindro se procede de la siguiente manera: >> cylinder; >> axis minor; equal; >> grid El resultado se muestra en la Figura 5.51.
164
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Figura 5.51. Uso de la funcióncylinder con r=1 y n=20 (por defecto). Si probamos con r=5 y n=10 se obtiene lo siguiente: >> cylinder(5,10); >> grid minor; El resultado se muestra en la Figura 5.52.
Figura 5.52. Uso de la funcióncylinder con r=5 y n=10.
CAPÍTULO V: GRÁFICOS EN M ATLAB
165
5.4 GRÁFICAS EN MOVIMEINTO (MOVIES). Una característica importante que tiene el MATLAB es generar gráficas en movimiento, esto lo hace fotograma a fotograma (frames) dando la sensación de movimiento, para ello MATLAB dispone de las funcionesmoviein , getframe y movie ; La función moviein(n) reserva memoria para almacenar n fotogramas (frames); la función getframe no tiene parámetros y devuelve una matriz columna con la información necesaria para reproducir la imagen de la ventana gráfica activa y la función m ovie( M,n, fps) donde M es la cantidad de memoria reservada con la función moviein, que reproduce la películan veces y fp s (frames per second) representa la velocidad de fotogramas por segundo (por defecto es de 12). Para comprender mejor la generación de movimientos en MATLAB desarrollaremos una función llamada movimiento (recuerde abrir el editor de programas ctrl+N), ver Figura 5.53. function []=movimiento(n) % n espacio de memoria-recomendable n>20 M=moviein(n); x=linspace(0,2*pi,1000); for (i=1:n) y=i*sin(x*i/3); plot(x,y); axis([0,7,-n,n M(:,i)=getfram e; end end
movie(M,2,5);
Figura 5.53. Resultado final después de ejecutar la función movimiento.
166
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
APLICACION ES DEL CAPÍTULO V. 5.1. Elaborar un programa para graficar una recta cuyas coordenadas (x1;y1) y (x2;y2) se deben ingresar desde el teclado (no olvide que para hacer un programa tiene que abrir el editor de programas presione ctrl+N). El programa sería. clc; x1=input('Ingrese x1: '); y1=input('Ingrese y1: '); x2=input('Ingrese x2: '); y2=input('Ingrese y2: '); x=[x1,x2]; y=[y1,y2]; plot(x,y); axis([min(x)-1,max(x)+1,min(y)-1,max(y)+1 grid on; grid minor;
Cuando se ejecuta el programa para graficar una recta desde (2;5) a (10;-2), el resultado es el siguiente. Ingrese x1: 2 Ingrese y1: 5 Ingrese x2: 10 Ingrese y2: -2
5.2. ingresar Diseñar como una función paradegraficar una recta cuyas coordenadas (x1;y1) y (x2;y2) se deben parámetros la función. La función sería. function []=recta(x1,y1,x2,y2) x=[x1,x2]; y=[y1,y2]; plot(x,y); end
CAPÍTULO V: GRÁFICOS EN M ATLAB
167
Cuando se ejecuta la función para graficar una recta desde (2;5) a (10;-2), sería: >> recta(2,5,10,-2)
Nota. A diferencia de un programa, en una función normalmente no se debe utilizar sentencias axis, grid, text, etc.; si esas sentencias son necesarias se debe hacer desde le prompt (>>) tal como se muestra a continuación. >> >> recta(2,5,10 grid on; ,-2) %ejecución de la función. >> g rid minor; >> axis([1,11,-3,6 >> text(2.5,5,'(2;5)'); >> text(10,-2,'(10;-2)'); >> title('Gráfico de una recta');
168
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
5.3. Elaborar un programa para graficar una parábola con vértice en el punto (h;k) y el foco esté ubicado a una distancia “p” del vértice (ver siguiente figura); los valores de h, k y p se deben ingresar desde el teclado.
El programa sería. clc; clear x y; h=input('Ingrese la abscisa del vértice (h): '); k=input('Ingrese la ordenada del vértice (k): '); p=input('Ingrese distancia del vértice al foco (p): '); x=linspace(h-5,h+5,100); y=(x-h).^2/(4*p)+k; %se despeja y de la forma general plot(x,y); grid on; grid minor; axis([min(x)-1,max(x)+1,min(y)-1,max(y)+1
Cuando se ejecuta el programa para graficar una parábola con vértice en el punto (3;-1) y el foco ubicado a una distancia 3 del vértice, el resultado sería: Ingrese la abscisa del v értice (h): 3 Ingrese la ordenada del vértice (k): -1 Ingrese distancia del vé rtice al foco (p): 3
CAPÍTULO V: GRÁFICOS EN M ATLAB
169
5.4. Diseñar una función para graficar una parábola del ejemplo anterior con vértice en el punto (h;k) y el foco esté ubicado a una distancia “p” del vértice; los datos h, k y p deben ser . La función sería. function []=parabola(h,k,p) x=linspace(h-5,h+5,100); y=(x-h).^2/(4*p)+k; plot(x,y); end
Cuando se ejecuta la función parábola con vértice(3;-1) y foco igual a 3, sería: >> parabola(3,-1,3)
170
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
5.5. Elaborar un programa para graficar una circunferencia de color rojo con centro en el srcen de coordenadas, cuyo radio se debe ingresar desde el teclado. El programa sería. clc; radio=input('Ingrese radio: '); x=linspace(-radio,radio,100); y=sqrt(radio.^2-x.^2); plot(x,y,x,-y,'color','r') axis equal; axis([-radio-1,radio+1,-radio-1,radio+1 grid on; grid minor;
Cuando se ejecuta el programa con radio=10, el resultado es el siguiente. Ingrese radio: 10
Otra forma de programar una circunferencia sería el siguiente: clc; radio=input('Ingrese radio: '); t=linspace(0,2*pi,100); x=radio*cos(t); y=radio*sin(t); plot(x,y,'-r') axis equal
CAPÍTULO V: GRÁFICOS EN M ATLAB
171
axis([-radio-1,radio+1,-radio-1,radio+1 grid on grid minor
5.6. Diseñar una función para graficar una circunferencia del ejemplo anterior con centro en el punto (0;0) cuyo radio y color se debe ingresar como parámetros de la función. (Nota: el color se debe ingresar con los mismos caracteres de la funciónplot que se muestra en el Cuadro 5.1). La función sería. function []=circunferencia(radio,color) t=linspace(0,2*pi,100); x=radio*cos(t); y=radio*sin(t); plot(x,y,color); axis equal; end
5.7. Diseñar una función para graficar una circunferencia del ejemplo anterior pero con centro en el punto (xc;yc) cuyos valores de xc, yc, radio y color se debe ingresar como parámetros de la función. (Nota: el color se debe ingresar con los mismos caracteres de la funciónplot que se muestra en el Cuadro 5.1). La función sería. function []=circunferenciaxy(xc,yc,radio,color) t=linspace(0,2*pi,100); x=xc+radio*cos(t); y=yc+radio*sin(t); plot(x,y,color); end
172
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
Cuando se ejecuta la función con centro en (3;1), radio=10 y color rojo, sería: >> circunferenciaxy(3,1,10,'r') >> axis equal >> grid on >> grid minor
5.8. Diseñar una función para graficar un círculo con centro en el punto (xc;yc) cuyos valores de xc, yc, radio y color se debe ingresar como parámetros de la función. (Nota: un círculo es una circunferencia rellenada y se usa la función fill ). La función sería. function []=circuloxy(xc,yc,radio,color) t=linspace(0,2*pi,100); x=xc+radio*cos(t); y=yc+radio*sin(t); fill(x,y,color); end
Cuando se ejecuta la función con centro en (3;1), radio=10 y color rojo, sería: >> circuloxy(3,1,10,'r') >> axis equal >> grid on >> grid minor
CAPÍTULO V: GRÁFICOS EN M ATLAB
173
5.9. Diseñar una función para graficar una elipse con relleno con centro en el punto (xc;yc) cuyos valores de xc, yc, radio horizontal y radio vertical y color se debe ingresar como parámetros de la función. La función sería. function []=elipsexy(xc,yc,radiox,radioy,color) t=linspace(0,2*pi,100); x=xc+radiox*cos(t); y=yc+radioy*sin(t); fill(x,y,color); axis equal; end
Cuando se ejecuta la función con centro en (3;3), radiox=10, radioy=5 y color amarillo, sería: >> elipsexy(3,3,10,5,'y'); >> grid on; >> g rid minor;
174
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
5.10. Diseñar una función para graficar “n” hojas en un plano polar. La función sería. function []=hojas(n) t=linspace(0,2*pi,1000); r=sqrt(cos(n*t)); polar(t,r); end
Cuando se ejecuta la función con 4 hojas sería:
Cuando se ejecuta la función con 8 hojas sería:
5.11. Diseñar una función para graficar una rosa con “n” pétalos en un plano polar. La función sería.
CAPÍTULO V: GRÁFICOS EN M ATLAB function []=rosa(n) t=linspace(0,2*pi,1000); r=2+cos(n*t); polar(t,r); end
Cuando se ejecuta la función con 5 pétalos sería:
5.12. Diseñar una función parasimular la gráfica de cerros con “n” cerros. La función sería. function []=cerros(n) t=linspace(-n,n,100); [x,y]=meshgrid(t); z=n.*sin(x).*sin(y); surf(x,y,z); xlabel('Eje x'); ylabel('Eje y'); zlabel('Eje z'); grid minor end
Cuando se ejecuta la función con 4 cerrossería:
175
176
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
5.13. Diseñar una función para graficar un paraboloide con radio en la base (rmenor) y radio en la salida (rmayor) dichos valores se deben ingresar como parámetros de la función. La función sería. function []=paraboloide(rmenor,rmayor) t=linspace(rmenor,rmayor,20); r=sqrt(t); cylinder(r); end
Cuando se ejecuta la función con radio menor=0 y radio mayor=5 sería: >> paraboloide(0,5);
Cuando se ejecuta la función con radio menor igual=1 y radio mayor=10 sería: >> paraboloide(1,10);
CAPÍTULO V: GRÁFICOS EN M ATLAB
177
5.14. Diseñar una función que devuelva el tiempo y la altura del cual se debe lanzar un objeto, además la función debe graficar el movimiento de una partícula que se lanza con una velocidad inicial (vo), el ángulo (ang) y a una distancia (dx) cuyos datos deben ser los parámetros de la función. La función sería. function [tiempo,h]=lanzamientoproyectil(vo,ang,xd) g=9.81; %gravedad tiempo=xd/(vo*cosd(ang)); t=linspace(0,tiempo,100); x=vo*cosd(ang)*t; y=vo*sind(ang)*t-g*t.^2/2; h=y(end); for (i=1:100) plot(x,y,x(i),y(i),'or'); pause(0.025); end end
Cuando se ejecuta la función con vo=25 m/s, ang=75° y xd=30 m sería: >> [t,h]=lanzamientoproyectil(25,75,30) t= 4.6364 h= 6.5206 Y el gráfico se muestra en la siguiente figura.
178
– FIEE UNCP
Rubén Galeas
– Juan Arellano – Hernán Juan de Dios
BIBLIOGRAFÍA
179
BIBLIOGRAFÍA. 1. Schilling, R. y Harris, S. (2012).Fundamentals of digital signal processing using MATLAB. USA. Editorial RPK. 2. Moore, H. (2007).MATLAB para ingenieros. México. Editorial Pearson. 3. Arboleda, D. y Álvarez, R. (2006).Matlab, aplicaciones a las matemáticas básicas . Medellín. Editorial Universidad de Medellín-Colombia. 4. Escalante, R. (2006). Curso introductorio de MATLAB. Venezuela. Editorial Equinoccio. 5. Gilat, A. (2005).Matlab, una introducción con ejemplos prácticos. Barcelona. Editorial Reverté S.A. 6. Hunt, B. y Lipsman, R. y Rosenberg, J. (2002). A Guide to MATLAB for beginners and experienced users . USA. Editorial Cambridge. 7. Quintela, P. (2000).Matemáticas en Ingeniería con MATLAB. USA. Editorial de la Universidad de Santiago de Compostela. PÁGINAS WEB. http://www.sc.ehu.es/sbweb/energias-renovables/MATLAB/basico/portada/portada.html http://arantxa.ii.uam.es/~iama/graficos.pdf file:///C:/Users/Admin/Downloads/tema_2_graficos_en_matlab-5150.pdf http://www.fic.umich.mx/~lcastro/4%20graficas.pdf http://minisconmatlab.blogspot.pe/2010/10/como-dibujar-circulos-y-poligonos.html