Top Banner

of 175

MATLAB Andres Perez (2ed)

Oct 15, 2015

Download

Documents

elperrosavio
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
  • Andrs Prez

    2da Edicin

    MATLAB Orientado a la matemtica aplicada

  • Universidad Centroccidental

    Lisandro Alvarado

    Decanato de Ciencias y Tecnologa

    Licenciatura en Ciencias Matemticas

    Barquisimeto. Estado Lara

    MATLAB Orientado a la matemtica aplicada

    Segunda Edicin

    Andrs E. Prez G.

    E-mail: [email protected]

    Barquisimeto. Marzo de 2014

  • A Dios Todopoderoso, mi fuente de lux et veritas.

  • MATLAB Orientado a la matemtica aplicada

    CONTENIDO INTRODUCCIN ......................................................................................................................................... 11

    OBJETIVO ........................................................................................................................................................... 11

    JUSTIFICACIN ................................................................................................................................................... 11

    COMO UTILIZAR ESTE TUTORIAL? ................................................................................................................... 11

    CAPITULO 1. COMENZANDO A TRABAJAR CON MATLAB ............................................................................. 12

    TPICOS ELEMENTALES ..................................................................................................................................... 12

    Qu es MATLAB? ......................................................................................................................................... 12

    Origen ............................................................................................................................................................ 12

    Versiones e historia ....................................................................................................................................... 12

    Qu versin estamos utilizando en este tutorial? ....................................................................................... 12

    ENTORNO DE TRABAJO DE MATLAB ................................................................................................................. 13

    La ventana de comandos ............................................................................................................................... 14

    La ventana de historial de comandos ............................................................................................................ 14

    La ventana de directorio actual ..................................................................................................................... 15

    La ventana de ayuda ...................................................................................................................................... 15

    NMEROS, OPERADORES Y VARIABLES ............................................................................................................ 16

    Operaciones bsicas ...................................................................................................................................... 16

    Creacin de variables .................................................................................................................................... 16

    Funciones matemticas elementales de MATLAB ........................................................................................ 18

    Algunos nmeros especiales ......................................................................................................................... 20

    VECTORES .......................................................................................................................................................... 21

    MATRICES .......................................................................................................................................................... 24

    GUARDANDO, BORRANDO Y LEYENDO ............................................................................................................. 28

    El fichero MATLAB.mat .................................................................................................................................. 28

    Ficheros .mat ................................................................................................................................................. 29

    Ficheros .ascii ................................................................................................................................................. 29

    LTIMAS ACLARACIONES PARA TRABAJAR EN MATLAB ................................................................................... 31

    Tips................................................................................................................................................................. 31

    El punto y coma (;) ......................................................................................................................................... 31

    El smbolo % ................................................................................................................................................... 31

    4

  • Andrs Prez

    El comando clc ............................................................................................................................................... 32

    Algunas reglas bsicas de sintaxis ................................................................................................................. 32

    EJERCICIOS 1 ...................................................................................................................................................... 33

    CAPITULO 2. ALGORITMOS ......................................................................................................................... 35

    COMANDO if ...................................................................................................................................................... 36

    Comando if simple ......................................................................................................................................... 36

    Comando if mltiple ...................................................................................................................................... 37

    COMANDO for ................................................................................................................................................... 38

    Comando for simple ...................................................................................................................................... 38

    Comando for con especificacin de incremento ........................................................................................... 39

    Anidamiento de comandos for ...................................................................................................................... 39

    COMANDO while ............................................................................................................................................... 40

    EJERCICIOS 2 ...................................................................................................................................................... 42

    CAPITULO 3. M-Ficheros ............................................................................................................................. 44

    FICHEROS SCRIPT ............................................................................................................................................... 46

    Paso 1: acceder al editor ............................................................................................................................... 46

    Paso 2: estructurar el fichero ........................................................................................................................ 47

    Paso 3: guardar el fichero .............................................................................................................................. 47

    Paso 4: ejecutar el fichero ............................................................................................................................. 48

    Realmente que es un fichero script? ........................................................................................................... 49

    FICHEROS DE FUNCIN ..................................................................................................................................... 51

    Paso 1: acceder al editor ............................................................................................................................... 51

    Paso 2: estructurar el fichero ........................................................................................................................ 51

    Paso 3: guardar el fichero .............................................................................................................................. 53

    Paso 4: ejecutar el fichero ............................................................................................................................. 53

    Realmente que es un fichero de funcin? ................................................................................................... 54

    EL COMANDO help ............................................................................................................................................ 54

    COMPARATIVA ENTRE UN FICHERO SCRIPT Y UN FICHERO DE FUNCIN ........................................................ 55

    EJERCICIOS 3 ...................................................................................................................................................... 57

    CAPITULO 4. CLCULO SIMBLICO.............................................................................................................. 61

    FUNCIONES ........................................................................................................................................................ 61

    ECUACIONES ...................................................................................................................................................... 63

    5

  • MATLAB Orientado a la matemtica aplicada

    LMITES .............................................................................................................................................................. 66

    DERIVADAS ........................................................................................................................................................ 67

    INTEGRALES ....................................................................................................................................................... 68

    EJERCICIOS 4 ...................................................................................................................................................... 71

    CAPITULO 5. GRFICOS .............................................................................................................................. 75

    GRFICOS EN 2D ................................................................................................................................................ 75

    Graficando funciones del tipo y=f(x) ............................................................................................................. 75

    Graficando curvas paramtricas en el plano ................................................................................................. 77

    GRFICOS EN 3D ................................................................................................................................................ 79

    Graficando funciones del tipo z=f(x,y) .......................................................................................................... 79

    Graficando curvas paramtricas en el espacio .............................................................................................. 82

    EJERCICIOS 5 ...................................................................................................................................................... 84

    CAPITULO 6. ESTADSTICA .......................................................................................................................... 86

    MEDIDAS DE LOCALIZACIN ............................................................................................................................. 86

    Media aritmtica ........................................................................................................................................... 86

    Media geomtrica ......................................................................................................................................... 87

    Media armnica ............................................................................................................................................. 88

    Media ajustada .............................................................................................................................................. 89

    Mximo .......................................................................................................................................................... 89

    Mnimo .......................................................................................................................................................... 90

    Mediana ......................................................................................................................................................... 91

    MEDIDAS DE DISPERSIN .................................................................................................................................. 91

    Desviacin estndar ...................................................................................................................................... 91

    Varianza ......................................................................................................................................................... 92

    Rango ............................................................................................................................................................. 92

    Rango intercuartil .......................................................................................................................................... 93

    Percentil ......................................................................................................................................................... 93

    Quantil ........................................................................................................................................................... 94

    Oblicuidad ...................................................................................................................................................... 94

    Curtosis .......................................................................................................................................................... 95

    Tabla con las frecuencias absolutas y relativas ............................................................................................. 95

    Desviacin absoluta ....................................................................................................................................... 96

    6

  • Andrs Prez

    Momentos centrales...................................................................................................................................... 97

    GRUPOS DE DATOS ............................................................................................................................................ 97

    Matriz de covarianza ..................................................................................................................................... 97

    Matriz de correlacin lineal ........................................................................................................................... 98

    Matriz de los coeficientes de correlacin ...................................................................................................... 98

    Matriz con tabulacin-cruzada .................................................................................................................... 100

    Resumen estadstico por grupo ................................................................................................................... 100

    GRFICOS ESTADSTICOS ................................................................................................................................. 101

    Grficos simples ........................................................................................................................................... 102

    Lnea de ajuste de mnimos cuadrados ....................................................................................................... 103

    Histograma .................................................................................................................................................. 104

    Grfico de barras verticales ......................................................................................................................... 105

    Grfico de barras horizontales .................................................................................................................... 106

    Grfico de escaleras..................................................................................................................................... 107

    Grfico de tallo ............................................................................................................................................ 108

    Grfico de tarta ............................................................................................................................................ 109

    Generacin de nmeros al azar ................................................................................................................... 110

    Diagramas de distribuciones de probabilidad ............................................................................................. 111

    EJERCICIOS 6 .................................................................................................................................................... 112

    CAPTULO 7. OPTIMIZACIN ..................................................................................................................... 114

    PROGRAMACIN LINEAL ................................................................................................................................. 114

    Formato general de un programa lineal ...................................................................................................... 114

    Minimizacin ............................................................................................................................................... 115

    Maximizacin ............................................................................................................................................... 118

    PROGRAMACIN CUADRTICA ....................................................................................................................... 121

    EJERCICIOS 7 .................................................................................................................................................... 127

    CAPTULO 8. MTODOS NUMRICOS ........................................................................................................ 130

    RESOLUCIN DE ECUACIONES NO LINEALES ................................................................................................... 130

    Mtodo de punto fijo .................................................................................................................................. 130

    Mtodo de biseccin ................................................................................................................................... 132

    Mtodo de Newton ..................................................................................................................................... 135

    Mtodo de Euler .......................................................................................................................................... 137

    7

  • MATLAB Orientado a la matemtica aplicada

    Un mtodo hbrido: Newton-Biseccin ....................................................................................................... 139

    Mtodo de la Falsa Posicin ........................................................................................................................ 142

    Mtodo de la Secante .................................................................................................................................. 145

    Comandos predefinidos en MATLAB ........................................................................................................... 147

    INTERPOLACIN POLINOMIAL ........................................................................................................................ 149

    Forma de Lagrange ...................................................................................................................................... 149

    Forma modificada de Lagrange ................................................................................................................... 151

    Forma baricntrica de Lagrange .................................................................................................................. 153

    Forma baricntrica con nodos igualmente espaciados ............................................................................... 155

    Forma de Newton ........................................................................................................................................ 156

    Forma de Newton con nodos igualmente espaciados ................................................................................ 158

    Comandos predefinidos en MATLAB ........................................................................................................... 161

    EJERCICIOS 8 .................................................................................................................................................... 163

    CAPTULO 9. COMPONENTES DE MATLAB ................................................................................................. 165

    EL SOFTWARE BSICO MATLAB Y SUS HERRAMIENTAS ADICIONALES ........................................................... 165

    MATLAB Report Generador ......................................................................................................................... 165

    MATLAB Compiler Suite ............................................................................................................................... 165

    MATLAB Runtime Server ............................................................................................................................. 165

    MATLAB Web Server ................................................................................................................................... 165

    Matriz VB ..................................................................................................................................................... 165

    MATLAB Excel Builder .................................................................................................................................. 166

    TOOLBOXES DE MATLAB DE APLICACIN EN MATEMTICA GENERAL .......................................................... 166

    Symbolic Math ............................................................................................................................................. 166

    Extended Symbolic Math ............................................................................................................................. 166

    Database Toolbox ........................................................................................................................................ 166

    Excel Link Toolbox........................................................................................................................................ 166

    Statistics Toolbox ......................................................................................................................................... 166

    Optimization Toolbox .................................................................................................................................. 166

    Spline Toolbox ............................................................................................................................................. 166

    Partial Differential Equation Toolbox .......................................................................................................... 167

    Neural Network Toolbox ............................................................................................................................. 167

    TOOLBOXES DE MATLAB DE ADQUISICIN DE DATOS .................................................................................... 167

    8

  • Andrs Prez

    Data Acquisition Toolbox ............................................................................................................................. 167

    Instrument Control Toolbox ........................................................................................................................ 167

    Curve Fitting Toolbox ................................................................................................................................... 167

    TOOLBOXES DE MATLAB PARA PROCESADO DE SEALES .............................................................................. 167

    Signal Processing Toolbox ........................................................................................................................... 168

    Filter Desgin Toolbox ................................................................................................................................... 168

    Communications Toolbox ............................................................................................................................ 168

    Wavelet Toolbox .......................................................................................................................................... 168

    System Identification Toolbox ..................................................................................................................... 168

    TOOLBOXES DE MATLAB PARA PROCESADO DE IMGENES ........................................................................... 168

    Image Processing Toolbox ........................................................................................................................... 168

    Mapping Toolbox ......................................................................................................................................... 168

    TOOLBOXES DE MATLAB EN EL REA FINANCIERA ......................................................................................... 169

    Financial Toolbox ......................................................................................................................................... 169

    Financial Time Series Toolbox ..................................................................................................................... 169

    Financial Derivatives Toolbox ...................................................................................................................... 169

    Garch Toolbox .............................................................................................................................................. 169

    Datafeed Toolbox ........................................................................................................................................ 169

    SIMULACIN DE SISTEMAS CON SIMULINK Y SUS HERRAMIENTAS ADICIONALES ......................................... 169

    Simulink ....................................................................................................................................................... 169

    Stateflow ...................................................................................................................................................... 170

    Simulink Report Generator .......................................................................................................................... 170

    Simulink Performance Tools ........................................................................................................................ 170

    Requirements Management Interface ........................................................................................................ 170

    Virtual Reality .............................................................................................................................................. 170

    BLOCKSETS DE SIMULINK ................................................................................................................................ 170

    DSP Blockset ................................................................................................................................................ 170

    Communications Blockset ........................................................................................................................... 170

    CDMA Reference Blockset ........................................................................................................................... 171

    Fixed-Point Blockset .................................................................................................................................... 171

    Dials & Gauges Blockset .............................................................................................................................. 171

    Nonlinear Control Design Blockset .............................................................................................................. 171

    9

  • MATLAB Orientado a la matemtica aplicada

    Power System Blockset ................................................................................................................................ 171

    Sym Mechanics Blockset.............................................................................................................................. 171

    GENERACIN DE CDIGO DE SIMULINK ......................................................................................................... 171

    Real-Time Workshop ................................................................................................................................... 171

    Real-Time Workshop Embedded Coder ...................................................................................................... 171

    Stateflow Coder ........................................................................................................................................... 172

    IMPLEMENTACIN EN TARGETS ..................................................................................................................... 172

    Developers Kit for Texas Instruments DSP ................................................................................................. 172

    Motorola DSP Developers Kit. .................................................................................................................... 172

    Xilinxs FPGA System Generator for Simulink .............................................................................................. 172

    PROTOTIPAJE ................................................................................................................................................... 172

    Real-Time Windows Target ......................................................................................................................... 172

    xPC Target .................................................................................................................................................... 172

    xPC Target Embedded Option ..................................................................................................................... 173

    ANLISIS Y DISEO DE SISTEMAS DE CONTROL .............................................................................................. 173

    Control System Toolbox .............................................................................................................................. 173

    Fuzzy Logic Toolbox ..................................................................................................................................... 173

    Robust Control Toolbox ............................................................................................................................... 173

    -Analysis and Synthesis Toolbox ................................................................................................................ 173

    LMI Control Toolbox .................................................................................................................................... 173

    Model Predictive Control Toolbox ............................................................................................................... 173

    Model-Based Calibration Toolbox ............................................................................................................... 173

    BIBLIOGRAFA .......................................................................................................................................... 174

    10

  • Andrs Prez

    INTRODUCCIN OBJETIVO

    En el presente trabajo se pretende dar a conocer las aplicaciones bsicas de MATLAB en la matemtica aplicada, y corresponde a un material de ayuda en un curso del software mencionado, orientado a los estudiantes de Licenciatura en Ciencias Matemticas del el Decanato de Ciencias y Tecnologa de la UCLA. Con ello se busca fomentar el uso de MATLAB como una herramienta alternativa para estos estudiantes a lo largo de su carrera.

    JUSTIFICACIN Durante el desarrollo de la carrera Licenciatura en Ciencias Matemticas, se destaca la gran importancia del modelado, simulacin y optimizacin de fenmenos reales que son objeto de estudio en asignaturas como: estadstica, investigacin de operaciones, anlisis numrico, programacin no lineal, etc. y muchas otras reas no solo de la matemtica, sino de las ciencias aplicada en general, que requieren un soporte computacional para su compresin.

    Es por esta razn que se considera vital ensear a los estudiantes de matemtica como utilizar el mdulo bsico de MATLAB, para as fomentar su motivacin a cursar asignaturas de la matemtica aplicada y con ello logren expandir su intelecto acadmico.

    COMO UTILIZAR ESTE TUTORIAL? Esta obra est dividida en nueve captulos. Los primeros tres corresponden a temas bsicos sobre el manejo de MATLAB: manipulacin de variables vectoriales y matriciales, programacin estructurada y definicin de M-Ficheros respectivamente.

    Los captulos cuarto y quinto corresponden a: clculo simblico y grficos respectivamente.

    En los captulos subsiguientes (sexto, sptimo y octavo) se dan algunos ejemplos en que MATLAB facilita el estudio de la matemtica aplicada: funciones y procesamiento de datos estadsticos, tcnicas de optimizacin lineal y no lineal y finalmente implementacin de mtodos numricos.

    El ltimo captulo trata sobre los componentes de MATLAB: toolboxes y blocksets. Este tema se coloc al final para que el lector pueda ahondar ms acerca de las aplicaciones del software.

    En cada captulo se da la explicacin terica y ejemplos ilustrativos sobre el tpico tratado, adems de una lista de ejercicios para que lector internalice lo aprendido, sin que ello le obligue a resolverlos para avanzar en los captulos restantes. Cabe destacar que algunos ejemplos y/o problemas planteados en cada captulo se formulan de manera que el lector aplique las tcnicas ilustradas en el mismo (diseando un algoritmo), pese a que dichos problemas pudiesen ser resueltos de manera ms practica (empleando un comando predefinido en MATLAB). El objetivo que se persigue es que el lector se adiestre en disear nuevas formas de revolver problemas con MATLAB, y no sea dependiente de las funciones ya predefinidas.

    11

  • MATLAB Orientado a la matemtica aplicada

    CAPITULO 1. COMENZANDO A TRABAJAR CON MATLAB

    TPICOS ELEMENTALES Qu es MATLAB?

    MATLAB (abreviatura de MATrix LABoratory, laboratorio de matrices) es un software matemtico que ofrece un entorno de desarrollo integrado (IDE) el cual permite el anlisis y la computacin matemticos interactivos de forma sencilla con ms de 500 funciones matemticas, estadsticas y tcnicas implementadas, as como la visualizacin de todo tipo de grficos de ingeniera y cientficos. Posee un lenguaje de programacin propio (lenguaje M) y adems est disponible para las plataformas Unix, Windows y Mac OS X.

    Entre sus prestaciones bsicas se hallan: la manipulacin de matrices, la representacin de datos y funciones, la implementacin de algoritmos, la creacin de interfaces de usuario (GUI) y la comunicacin con programas en otros lenguajes y con otros dispositivos hardware. El paquete MATLAB dispone de dos herramientas adicionales que expanden sus prestaciones, a saber: SIMULINK (plataforma de simulacin multidominio) y GUIDE (editor de interfaces de usuario - GUI). Adems, se pueden ampliar las capacidades de MATLAB con las cajas de herramientas (toolboxes) y las de Simulink con los paquetes de bloques (blocksets).

    Origen MATLAB fue originalmente desarrollado por Cleve Moler, fundador de MathWorks Inc., con el objetivo de proporcionar un acceso fcil al software matricial desarrollado en los proyectos de UNIX LINPACK (de LINear equations PACKage) y EISPACK (de EIgenvalue Subroutines PACKage).

    Versiones e historia La primera versin, a finales de los aos 70, se escribi en FORTRAN, siendo la nica estructura de datos la matriz. Posteriormente, en los aos 80, MATLAB fue rediseado en C. La versin 3 para MS-DOS desde principios de los aos 90. En 1993 aparece la versin 4, para Windows 3.11, que ya incorpora la primera versin del Simulink. Las versiones ms recientes se identifican con el nombre del ao, as: R2008a, R2008b, R2009a, etc. Hoy en da MATLAB es un estndar de facto en ingeniera y computacin cientfica. Se celebran congresos monotemticos sobre sus aplicaciones y distintas empresas e instituciones venden sus toolboxes como third parties o bien las publican en Internet con acceso libre.

    Qu versin estamos utilizando en este tutorial? A lo largo de esta obra, utilizaremos la versin MATLAB2007a.

    12

  • Andrs Prez

    ENTORNO DE TRABAJO DE MATLAB

    La pantalla de entrada de MATLAB constituye el marco de trabajo general del programa. Los elementos ms importantes de esta pantalla de inicio son los siguientes:

    Comand Window (ventana de comandos): ejecuta las funciones MATLAB. Comand History (historial de comandos): presenta una historia de todas las funciones introducidas en

    la ventana de comandos y permite copiarlas y ejecutarlas. Current Directory (directorio actual): muestra ficheros MATLAB y ejecuta operaciones de ficheros tales

    como abrir y buscar contenido. Help (ayuda): muestra y busca documentacin de toda la familia completa de productos MATLAB. Workspace (espacio de trabajo): muestra y realiza cambios en el contenido del espacio de trabajo. Array Editor: muestra contenido de arrays en formato de tabla y edita sus valores. Editor: crea, edita y comprueba M-Ficheros (mas adelante hablaremos sobre el editor y los M-

    Ficheros).

    13

  • MATLAB Orientado a la matemtica aplicada

    La ventana de comandos

    La ventana de comandos es el camino principal para comunicarse con MATLAB. Aparece en el escritorio cuando se inicia el programa y se utiliza para ejecutar funciones y todo tipo de operaciones. Las entradas a ejecutar se escriben a continuacin del prompt >> y, una vez completadas, se pulsa Enter.

    La ventana de historial de comandos

    La ventana Comand History aparece cuando se inicia MATLAB, situada en la parte inferior derecha del escritorio de MATLAB. Esta ventana muestra una relacin de las funciones utilizadas recientemente en la ventana de comandos. Tambin muestra un indicador de comienzo de sesin.

    14

  • Andrs Prez

    La ventana de directorio actual

    Su funcin es ver, abrir y hacer cambios en los ficheros del entorno de MATLAB. Esta ventana permite explorar los directorios del ordenador en forma anloga a la del explorador u otras aplicaciones de Windows. Cuando se llega al directorio deseado se muestran all contenidos. La ventana Current Directory permite ordenarlos por fecha, tamao, nombre, etc.

    La ventana de ayuda

    MATLAB dispone de un sistema de ayuda en lnea bastante eficiente. En el panel de la izquierda del navegador de la ayuda se selecciona el tema, y en el panel de la derecha se presenta la ayuda relativa al tema seleccionado, siendo posible el uso de hipervnculos para navegar por su contenido. La parte izquierda del panel de navegacin de la ayuda presenta en su zona superior una barra con las opciones Content (ayuda por

    15

  • MATLAB Orientado a la matemtica aplicada contenido), Index (ayuda por ndice alfabtico), Search (buscar ayuda por tema) y Favorites (temas de ayuda favoritos).

    NMEROS, OPERADORES Y VARIABLES Se puede trabajar con diferentes tipos de nmeros y expresiones numricas, que abarcan todo el campo de los nmeros enteros, racionales, reales, complejos, y se utilizan en argumentos de funciones.

    Operaciones bsicas Una de las primeras aplicaciones de MATLAB es su uso para la realizacin de operaciones aritmticas como si se tratara de una calculadora convencional, pero con una importante ventaja sobre ella: la precisin en el clculo. Las operaciones son realizadas bien en forma exacta o bien especificando al programa el grado de precisin que desee. Los operadores aritmticos tienen la siguiente sintaxis:

    x+y Suma x - y Resta x*y Multiplicacin x/y Divisin x^y Potenciacin

    Operadores aritmticos.

    Para que MATLAB ejecute las entradas que le indiquemos, estas deben ser tecleadas en la ventana de comandos, justamente al lado del prompt >>, luego se pulsa Enter para visualizar la salida.

    Creacin de variables MATLAB no requiere ningn tipo de comando para declarar variables, sencillamente crea la variable mediante la asignacin directa de su valor.

    EJEMPLO: para hacer el cmputo 1/2+1/3 escribimos en la ventana de comandos

    >> 1/2+1/3

    luego pulsamos Enter y MATLAB muestra el resultado deseado

    ans =

    0.8333

    16

  • Andrs Prez

    EJEMPLO: el clculo del ejemplo anterior lo podemos hacer utilizando variables. Escribimos en la ventana de comandos

    >>x=1/2

    pulsamos Enter y se produce

    x =

    0.5000

    anlogamente

    >> y=1/3

    >>y =

    0.3333

    ahora calculemos z=x+y

    >>z=x+y

    z =

    0.8333

    como la variable z almacena el valor 0.8333, si tipiamos

    >>z

    y luego pulsamos Enter, MATLAB nos muestra

    z =

    0.8333

    Esto es as, pues el valor asignado a una variable es permanente, hasta que no se cambie de forma expresa o hasta que no se salga de la presente sesin de MATLAB, por ejemplo

    >>z=10.2

    z =

    10.2

    17

  • MATLAB Orientado a la matemtica aplicada Cualquier entrada que tenga punto y coma a su derecha se ejecuta al pulsar Enter pero no se ve su salida, sin que esto afecte la operacin realizada.

    Funciones matemticas elementales de MATLAB Un resumen de las funciones elementales del mdulo bsico de MATLAB se muestra en la siguiente tabla

    SINTAXIS EXPLICACIN

    sqrt(x) Raz cuadrada

    exp(x) Exponencial

    log(x) Logaritmo natural (neperiano)

    abs(x) Valor absoluto

    factorial(n) Factorial

    rem(a,b) Resto de la divisin a/b

    sin(x), sinh(x) Seno y seno hiperblico

    cos(x), cosh(x) Coseno y coseno hiperblico

    tan(x), tanh(x) Tangente y tangente hiperblico

    cot(x), coth(x) Cotangente y cotangente hiperblico

    sec(x), sech(x) Secante y secante hiperblico

    csc(x), csch(x) Cosecante y cosecante hiperblico

    EJEMPLO: la sentencia >>r=2^(1/3); hace que a la variable r se le asigne el valor de la raz cbica de dos, pero no se muestra la asignacin. Verifiquemos que la MATLAB si hizo tal asignacin

    >>r

    r =

    1.2599

    18

  • Andrs Prez

    asin(x), asinh(x) Arco seno y arco seno hiperblico

    acos(x), acosh(x) Arco coseno y arco coseno hiperblico

    atan(x), atanh(x) Arco tangente y arco tangente hiperblico

    acot(x), acoth(x) Arco cotangente y arco cotangente hiperblico

    asec(x), asech(x) Arco secante y arco secante hiperblico

    acsc(x), acsch(x) Arco cosecante y arco cosecante hiperblico

    Funciones matemticas elementales.

    EJEMPLO:

    >> abs(-1)

    ans =

    1

    >> tan(3.14/4)

    ans =

    0.9992

    >> atan(0.9992)

    ans =

    0.7850

    >> exp(1)

    ans =

    2.7183

    >> sqrt(2)

    ans =

    1.4142

    19

  • MATLAB Orientado a la matemtica aplicada

    Algunos nmeros especiales Existe un grupo importante de nmeros irracionales y reales en general que por su utilizacin merecen trato especial. MATLAB incorpora los siguientes:

    SINTAXIS EXPLICACIN

    pi Nmero

    exp(1) Nmero

    i Unidad imaginaria

    Inf Infinito. Se produce con operaciones como 1/0

    NaN Indeterminacin. Se produce con operaciones como 0/0 o Inf/Inf

    realmin Menor nmero real positivo utilizable

    realmax Mayor nmero real positivo utilizable

    Nmeros especiales.

    EJEMPLO:

    >> pi

    ans =

    3.1416

    >> i

    ans =

    0 + 1.0000i

    >> realmin

    ans =

    2.2251e-308

    20

  • Andrs Prez

    VECTORES Para representar a un vector de n elementos se puede definir en MATLAB una variable de las siguientes formas:

    o Separando los componentes con comas

    v=[v1,v2,v3,,vn]

    o Separando los componentes con espacios en blanco

    v=[v1 v2 v3 vn]

    Hay formas prcticas de definir ciertos vectores, sin necesidad de escribir explcitamente todos sus elementos. Se presentan en la tabla siguiente

    SINTAXIS EXPLICACIN

    variable=[a:b] Define el vector cuyos primero y ltimo elementos son a y b, respectivamente, y los elementos intermedios se diferencian en una unidad

    variable=[a:s:b] Define el vector cuyos primero y ltimo elementos son a y b, y los elementos

    EJEMPLO:

    >> w=[1,2,1,2,1,9]

    w =

    1 2 1 2 1 9

    EJEMPLO:

    >> w=[1 2 1 2 1 9]

    w =

    1 2 1 2 1 9

    21

  • MATLAB Orientado a la matemtica aplicada

    intermedios se diferencian en la cantidad s especificada por el incremento

    variable=linspace(a,b,n) Define el vector cuyos primero y ltimo elementos son a y b, y que tiene en total n elementos uniformemente espaciados entre s

    variable=logspace(a,b,n) Define el vector cuyos primero y ltimo elementos son especificados y que tiene en total n elementos en escala logartmica uniformemente espaciados entre s

    Formas de definir vectores.

    En MATLAB tambin se pueden definir vectores fila y vectores columna. Un vector columna se obtiene separando sus elementos por punto y coma.

    EJEMPLO:

    >>G=[1:0.2:2]

    G =

    1.0000 1.2000 1.4000 1.6000 1.8000 2.0000

    EJEMPLO:

    >>h=[0.2;4;5;10]

    h =

    0.2000

    4.0000

    5.0000

    10.0000

    22

  • Andrs Prez Asimismo podemos seleccionar un elemento de un vector o un subconjunto de elementos. La tabla siguiente nos lo explica

    SINTAXIS EXPLICACIN

    lenght(x) Devuelve la longitud del vector x

    x(n) Devuelve el ensimo elemento del vector x

    x(a:b) Devuelve los elementos del vector x situados entre el a-simo y el b-simo, ambos inclusive.

    x(a:p:b) Devuelve los elementos del vector x situados entre el a-simo y el b-simo (a0)

    x(b:p:a) Devuelve los elementos del vector x situados entre el b-simo y el a-simo (b>a), ambos inclusive, pero separados de p en p unidades y empezando por el b-simo (p> z=[1 0 2 0 3 0 4 0 5 0];

    >> z(4)

    ans =

    0

    >> z(1:2:10)

    ans =

    1 2 3 4 5

    >> z(10:-2:1)

    ans =

    0 0 0 0 0

    23

  • MATLAB Orientado a la matemtica aplicada

    MATRICES En MATLAB se definen las matrices colocando entre corchetes todos sus vectores fila separados por punto y coma

    Una vez que una variable matricial ha sido definida, MATLAB habilita muchos caminos para insertar, extraer, reenumerar y manipular en general sus elementos. Para ello consultemos la siguiente tabla

    SINTAXIS EXPLICACIN

    det(a) Determinante de la matriz A

    inv(A) Devuelve la matriz inversa de A

    A Devuelve la matriz transpuesta de A

    rref(a) Matriz escalonada reducida por filas de Gauss-Jordan de la matriz A

    jordan(a) Forma cannica de Jordan de la matriz A

    tril(A) Devuelve la parte triangular inferior de la matriz A

    triu(A) Devuelve la parte triangular superior de la matriz A

    flipud(A) Devuelve la matriz cuyas filas estn colocadas en orden inverso (de arrida hacia abajo) a las filas de A

    fliplr(A) Devuelve la matriz cuyas columnas estn colocadas en orden inverso (de izquierda a derecha) a las de A

    diag(A) Extrae la diagonal de la matriz A como vector

    EJEMPLO:

    >> matrix=[1 2 3;4 5 6;7 8 9]

    matrix =

    1 2 3

    4 5 6

    7 8 9

    24

  • Andrs Prez

    columna

    reshape(A,m,n) Devuelve la matriz de orden mn extrada de la matriz A tomando elementos consecutivos de A por columnas

    size(A) Devuelve el orden (tamao) de la matriz A

    diag(V) Crea una matriz diagonal con el vector v en la diagonal

    eye(n) Crea la matriz identidad de orden n

    eye(m,n) Crea la matriz de orden mn con unos en la diagonal principal y ceros en el resto

    zeros(m,n) Crea la matriz nula de orden mn

    ones(m,n) Crea la matriz de orden mn con todos sus elementos iguales a 1

    pascal(n) Crea una matriz nxn, la cual es una extraccin del Tringulo de Pascal

    magic(n) Crea una matriz mgica, en la cual todas las filas, columnas y diagonales suman el mismo valor

    rosser Devuelve una matriz de valores propios de prueba

    A(m,n) Define el elemento de la matriz A (fila i, columna j)

    A(a,:) Define la fila a-sima de la matriz A

    A(:,b) Define la columna b-sima de la matriz A

    A(a:p:b,c:q:d) Define la submatriz de A formada por las filas que hay entre la a-sima y la b-sima tomndolas de p en p y por las columnas que hay entre la c-sima y la d-sima de q en q

    A([a b],[c d]) Define la submatriz de A formada por la interseccin de las filas a-sima y b-sima y las columnas c-sima y d-sima

    A(a:b,:) Define la submatriz de A formada por todas las columnas de A y por las filas que hay entre la a-sima

    25

  • MATLAB Orientado a la matemtica aplicada

    y la b-sima

    A(:,c:d) Define la submatriz de A formada por todas las filas de A y por las columnas que hay entre la c-sima y la d-sima

    A([a b c ],:) Define la submatriz de A formada por todas las columnas de A y por las filas a, b, c,

    A(:,[c d e ]) Define la submatriz de A formada por todas las filas de A y por las columnas c,d e,

    A(:) Define un vector columna cuyos elementos son las columnas de A situadas por orden una debajo de otra

    A(:,:) Equivale a toda la matriz A

    [A,B,C,] Define la matriz formada por las submatrices A, B, C,

    Opciones para manipular matrices.

    EJEMPLO: definimos la matriz de orden 88

    >>A=[8 7 3 3 5 1 2 1;

    9 2 7 5 4 5 8 9;

    5 8 5 1 0 2 1 0;

    1 3 5 0 3 6 7 7;

    1 2 8 5 1 6 5 7;

    2 2 3 7 7 7 9 8;

    8 6 7 8 3 4 1 1;

    2 4 7 1 5 1 4 4];

    visualizamos los 4 bloques de la matriz

    >> B1=A(1:4,1:4) %bloque superior izquierdo

    26

  • Andrs Prez

    B1 =

    8 7 3 3

    9 2 7 5

    5 8 5 1

    1 3 5 0

    >> B2=A(1:4,5:8) %bloque superior derecho

    B2 =

    5 1 2 1

    4 5 8 9

    0 2 1 0

    3 6 7 7

    >> B3=A(5:8,1:4) %bloque inferior izquierdo

    B3 =

    1 2 8 5

    2 2 3 7

    8 6 7 8

    2 4 7 1

    >> B4=A(5:8,5:8) %bloque inferior derecho

    B4 =

    1 6 5 7

    7 7 9 8

    3 4 1 1

    5 1 4 4

    27

  • MATLAB Orientado a la matemtica aplicada

    GUARDANDO, BORRANDO Y LEYENDO En muchas ocasiones puede resultar necesario interrumpir el trabajo con MATLAB y poderlo recuperar ms tarde en el mismo punto en el que se dej (con las mismas variables definidas, con los mismos resultados intermedios, etc.). Hay que tener en cuenta que al salir del programa todo el contenido de la memoria se borra automticamente. A continuacin explicaremos dos formas de guardar variables (con ficheros .mat y ficheros .ascii), pero antes debemos saber que es el fichero MATLAB.mat.

    El fichero MATLAB.mat Para guardar el estado de una sesin de trabajo existe el comando save. Si se teclea >> save antes de abandonar el programa, MATLAB crea en el directorio actual un fichero binario llamado MATLAB.mat (o MATLAB), donde almacena la sesin. Dicho estado puede recuperarse la siguiente vez que se arranque el programa con el comando load, es decir, tipiando >> load

    ahora recuperamos la matriz A por medio de sus bloques

    >> [B1 B2;B3 B4]

    ans =

    8 7 3 3 5 1 2 1

    9 2 7 5 4 5 8 9

    5 8 5 1 0 2 1 0

    1 3 5 0 3 6 7 7

    1 2 8 5 1 6 5 7

    2 2 3 7 7 7 9 8

    8 6 7 8 3 4 1 1

    2 4 7 1 5 1 4 4

    28

  • Andrs Prez Esta es la forma bsica de los comandos save y load.

    Ficheros .mat Se pueden guardar tambin las variables de forma selectiva y en ficheros binarios llamados ficheros .mat, especificando un nombre para dicho fichero. Por ejemplo, el comando >> save nombre1 a b c guarda las variables a, b y c en un fichero llamado nombre1.mat (o nombre1).Para recuperarlas en otra sesin basta tipiar >> load nombre1 Si no se indica ninguna variable, se guardan todas las variables creadas en esa sesin.

    Ficheros .ascii Resulta que un fichero.mat solo es legible por MATLAB, por ello, si se quiere disponer de dados creados en MATLAB desde otras aplicaciones, es recomendable guardarlos en un fichero .ascii el cual tiene la siguiente sintaxis >> save nombre2 a b c -ascii De modo que se guardan las variables a, b y c en un fichero llamado nombre2.ascii (o nombre2)

    Un resumen de los comandos para manejar variables se cita a continuacin:

    SINTAXIS EXPLICACIN

    clear Borra todas las variables del espacio de trabajo

    clear x y z Borra las variables numricas x, y, z

    load Lee todas las variables del fichero MATLAB.mat

    load nombre1 Lee todas las variables del fichero .mat llamado nombre1

    load nombre1 x y z Lee las variables x, y, z del fichero .mat llamado nombre1

    load nombre1 mat Lee el fichero llamado nombre1 como .mat sea cual sea su extensin

    save Guarda las variables del espacio de trabajo en el fichero binario MATLAB.mat en el

    29

  • MATLAB Orientado a la matemtica aplicada

    directorio actual

    save nombre1 Guarda las variables del espacio de trabajo en el fichero .mat llamado nombre1 en el directorio actual.

    save nombre1 x y z Guarda las variables del espacio de trabajo x, y, z en el fichero fichero.mat llamado nombre1

    who Lista las variables del workspace

    whos Lista las variables del workspace con sus tamaos y tipos

    Comandos pata manejar variables

    EJEMPLO:

    >> A=[1 2 3 4 5];

    >> B=[6 7 8 9 10];

    >> save vectores A >> save VECTORES B -ascii >> load vectores

    >> A

    A =

    1 2 3 4 5

    >> load VECTORES

    >> B

    B =

    6 7 8 9 10

    30

  • Andrs Prez

    LTIMAS ACLARACIONES PARA TRABAJAR EN MATLAB Tips

    Para teclear un comando, el cursor debe estar situado despus del smbolo >>, tambin denominado prompt.

    Una vez que el comando se ha tecleado y se pulsa la tecla Enter, el comando es ejecutado. Sin embargo, slo se ejecuta el ltimo comando. Todo lo ejecutado anteriormente permanece inalterado.

    Se puede teclear ms de un comando en una sla lnea. Para ello slo hay que poner una coma entre comando y comando. Cuando se pulsa la tecla Enter, todos los comandos se ejecutan de izquierda a derecha.

    No es posible ir hacia arriba, a una lnea anterior, realizar una correccin y ejecutar de nuevo un comando.

    Un comando anteriormente tecleado puede ser invocado de nuevo. Para ello solo hay que utilizar las flechas arriba ( comando anterior) y abajo ( comando porterior) de los cursores para localizar el comando deseado, visualizando en el prompt y hacer cuantas modificaciones sean necesarias antes de ejecutarlo de nuevo pulsando la tecla Enter.

    Si un comando es demasiado grande y ocupa ms de una lnea, este se puede distribuir en un segunda lnea tecleando al final de la primera puntos suspensivos () y pulsando la tecla Enter. Seguidamente se contina la escritura del comando en la lnea siguiente. Un comando de gran tamao se podra distribuir en ms de una lnea hasta un lmite mximo de 4096 caracteres.

    El punto y coma (;) Cuando se tecle una sentencia en la ventana de comandos y se pulsa la tecla Enter, el comando es ejecutado inmediatamente. Cualquier salida que genere el comando se visualizar en la ventana de comandos. Si se teclea un punto y coma (;) al final del comando, la salida de dicho comando no ser visualizada. Esto puede ser til cuando el resultado de un comando es obvio o conocido, o cuando, por ejemplo, la salida es demasiado grande.

    Si se teclean varios comandos en la misma lnea, la salida de cualquiera de esos comandos no se visualizar si entre los comandos se escribe un punto y coma en lugar de coma.

    El smbolo % Cuando se teclea el smbolo % (tanto por ciento) al principio de una lnea, MATLAB considerar dicha lnea como un comentario. Esto significa que cuando se pulsa la tecla Enter la lnea no ser ejecutada. El carcter % seguido de texto (comentario) puede ser utilizado tambin despus de un comando (en la misma lnea). El comentario no tiene ningn efecto sobre la ejecucin del comando.

    Habitualmente no es necesario poner comentarios en la ventana de comandos. stos se utilizan ms bien en programas para aadir descripciones o para explicar partes del cdigo.

    31

  • MATLAB Orientado a la matemtica aplicada

    El comando clc El comando clc borra la ventana de comandos. A medida que se van tecleando y ejecutando sentencias en la ventana de comandos, sta se va llenando, y una vez que se teclea clc la ventana se limpia. Este comando no cambia nada que haya sido creado antes, por ejemplo, si previamente se han definido variables, estas an seguirn definidas, con sus valores asignados, y podrn seguir usndose normalmente. Esto tampoco afecta a los comandos que han sido tecleados anteriormente, los cuales pueden ser recuperados pulsando las flechas arriba y abajo.

    Algunas reglas bsicas de sintaxis MATLAB es sensible al uso de maysculas y minsculas, por ello se debe tener cuidado a la hora de tipiar una variable, un comando, una funcin, etc. Algunas entradas aparecen en diferentes colores en la ventana de comandos para ayudar a interpretar mejor determinados elementos como comandos, funciones, instrucciones, cadenas, etc. Algunas de las reglas existentes para los colores son las siguientes:

    1. Las cadenas aparecen en color prpura mientras se teclean. Al finalizarlas correctamente (con la comilla de cierre) se vuelven de color marrn.

    2. La sintaxis de control de flujo aparece en color azul. Todas las lneas entre la apertura y el cierre de las funciones de control de flujo aparecen correctamente sangradas.

    3. Los parntesis, corchetes y llaves se mantienen brevemente iluminados hasta que no se finalice la escritura de su contenido. Esto permite ver si se cierran correctamente o no en las expresiones matemticas.

    4. Al introducir el smbolo % que precede a un comentario en la ventana de comandos, la escritura es de color verde.

    5. Los comandos de sistema tales como ! aparecen en color dorado. 6. Los errores aparecen en color rojo.

    32

  • Andrs Prez

    EJERCICIOS 1

    1. Calcule a) 22 + 23 + 24 b) 1

    2+ 1

    2+ 1

    3+ 1

    4+ 1

    5

    c) 2 + 3 + 4 d) (1 2 1 )2 + (1 3 1)3 + (1 4 1)4 e) 5(5+1 2 )5 + 6(6+1 2 )6 f) 2 3 4

    g) ((((4) + 3) + 2) + 1) h) 5 4 + 42 + 5 3 + 33 + 5 2 + 24

    2. Cambie los siguientes puntos de coordenadas rectangulares (,), a coordenadas polares (,)

    a) 1 = (1, 4) b) 2 = (2,2) c) 3 = (1 2 , 8)

    d) 4 = (10, 0) e) 5 = 11,2 f) 6 = (2,(3))

    Recuerde que si un punto = (,) es tal que 0, entonces las coordenadas polares de son

    = 2 + 2 y = 1( )

    3. Cambie los siguientes puntos de coordenadas polares (,) a coordenadas rectangulares (,),a) 1 = (2,) b) 2 = (7,2) c) 3 = 3, 0

    d) 4 = (5, 3 4 ) e) 5 = (0, 2 ) f) 6 = (, 5)

    Tenga en cuenta que las coordenadas cartesianas de un punto = (,) vienen dadas por = () y = ()

    4. Defina los siguientes vectores

    o A = los nmeros del 1 al 13 o B = los nmeros del 20 al 4 o C = los nmeros pares del 2 al 26 o D = los nmeros pares del 30 al 8

    Respecto a los vectores anteriores, defina las siguientes matrices

    33

  • MATLAB Orientado a la matemtica aplicada

    o A o [A ; B(1:13)] o [C(1:5) , D(1:5)] o [A(1:3) , B(1:3) , C(1:3)]

    5. Defina las siguientes matrices

    = 1 24 0

    =

    0 1 2 3 0 9 4 3 0 8

    = 8 7 1 20 0 56 1 1

    = 1 2 1 39 2 0 4 0 6 5 0 81 30 4 = 2 9 5 0 8 2 3 1 0 0 5 8

    7 0 7 2 0 1 = 0 1 52 5 1

    Calcule

    o det () o 1 o det()1 o (1)1 o (1: 3,1: 4) + (1: 3,1: 4) o o o + o + (1: 2,1: 5) o (1) o (1: 3,1: 2) + (1: 2,1: 3) o ( + )2 2(3: 4,3: 4) o

    donde es la matriz cuyos elementos son iguales a 1

    o

    donde es la matriz cuyos elementos son iguales a 0 o

    o

    34

  • Andrs Prez

    CAPITULO 2. ALGORITMOS

    Hasta el momento los algoritmos que hemos programado en MATLAB tienen estructura secuencial, es decir, hemos tipiado sentencias en la ventana de comandos para que se ejecuten en el orden escrito (desde arriba hacia abajo). No obstante, en MATLAB tambin se pueden disear algoritmos con estructura selectiva (bifurcaciones) y estructura repetitiva (bucles).

    Antes de explicar dichas estructuras es necesario conocer dos nuevos tipos de operadores, los cuales citaremos en los siguientes cuadros

    SINTAXIS EXPLICACIN

    > Mayor que

    < Menor que

    >= Mayor o igual que

  • MATLAB Orientado a la matemtica aplicada

    COMANDO if Las bifurcaciones permiten la ejecucin de una o ms sentencias, dependiendo del cumplimiento de una condicin. A continuacin presentamos dos tipos.

    Comando if simple Ejecuta una o ms sentencias dependiendo del cumplimiento de una condicin. La sintaxis es

    if condicin

    sentencias

    end

    Tngase en cuenta que la condicin debe ser una expresin lgica, la cual generalmente es un combinacin de operadores relacionales y lgicos.

    Notar que en ejemplo anterior, no aparece el prompt en las lineas 5, 6 y 7. Esto es propio del bloque de la sentencia if.

    Aqu se teclea el bloque de sentencias, las cuales se ejecutarn siempre que la condicin sea verdadera

    EJEMPLO: crearemos una matriz 33 y si es invertible calculamos su inversa

    >> A=[ 8 1 6

    3 5 7

    4 9 2];

    >> if det(A)~=0

    disp('La matriz es invertible y su inversa es')

    inv(A)

    end

    La matriz es invertible y su inversa es

    ans =

    0.1472 -0.1444 0.0639

    -0.0611 0.0222 0.1056

    -0.0194 0.1889 -0.1028

    36

  • Andrs Prez

    Comando if mltiple A diferencia del anterior, este comando clasifica las sentencias en varios bloques, adjudicando a cada bloque una condicin, de modo que se ejecutar un solo bloque si la condicin respectiva es verdadera. La sintaxis es

    if condicion1

    sentencias 1

    elseif condicion2

    sentencias 2

    elseif condicion3

    sentencias 3

    else

    sentencias 4

    end

    Debe notarse que las condiciones 1, 2, 3 y 4 son mutuamente excluyentes, de modo que slo se ejecutar un bloque de sentencias (1, 2, 3 o 4 disyuncin exclusiva).

    Aqu se teclea el bloque N1 de sentencias, las cuales se ejecutarn siempre que la condicin1 sea cierta

    Aqu se teclea el bloque N2 de sentencias, las cuales se ejecutarn siempre que la condicin2 sea cierta

    Aqu se teclea el bloque N3 de sentencias, las cuales se ejecutarn siempre que la condicin3 sea cierta

    Aqu se teclea el bloque N4 de sentencias, las cuales se ejecutarn siempre que las condiciones 1, 2, 3 sean falsas

    EJEMPLO: crearemos un matriz 33. Deseamos saber si es invertible o no, y en caso afirmativo, visualizar su inversa

    >> B =[1 2;

    4 8];

    >> if det(B)~=0

    disp('La matriz es invertible')

    inv(B)

    else

    disp('La matriz no es invertible')

    end

    La matriz no es invertible

    37

  • MATLAB Orientado a la matemtica aplicada

    EJEMPLO: calcularemos la suma de los primeros 100 nmeros naturales

    >> sum=0;

    >> for i=1:100

    sum=sum+i;

    end

    >> sum

    sum =

    5050

    COMANDO for Los bucles permiten la ejecucin de una o ms sentencias, en forma repetida. A continuacin presentamos dos tipos.

    Comando for simple El comando for repite un conjunto de sentencias un nmero predeterminado de veces. La sintaxis es

    for i=a:b

    entradas

    end

    La expresin i=a:b significa que las entradas se ejecutarn tantas veces la variable i recorra de uno en uno los valores desde a (valor inicial) hasta b (valor final).

    Una sintaxis muy tpica es la siguiente

    for i=1:n

    entradas

    end

    en este caso las sentencias se ejecutarn tantas veces la variable i recorre de uno en uno los valores de 1 hasta n, es decir, se ejecutarn n-veces.

    Este algoritmo calcula la suma. Ntese que

    tipiamos >>sum=sum+i; (con punto y coma) en lugar de >>sum=sum+i (sin punto y coma) para que MATLAB no imprimiera la lista de las cien ejecuciones.

    Ahora s, visualizamos el ltimo valor de la variable sum, que almacena la suma 1+2+3+100

    38

  • Andrs Prez

    Comando for con especificacin de incremento Esta es una forma ms general de la sentencia for. La sintaxis ms comn es

    for i=1:c:n

    sentencias

    end

    aqu las sentencias se ejecutarn tantas veces la variable i recorre los valores desde 1 hasta n, en incremento de c (de c en c).

    Anidamiento de comandos for Consiste en un bucle dentro de otro. La sintaxis ms comn es

    for i=1:m

    for j=1:n

    sentencias

    end

    end

    en este caso, las sentencias se ejecutn mn veces.

    EJEMPLO: calcularemos la suma de los primeros 50 nmeros pares.

    >> sump=0;

    >> for i=1:100

    if rem(i,2)==0

    sump=sump+i;

    end

    end

    >> sump

    sump =

    2550

    39

  • MATLAB Orientado a la matemtica aplicada

    Advertimos al lector que el uso del comando for no siempre es la mejor opcin. Por ejemplo, si queremos sumar dos matrices de 50x50 podramos definir una matriz de orden 50x50 y luego emplear dos comando for anidados para suma elemento por elemento. No obstante la operacin ser ms rpida si sumamos directamente las matrices. Invitamos al lector a comprobar esto.

    COMANDO while Este comando es una especia de mezcla entre los comandos for e if. Al igual que el comando for, se encarga de ejecutar una o ms sentencias en forma repetida. La diferencia es que en el comando while no se indica la cantidad de iteraciones a hacer, ms bien se indica repetir mientras se cumpla cierta condicin. La sintaxis es

    while condicin

    sentencias

    end

    EJEMPLO: a continuacin definiremos una matriz de orden 4x6 y calcularemos la suma de sus coeficientes

    >>M =[8 7 10 10 5 7;

    9 2 10 5 9 1;

    2 4 2 8 8 9;

    9 6 10 2 10 9];

    >> sum=0;

    >> for i=1:4

    for j=1:6

    sum=sum+M(i,j);

    end

    end

    >> sum

    sum =

    162

    40

  • Andrs Prez

    Cabe destacar que en el anterior algoritmo, en principio, no se conoca de antemano la cantidad de iteraciones a realizar, por lo cual no era viable emplear un comando for simple. Esta es una de las ventajas del comando while.

    EJEMPLO: una consecuencia de la Propiedad Arquimediana es que dado un nmero real > 0, existe un entero > 0 tal que 1 < . Elaboraremos un algoritmo que encuentre un entero > tal que 1 < 0,123456

    >> a=0.123456;

    >> n=1;

    >> while 1/n>=a

    n=n+1;

    end

    >> n

    n =

    9

    41

  • MATLAB Orientado a la matemtica aplicada

    EJERCICIOS 2

    1. Respecto a cada una de las siguientes matrices

    2 64 0 1 4 31 0 5 3 70 0 12 1 9 3 0 61 9 0 15 7 3 5

    1 4 2 4 2 3 4 0 2 3 79 2 1 4 01 0

    estudie si es invertible o no. En caso afirmativo visualizar su inversa, en caso contrario visualizar su determinante.

    2. Calcule la suma de los nmeros del 1 al 1000.

    3. Calcule la suma de los nmeros impares del 1 al 100.

    4. Considere la siguiente sucesin infinita {} , donde

    = (1) 2 ,

    a) Visualice los primeros 10 trminos. b) Calcule la suma de los primeros 111 trminos. c) Calcule la suma de los primeros 10001 trminos. d) Calcule la suma de los primeros 1000001 trminos.

    5. Defina la matriz = ()44 , como

    = 4 9 2 4 3 7 1 5 3 2 03 4 1 1 6 0 3 8 9 1 2 3 2

    Para cada coeficiente , estudie si es divisible o no por 2 9 .

    6. Se desea saber cul de los siguientes nmeros es el mximo y cul es el mnimo 5/3 1 6/9 77/4 3/5 7/2 9 5/6 7/6 9/8 33/2 5 4 3/2

    Disee un algoritmo para resolver este problema.

    7. Se desea saber cules de los siguiente nmeros son primos 9929 902 9043 43568 8123 226968 32780 99991 98893 87491

    Mediante un algoritmo, haga dicho estudio.

    8. Considere la siguiente matriz

    4 9 18 1 40 5 3 42

  • Andrs Prez

    Calcule la transpuesta de la misma.

    9. Defina las siguientes matrices

    = 5 3 1 21 8 9 , = 1 6 5 8 0 7 9 3 2 7 3 1 0

    Mediante un algoritmo, calcule = . Recuerde que la matriz viene dada por =()24 donde

    = 1 3=1

    ; = 1, 2 ; = 1, 2,3, 4

    10. Considere la matriz = ()44 , dada como = 2 5 8 3 0 7 1 0 2

    9 2 1 0 6 8 3 1 1 3 Calcule

    (, )4=1

    4

    =1

    11. A continuacin damos una lista de funciones no acotadas y un nmero positivo

    a) () = 2, = 52 b) () = 1 , = 365 c) () = , = 27 d) () = (), = 100 e) () = (), = 432 Para cada funcin halle un entero positivo tal que |()| > .

    12. Cada uno de los siguientes polinomios tiene una nica raz entera positiva

    a) 2 45 94 b) 2 26 120 c) 3 + 72 84 540 d) 4 513 7212 2181 1512 e) 4 873 11532 3441 2376 Halle la raz entera positiva de cada polinomio.

    43

  • MATLAB Orientado a la matemtica aplicada

    CAPITULO 3. M-Ficheros

    Hay problemas en los cuales se necesita tipiar una enorme lista de sentencias (o lneas de cdigo) en la ventana de comandos, dicho algoritmo recibe el nombre de programa principal. Los M-Ficheros (o simplemente ficheros) son archivos en los que podemos implementar subprogramas para que sean utilizados desde el programa principal. Veamos el siguiente esquema para comprender

    Ejecutar

    Ejecutar

    PROGRAMA PRINCIPAL

    Subprograma 1

    Subprograma 2

    44

  • Andrs Prez

    PROBLEMA 1: consideremos las siguientes matrices

    3 1 62 3 2 7 8 1 , 4 3 51 2 7 7 9 2 9 , 7 8 1 1 9 8 7 1 3 2 1 9 0 22 4 6 1 4 8 , 2 2 34 5 3 2 1 7 9 8 , 7 1 71 4 42 3 9

    Para cada una de ellas queremos un informe que nos muestre

    La suma de los coeficientes El producto de los coeficientes

    Los M-Ficheros son de dos tipos: ficheros script y ficheros de funcin. En el presente captulo plantaremos dos problemas, los cuales resolveremos definiendo un fichero script y un fichero de funcin respectivamente.

    El cdigo (o algoritmo) para obtener el informe de la primera matriz es

    >> A=[-3 1 6;-2 3 2;7 -8 -1];

    >> SUM=0;

    >> PROD=1;

    >> for i=1:3

    for j=1:3

    SUM=SUM+A(i,j);

    PROD=PROD*A(i,j);

    end

    end

    >> SUM

    SUM =

    5

    >> PROD

    PROD =

    12096

    45

  • MATLAB Orientado a la matemtica aplicada O sea, para estudiar cada matriz necesitamos escribir 11 lneas de cdigo. Luego en total, para obtener el informe de las 6 matrices tendramos que escribir nada ms y nada menos que 6x11 = 66 lneas de cdigo.

    Afortunadamente MATLAB nos ofrece la forma de simplificar este trabajo, implementando un subprograma en un M-Fichero, el cual realice el estudio de cada matriz cada vez que se lo indiquemos en la ventana de comandos (programa principal). A continuacin definiremos un fichero script para resolver el problema 1. Ms adelante plantearemos otro problema para resolverlo mediante un fichero de funcin.

    FICHEROS SCRIPT Los ficheros script son el tipo de M-Ficheros ms fciles de definir. Un fichero script (o script) no tiene explcitamente argumentos de entrada ni de salida. Est formado por comandos de MATLAB que se ejecutan en una forma preestablecida y opera con datos existentes en el espacio de trabajo o con nuevos datos creados por el propio script. Cualquier variable que se cree mediante un script permanecer en el espacio de trabajo y podr utilizarse en clculos posteriores. Sigamos los siguientes pasos para crear un script que resuelva el problema 1

    Paso 1: acceder al editor En el men File, se selecciona New y luego M-File. Seguidamente se mostrar el editor

    en el cual definiremos nuestro fichero script.

    46

  • Andrs Prez

    Paso 2: estructurar el fichero A continuacin escribimos en el editor

    %ESTE SUBPROGRAMA CALCULA DE UNA MATRIZ 3X3: % 1)la suma de sus coeficientes % 2)el producto de sus coeficientes SUM=0; PROD=1; for 1=1:3 for j=1:3 SUM=SUM+A(i,j); PROD=PROD*A(i,j); end end SUM PROD

    Paso 3: guardar el fichero Todo fichero debe ser almacenado en disco antes de utilizarse. Esto se hace utilizando la opcin Save as del men File, seleccionando el lugar donde se guardar y proporcionando el nombre del fichero en cuestin.

    A nuestro fichero script le llamamos infomatriz, y qued de esta forma

    Lneas de comentarios: estas lneas describen para que sirve el subprograma. Aunque son opcionales, resultan muy tiles para proporcionar informacin sobre el mismo en cuestin

    Cuerpo: esta es la parte que contiene el cdigo del subprograma que realiza las operaciones especificadas. Dicho cdigo puede contener cualquier comando de MATLAB

    47

  • MATLAB Orientado a la matemtica aplicada

    Paso 4: ejecutar el fichero Un fichero definido por el usuario se utiliza de la misma forma que un comando predefinido en MATLAB, desde la ventana de comandos o desde otro fichero. Obviamente, antes de usarlo debe estar guardado.

    Nos dirigimos ahora a la ventana de comandos para obtener el informe de la primera matriz mediante el fichero infomatriz

    PROBLEMA 1 (continuacin): para obtener el informe de la primera matriz mediante el fichero infomatriz tipiamos

    >> A=[-3 1 6;-2 3 2;7 -8 -1]; %primera matriz

    >> infomatriz

    SUM =

    5

    PROD =

    12096

    para obtener el informe de las matrices restantes procedemos de forma similar

    >> A=[4 3 5;-1/2 7 -7;9 -2 9]; %segunda matriz

    >> infomatriz

    SUM =

    27.5000

    PROD =

    -238140

    >> A=[-7/8 -1 1;9 8 -7;1/3 -3 -9]; %tercera matriz

    >> infomatriz

    SUM =

    -2.5417

    PROD =

    -3969

    48

  • Andrs Prez

    As, ya no es necesario escribir 66 lneas de cdigo en la ventana de comandos para estudiar las 6 matrices, hemos optimizado nuestro trabajo utilizando slo 2x6 +13= 25 lneas de cdigo (el cdigo de la ventana de comandos mas el cdigo del fichero). Adems, este fichero script lo podemos utilizar posteriormente.

    Cabe resaltar la siguiente observacin: todas las matrices del problema 1 eran de orden 3x3, lo que nos permiti utilizar el script infomatriz para estudiar cada una de ellas.

    Realmente que es un fichero script? Hasta ahora los comandos en MATLAB que hemos visto se ejecutan en la ventana de comandos. Sin embargo, la utilizacin de la ventana de comandos se restringe generalmente a la ejecucin de un nmero pequeo de sentencias. En caso contrario, cuando el nmero de

    >> A=[-9 0 2;-2 4 6;1 4 -8]; %cuarta mariz

    >> infomatriz

    SUM =

    -2

    PROD =

    0

    >> A=[2 -2 3;-4 5/3 2;1 -7 -9/8]; %quinta matriz

    >> infomatriz

    SUM =

    -4.4583

    PROD =

    1260

    >> A=[7 -1 7;-1 4 4;2 -3 -9]; %sexta matriz

    >> infomatriz

    SUM =

    10

    PROD =

    42336

    49

  • MATLAB Orientado a la matemtica aplicada sentencias es demasiado elevado (como el algoritmo para resolver el problema 1), esta metodologa no es apropiada.

    El problema proviene, bsicamente, de que la ventana de comandos no es suficientemente interactiva, los comando no pueden ser guardados y ejecutados de nuevo a peticin del usuario. Esto implica que cada vez que se pulsa la tecla Enter slo se ejecuta el ltimo comando, y todo lo anterior permanece inalterable. Si se necesita realizar alguna correccin o cambio sobre alguno de esos comandos previamente ejecutados, ser necesario volver a escribirlos y ejecutarlos de nuevo de uno en uno.

    Otra forma diferente de ejecutar comandos en MATLAB es crear un fichero script con las lneas de cdigo para ejecutarlas posteriormente (es decir implementando un subprograma en MATLAB). Cuando se ejecuta este fichero en la ventana de comandos, las sentencias que contiene son ejecutadas en el orden en que aparecen en el fichero. Adems, si fueran necesarias correcciones o cambios posteriores, slo habra que editar el fichero y ejecutarlo de nuevo.

    A continuacin modificaremos el problema 1 y lo resolveremos.

    PROBLEMA 2: consideremos las siguientes matrices

    05 9 47 8 , 5 3 4 1 8 , ( 5 9 9 8 4 7 5 6 ) 9 7 33 0 8 7 9 4 , 1 4 37 4 ,

    3 1 9 0 5 7 7 3 4 4 8 9 0 91 06 1

    Para cada una de ellas queremos un informe que nos muestre

    La suma de los coeficientes El producto de los coeficientes

    50

  • Andrs Prez Lo que se pide en este nuevo problema es lo mismo en el caso del problema 1, sin embargo, no podemos utilizar el fichero scritp infomatriz pues este solo se aplica para matrices 3x3, y como podemos ver el problema 2 nos plantea matrices no cuadradadas y hasta unidimensionales (la nica matriz 3x3 es la cuarta).

    Podramos modificar el scritp infomatriz de manera que pueda hacer el estudio de cualquier matriz (cuadrada, no cuadrada y unidimensional), bastara cambiar los ndices de los bucles a m (nmero de filas) y n (nmero de columnas) respectivamente

    for 1=1:3 for j=1:3 SUM=SUM+A(i,j); PROD=PROD*A(i,j); end end y de esta forma , por ejemplo, para estudiar la primera matriz debemos tipiar en la ventana de comandos

    >>m=3;

    >>n=2 ;

    >>A=[0 4;-5 -7;9 8]

    Sin embargo, esta nueva estructura nos obliga a considerar implcitamente a m,n, y A como argumentos de entrada, lo cual hace ms complejo su uso. Es por ello que MATLAB ofrece otro tipo de M-Fichero: fichero de funcin.

    FICHEROS DE FUNCIN Un fichero de funcin es prcticamente un fichero script pero ms sofisticado. Su diferencia principal con el script es que si tiene explcitamente argumentos de entrada y salida. Lo ficheros de funcin, al igual que los script, estn formado por comandos de MATLAB que se ejecutan en una forma preestablecida. Los pasos para resolver el problema 2 con un fichero de funcin son similares al caso script:

    Paso 1: acceder al editor Recurdese que en el men File, se selecciona New y luego M-File. Seguidamente se mostrar el editor.

    Paso 2: estructurar el fichero A continuacin escribimos en el editor

    51

  • MATLAB Orientado a la matemtica aplicada

    function[SUM,PROD]=estudiomatriz(A,m,n) %ESTE SUBPROGRAMA ESTUDIA UNA MATRIZ %ARGUMENTOS DE ENTRADA: %A: matriz a estudiar %m: numero de filas %n: numero de columnas %ARGUMENTOS DE SALIDA: %SUM: suma de los coeficientes de A %PROD: producto de los coeficientes de A SUM=0; PROD=1; for i=1:m for j=1:n SUM=SUM+A(i,j); PROD=PROD*A(i,j); end end

    NOTA: la forma general que tiene la lnea de definicin es

    function[argumentos_de_salida]=nombre_funcion(argumentos_de_entrada)

    El nombre puede estar formado por letras, dgitos y el carcter subrayado. Las reglas para el nombre de este tipo de M-Fichero son las mismas que para la construccin de nombres de

    La palabra function debe ser la primera palabra tecleada en minscula

    Lista de argumentos de salida encerrados entre corchetes

    Nombre de la funcin

    Lista de argumentos de entrada encerrados entre parntesis

    Lnea de definicin: esta lnea indica el nombre del fichero y los argumentos de entrada y salida

    Lnea H1: esta lnea de comentario contiene el nombre y una descripcin corta del fichero

    Lneas de texto de ayuda: estas nos ofrecen informacin sobre cules son los argumentos de entrada y salida del fichero

    Cuerpo: esta es la parte que contiene el cdigo que realiza las operaciones especificadas

    52

  • Andrs Prez variables. Se recomienda evitar usar para este propsito nombres de funciones ya predefinidas en MATLAB (como sin, cos, sqrt, etc) as como nombres de variables ya predefinidas por el usuario o internamente por MATLAB.

    Paso 3: guardar el fichero El procedimiento es el mismo en caso del fichero script. A nuestro fichero de funcin le llamamos estudiomatriz, y qued de esta forma

    Paso 4: ejecutar el fichero

    PROBLEMA 2 (continuacin): tipiamos

    >> A=[0 4;-5 -7;9 8]; %primera matriz

    >> [SUM,PROD]=estudiomatriz(A,3,2)

    SUM =

    9

    PROD =

    0

    53

  • MATLAB Orientado a la matemtica aplicada

    Realmente que es un fichero de funcin? Sabemos que una funcin matemtica y=f(x) asocial un nmero f(x) (variable dependiente) a cada nmero x (variable independiente). Cuando se introduce un valor x (entrada) en la expresin de la funcin, se obtiene un valor y (salida).

    Existen muchas funciones que estn ya predefinidas en MATLAB y que pueden ser utilizadas en expresiones simplemente tecleando su nombre junto con el argumento de entrada como por ejemplo las sunciones sin(x), cos(x), exp(x) y sqrt(x).

    Frecuentemente, a la hora de programar, existe la necesidad de operar con funciones distintas que no estn predefinidas (como el caso de obtener estudiar las matrices del problema 2). Este problema se puede resolver creando un M-Fichero que sirva como una funcin. Tal M-Fichero recibe el nombre de fichero de funcin. En forma esquemtica, este tipo de fichero se comporta de la siguiente forma

    donde la entrada y la salida pueden estar compuestas por una o ms variables (escalares, vectoriales o matriciales).

    EL COMANDO help Antes de utilizar un fichero scirpt o un fichero de funcin, se debe conocer todos los aspectos del mismo, como por ejemplo para que sirve. Puede suceder que el usuario, una vez definido un fichero, no recuerde exactamente que trabajo realiza. Para solventar este problema est el comando help.

    Fichero de funcin ENTRADA SALIDA

    PROD =

    21

    >> A=[-3 1 -7 -3 0 9;9 0 4 4 1 0;5 7 8 9 6 1];%sexta matriz

    >> [SUM,PROD]=estudiomatriz(A,3,6)

    SUM =

    51

    PROD =

    0

    54

  • Andrs Prez

    Con el anterior ejemplo queda clara la importancia de las lneas de comentario hechas en los ficheros.

    COMPARATIVA ENTRE UN FICHERO SCRIPT Y UN FICHERO DE FUNCIN

    Algunas similitude