Post on 15-Oct-2015
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: andres.chi.cuadrado@gmail.com
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