Matlab Orientado A La Matemática Aplicada - Andrés Pérez
Matlab Orientado A La Matemática Aplicada - Andrés Pérez
Matlab Orientado A La Matemática Aplicada - Andrés Pérez
MATLAB
Orientado a
la matemática aplicada
2da Edición
Universidad Centroccidental
“Lisandro Alvarado”
MATLAB
Orientado a la matemática aplicada
Segunda Edición
Andrés E. Pérez G.
E-mail: andres.chi.cuadrado@gmail.com
CONTENIDO
INTRODUCCIÓN .........................................................................................................................................11
OBJETIVO ........................................................................................................................................................... 11
JUSTIFICACIÓN ................................................................................................................................................... 11
¿COMO UTILIZAR ESTE TUTORIAL? ................................................................................................................... 11
CAPITULO 1. COMENZANDO A TRABAJAR CON MATLAB ............................................................................. 12
TÓPICOS ELEMENTALES..................................................................................................................................... 12
¿Qué es MATLAB? ......................................................................................................................................... 12
Origen ............................................................................................................................................................ 12
Versiones e historia ....................................................................................................................................... 12
¿Qué versión 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
NÚMEROS, OPERADORES Y VARIABLES ............................................................................................................ 16
Operaciones básicas ...................................................................................................................................... 16
Creación de variables .................................................................................................................................... 16
Funciones matemáticas elementales de MATLAB ........................................................................................ 18
Algunos números 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 símbolo %................................................................................................................................................... 31
4
Andrés Pérez
LÍMITES .............................................................................................................................................................. 66
DERIVADAS ........................................................................................................................................................ 67
INTEGRALES ....................................................................................................................................................... 68
EJERCICIOS 4 ...................................................................................................................................................... 71
CAPITULO 5. GRÁFICOS ..............................................................................................................................75
GRÁFICOS EN 2D ................................................................................................................................................ 75
Graficando funciones del tipo y=f(x) ............................................................................................................. 75
Graficando curvas paramétricas en el plano ................................................................................................. 77
GRÁFICOS EN 3D ................................................................................................................................................ 79
Graficando funciones del tipo z=f(x,y) .......................................................................................................... 79
Graficando curvas paramétricas en el espacio .............................................................................................. 82
EJERCICIOS 5 ...................................................................................................................................................... 84
CAPITULO 6. ESTADÍSTICA ..........................................................................................................................86
MEDIDAS DE LOCALIZACIÓN ............................................................................................................................. 86
Media aritmética ........................................................................................................................................... 86
Media geométrica ......................................................................................................................................... 87
Media armónica............................................................................................................................................. 88
Media ajustada .............................................................................................................................................. 89
Máximo .......................................................................................................................................................... 89
Mínimo .......................................................................................................................................................... 90
Mediana ......................................................................................................................................................... 91
MEDIDAS DE DISPERSIÓN .................................................................................................................................. 91
Desviación estándar ...................................................................................................................................... 91
Varianza ......................................................................................................................................................... 92
Rango ............................................................................................................................................................. 92
Rango intercuartil .......................................................................................................................................... 93
Percentil ......................................................................................................................................................... 93
Quantil ........................................................................................................................................................... 94
Oblicuidad ...................................................................................................................................................... 94
Curtosis .......................................................................................................................................................... 95
Tabla con las frecuencias absolutas y relativas ............................................................................................. 95
Desviación absoluta ....................................................................................................................................... 96
6
Andrés Pérez
Momentos centrales...................................................................................................................................... 97
GRUPOS DE DATOS ............................................................................................................................................ 97
Matriz de covarianza ..................................................................................................................................... 97
Matriz de correlación lineal ........................................................................................................................... 98
Matriz de los coeficientes de correlación...................................................................................................... 98
Matriz con tabulación-cruzada .................................................................................................................... 100
Resumen estadístico por grupo ................................................................................................................... 100
GRÁFICOS ESTADÍSTICOS ................................................................................................................................. 101
Gráficos simples........................................................................................................................................... 102
Línea de ajuste de mínimos cuadrados ....................................................................................................... 103
Histograma .................................................................................................................................................. 104
Gráfico de barras verticales ......................................................................................................................... 105
Gráfico de barras horizontales .................................................................................................................... 106
Gráfico de escaleras..................................................................................................................................... 107
Gráfico de tallo ............................................................................................................................................ 108
Gráfico de tarta............................................................................................................................................ 109
Generación de números al azar ................................................................................................................... 110
Diagramas de distribuciones de probabilidad ............................................................................................. 111
EJERCICIOS 6 .................................................................................................................................................... 112
CAPÍTULO 7. OPTIMIZACIÓN..................................................................................................................... 114
PROGRAMACIÓN LINEAL ................................................................................................................................. 114
Formato general de un programa lineal...................................................................................................... 114
Minimización ............................................................................................................................................... 115
Maximización............................................................................................................................................... 118
PROGRAMACIÓN CUADRÁTICA ....................................................................................................................... 121
EJERCICIOS 7 .................................................................................................................................................... 127
CAPÍTULO 8. MÉTODOS NUMÉRICOS ........................................................................................................ 130
RESOLUCIÓN DE ECUACIONES NO LINEALES................................................................................................... 130
Método de punto fijo .................................................................................................................................. 130
Método de bisección ................................................................................................................................... 132
Método de Newton ..................................................................................................................................... 135
Método de Euler .......................................................................................................................................... 137
7
MATLAB Orientado a la matemática aplicada
10
Andrés Pérez
INTRODUCCIÓN
OBJETIVO
En el presente trabajo se pretende dar a conocer las aplicaciones básicas de MATLAB en la matemática
aplicada, y corresponde a un material de ayuda en un curso del software mencionado, orientado a los
estudiantes de Licenciatura en Ciencias Matemáticas del el Decanato de Ciencias y Tecnología 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.
JUSTIFICACIÓN
Durante el desarrollo de la carrera Licenciatura en Ciencias Matemáticas, se destaca la gran importancia del
modelado, simulación y optimización de fenómenos reales que son objeto de estudio en asignaturas como:
estadística, investigación de operaciones, análisis numérico, programación no lineal, etc. y muchas otras áreas
no solo de la matemática, sino de las ciencias aplicada en general, que requieren un soporte computacional
para su compresión.
Es por esta razón que se considera vital enseñar a los estudiantes de matemática como utilizar el módulo
básico de MATLAB, para así fomentar su motivación a cursar asignaturas de la matemática aplicada y con ello
logren expandir su intelecto académico.
En los capítulos subsiguientes (sexto, séptimo y octavo) se dan algunos ejemplos en que MATLAB facilita el
estudio de la matemática aplicada: funciones y procesamiento de datos estadísticos, técnicas de optimización
lineal y no lineal y finalmente implementación de métodos numéricos.
El último capítulo trata sobre los componentes de MATLAB: toolboxes y blocksets. Este tema se colocó al final
para que el lector pueda ahondar más acerca de las aplicaciones del software.
En cada capítulo se da la explicación teórica y ejemplos ilustrativos sobre el tópico tratado, además de una lista
de ejercicios para que lector internalice lo aprendido, sin que ello le obligue a resolverlos para avanzar en los
capítulos restantes. Cabe destacar que algunos ejemplos y/o problemas planteados en cada capítulo se
formulan de manera que el lector aplique las técnicas ilustradas en el mismo (diseñando un algoritmo), pese a
que dichos problemas pudiesen ser resueltos de manera más “practica” (empleando un comando predefinido
en MATLAB). El objetivo que se persigue es que el lector se adiestre en diseñar nuevas formas de revolver
problemas con MATLAB, y no sea dependiente de las funciones ya predefinidas.
11
MATLAB Orientado a la matemática aplicada
TÓPICOS ELEMENTALES
¿Qué es MATLAB?
MATLAB (abreviatura de MATrix LABoratory, “laboratorio de matrices”) es un software matemático que ofrece
un entorno de desarrollo integrado (IDE) el cual permite el análisis y la computación matemáticos interactivos
de forma sencilla con más de 500 funciones matemáticas, estadísticas y técnicas implementadas, así como la
visualización de todo tipo de gráficos de ingeniería y científicos. Posee un lenguaje de programación propio
(lenguaje M) y además está disponible para las plataformas Unix, Windows y Mac OS X.
Entre sus prestaciones básicas se hallan: la manipulación de matrices, la representación de datos y funciones, la
implementación de algoritmos, la creación de interfaces de usuario (GUI) y la comunicación 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 simulación multidominio) y
GUIDE (editor de interfaces de usuario - GUI). Además, 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 fácil 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 versión, a finales de los años 70, se escribió en FORTRAN, siendo la única estructura de datos la
matriz. Posteriormente, en los años 80, MATLAB fue rediseñado en C. La versión 3 para MS-DOS desde
principios de los años 90. En 1993 aparece la versión 4, para Windows 3.11, que ya incorpora la primera versión
del Simulink. Las versiones más recientes se identifican con el nombre del año, así: R2008a, R2008b, R2009a,
etc.
Hoy en día MATLAB es un estándar de facto en ingeniería y computación científica. Se celebran congresos
monotemáticos sobre sus aplicaciones y distintas empresas e instituciones venden sus toolboxes como third
parties o bien las publican en Internet con acceso libre.
12
Andrés Pérez
La pantalla de entrada de MATLAB constituye el marco de trabajo general del programa. Los elementos más
importantes de esta pantalla de inicio son los siguientes:
13
MATLAB Orientado a la matemática 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 continuación del prompt >> y, una vez completadas, se pulsa Enter.
La ventana Comand History aparece cuando se inicia MATLAB, situada en la parte inferior derecha del
escritorio de MATLAB. Esta ventana muestra una relación de las funciones utilizadas recientemente en la
ventana de comandos. También muestra un indicador de comienzo de sesión.
14
Andrés Pérez
Su función es ver, abrir y hacer cambios en los ficheros del entorno de MATLAB. Esta ventana permite explorar
los directorios del ordenador en forma análoga 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, tamaño, nombre, etc.
La ventana de ayuda
MATLAB dispone de un sistema de ayuda en línea 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 hipervínculos para navegar por su contenido. La parte izquierda del
panel de navegación de la ayuda presenta en su zona superior una barra con las opciones Content (ayuda por
15
MATLAB Orientado a la matemática aplicada
contenido), Index (ayuda por índice alfabético), Search (buscar ayuda por tema) y Favorites (temas de ayuda
favoritos).
Operaciones básicas
Una de las primeras aplicaciones de MATLAB es su uso para la realización de operaciones aritméticas como si
se tratara de una calculadora convencional, pero con una importante ventaja sobre ella: la precisión en el
cálculo. Las operaciones son realizadas bien en forma exacta o bien especificando al programa el grado de
precisión que desee. Los operadores aritméticos tienen la siguiente sintaxis:
x+y Suma
x-y Resta
x*y Multiplicación
x/y División
x^y Potenciación
Operadores aritméticos.
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.
>> 1/2+1/3
ans =
0.8333
Creación de variables
MATLAB no requiere ningún tipo de comando para declarar variables, sencillamente crea la variable mediante
la asignación directa de su valor.
16
Andrés Pérez
>>x=1/2
x=
0.5000
análogamente
>> y=1/3
>>y =
0.3333
>>z=x+y
z=
0.8333
>>z
z=
0.8333
>>z=10.2
z=
10.2
17
MATLAB Orientado a la matemática 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 operación realizada.
EJEMPLO: la sentencia
>>r=2^(1/3);
hace que a la variable r se le asigne el valor de la raíz cúbica de dos, pero no se muestra la asignación.
Verifiquemos que la MATLAB si hizo tal asignación
>>r
r=
1.2599
SINTAXIS EXPLICACIÓN
exp(x) Exponencial
factorial(n) Factorial
18
Andrés Pérez
EJEMPLO:
>> abs(-1)
ans =
>> 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 matemática aplicada
SINTAXIS EXPLICACIÓN
pi Número 𝜋𝜋
exp(1) Número 𝑒𝑒
i Unidad imaginaria 𝑖𝑖
Números especiales.
EJEMPLO:
>> pi
ans =
3.1416
>> i
ans =
0 + 1.0000i
>> realmin
ans =
2.2251e-308
20
Andrés Pérez
VECTORES
Para representar a un vector de n elementos se puede definir en MATLAB una variable de las siguientes
formas:
v=[v1,v2,v3,…,vn]
v=[v1 v2 v3 … vn]
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
Hay formas prácticas de definir ciertos vectores, sin necesidad de escribir explícitamente todos sus elementos.
Se presentan en la tabla siguiente
SINTAXIS EXPLICACIÓN
21
MATLAB Orientado a la matemática aplicada
EJEMPLO:
>>G=[1:0.2:2]
G=
En MATLAB también se pueden definir vectores fila y vectores columna. Un vector columna se obtiene
separando sus elementos por “punto y coma”.
EJEMPLO:
>>h=[0.2;4;5;10]
h=
0.2000
4.0000
5.0000
10.0000
22
Andrés Pérez
SINTAXIS EXPLICACIÓN
EJEMPLO:
>> z(4)
ans =
>> 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 matemática aplicada
MATRICES
En MATLAB se definen las matrices colocando entre corchetes todos sus vectores fila separados por “punto y
coma”
EJEMPLO:
matrix =
1 2 3
4 5 6
7 8 9
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 EXPLICACIÓN
24
Andrés Pérez
columna
25
MATLAB Orientado a la matemática aplicada
y la b-ésima
>>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];
26
Andrés Pérez
B1 =
8 7 3 3
9 2 7 5
5 8 5 1
1 3 5 0
B2 =
5 1 2 1
4 5 8 9
0 2 1 0
3 6 7 7
B3 =
1 2 8 5
2 2 3 7
8 6 7 8
2 4 7 1
B4 =
1 6 5 7
7 7 9 8
3 4 1 1
5 1 4 4
27
MATLAB Orientado a la matemática aplicada
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
El fichero MATLAB.mat
Para guardar el estado de una sesión 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 sesión.
28
Andrés Pérez
Ficheros .mat
Se pueden guardar también 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 sesión
basta tipiar
>> load nombre1
Si no se indica ninguna variable, se guardan todas las variables creadas en esa sesión.
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)
SINTAXIS EXPLICACIÓN
29
MATLAB Orientado a la matemática aplicada
directorio actual
EJEMPLO:
>> A
A=
1 2 3 4 5
>> B
B=
6 7 8 9 10
30
Andrés Pérez
Si se teclean varios comandos en la misma línea, 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 símbolo %
Cuando se teclea el símbolo % (tanto por ciento) al principio de una línea, MATLAB considerará dicha línea
como un comentario. Esto significa que cuando se pulsa la tecla Enter la línea no será ejecutada. El carácter %
seguido de texto (comentario) puede ser utilizado también después de un comando (en la misma línea). El
comentario no tiene ningún efecto sobre la ejecución del comando.
Habitualmente no es necesario poner comentarios en la ventana de comandos. Éstos se utilizan más bien en
programas para añadir descripciones o para explicar partes del código.
31
MATLAB Orientado a la matemática 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 aún
seguirán definidas, con sus valores asignados, y podrán seguir usándose normalmente. Esto tampoco afecta a
los comandos que han sido tecleados anteriormente, los cuales pueden ser recuperados pulsando las flechas
arriba y abajo.
1. Las cadenas aparecen en color púrpura mientras se teclean. Al finalizarlas correctamente (con la
comilla de cierre) se vuelven de color marrón.
2. La sintaxis de control de flujo aparece en color azul. Todas las líneas entre la apertura y el cierre de las
funciones de control de flujo aparecen correctamente sangradas.
3. Los paréntesis, 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
matemáticas.
4. Al introducir el símbolo % 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
Andrés Pérez
EJERCICIOS 1
1. Calcule
a) 22 + 23 + 24
1 1 1 1 1
b) + + + +
2 2 3 4 5
c) √2 + √3 + √4
d) (1⁄2 − 1)2 + (1⁄3 − 1)3 + (1⁄4 − 1)4
5 6
e) +
(√5+1⁄2)5 (√6+1⁄2)6
f) 𝑒𝑒 √2 − 𝑒𝑒 √3 − 𝑒𝑒 √4
g) 𝐿𝐿𝐿𝐿𝐿𝐿(𝐿𝐿𝐿𝐿𝐿𝐿(𝐿𝐿𝐿𝐿𝐿𝐿(𝐿𝐿𝐿𝐿𝐿𝐿(4) + 3) + 2) + 1)
2 3 4
h) �5⁄𝑒𝑒 4 + 4 + �5⁄𝑒𝑒 3 + 3 + �5⁄𝑒𝑒 2 + 2
2. Cambie los siguientes puntos de coordenadas rectangulares (𝑥𝑥, 𝑦𝑦), a coordenadas polares (𝑟𝑟, 𝜃𝜃)
a) 𝑃𝑃1 = (1, 4) d) 𝑃𝑃4 = (10, 0)
b) 𝑃𝑃2 = (2, −2) e) 𝑃𝑃5 = �11, √2�
c) 𝑃𝑃3 = (− 1⁄2 , 8) 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, 𝜋𝜋) d) 𝑃𝑃4 = (5, 3𝜋𝜋⁄4)
b) 𝑃𝑃2 = (7, −2𝜋𝜋) e) 𝑃𝑃5 = (0, 𝜋𝜋⁄2)
c) 𝑃𝑃3 = �√3, 0� f) 𝑃𝑃6 = (𝑒𝑒, 5)
Tenga en cuenta que las coordenadas cartesianas de un punto 𝑃𝑃 = (𝑟𝑟, 𝜃𝜃) vienen dadas por
𝑥𝑥 = 𝑟𝑟 𝑐𝑐𝑐𝑐𝑐𝑐(𝜃𝜃) y 𝑥𝑥 = 𝑟𝑟 𝑠𝑠𝑠𝑠𝑠𝑠(𝜃𝜃)
33
MATLAB Orientado a la matemática 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)’]
1 2 1 −2 1⁄3 0 8
𝐴𝐴 = � �
−4 0 𝐷𝐷 = �−9⁄2 0 4 1 3�
0 6 −5 0 4
0 −1
2 3 −2 −9 −8 −2⁄3
𝐵𝐵 = ⎛ 0 9⎞
−4 3 𝐸𝐸 = � 5 0 1 0�
⎝ 0 8⎠ 0 5⁄8 −7 2
−7 0 0 1
8 −7 1⁄2
𝐶𝐶 = � 0 0 −5 � 0 1⁄5
𝐹𝐹 = � �
6 1 1 2⁄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
Andrés Pérez
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 también se
pueden diseñar 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 EXPLICACIÓN
== Igual que
~= Distinto de
Operadores relacionales.
SINTAXIS EXPLICACIÓN
~A Negación lógica de A
Operadores lógicos.
Los operadores lógicos ofrecen un camino para combinar o negar expresiones relacionales.
35
MATLAB Orientado a la matemática aplicada
COMANDO if
Las bifurcaciones permiten la ejecución de una o más sentencias, dependiendo del
cumplimiento de una condición. A continuación presentamos dos tipos.
Comando if simple
Ejecuta una o más sentencias dependiendo del cumplimiento de una condición. La sintaxis es
if condición
Aquí se teclea el bloque de sentencias, las cuales se
sentencias
ejecutarán siempre que la condición sea verdadera
end
Téngase en cuenta que la condición debe ser una expresión lógica, la cual generalmente es un
combinación de operadores relacionales y lógicos.
>> A=[ 8 1 6
3 5 7
4 9 2];
>> if det(A)~=0
inv(A)
end
ans =
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.
36
Andrés Pérez
Comando if múltiple
A diferencia del anterior, este comando clasifica las sentencias en varios bloques, adjudicando
a cada bloque una condición, de modo que se ejecutará un solo bloque si la condición
respectiva es verdadera. La sintaxis es
if condicion1
Aquí se teclea el bloque Nº1 de sentencias, las cuales
sentencias 1 se ejecutarán siempre que la condición1 sea cierta
elseif condicion2
Aquí se teclea el bloque Nº2 de sentencias, las cuales
sentencias 2
se ejecutarán siempre que la condición2 sea cierta
elseif condicion3
Debe notarse que las condiciones 1, 2, 3 y 4 son mutuamente excluyentes, de modo que sólo
se ejecutará un bloque de sentencias (1, 2, 3 o 4 disyunción exclusiva).
>> B =[1 2;
4 8];
>> if det(B)~=0
inv(B)
else
end
La matriz no es invertible
37
MATLAB Orientado a la matemática aplicada
COMANDO for
Los bucles permiten la ejecución de una o más sentencias, en forma repetida. A continuación
presentamos dos tipos.
for i=a:b
entradas
end
La expresión i=a:b significa que las entradas se ejecutarán tantas veces la variable i recorra de
uno en uno los valores desde a (valor inicial) hasta b (valor final).
for i=1:n
entradas
end
en este caso las sentencias se ejecutarán tantas veces la variable i recorre de uno en uno los
valores de 1 hasta n, es decir, se ejecutarán n-veces.
>> sum=0;
Este algoritmo calcula la suma. Nótese que
>> for i=1:100 tipiamos >>sum=sum+i; (con punto y coma) en
lugar de >>sum=sum+i (sin punto y coma) para
sum=sum+i; que MATLAB no imprimiera la lista de las cien
ejecuciones.
end
>> sum
38
Andrés Pérez
for i=1:c:n
sentencias
end
aquí las sentencias se ejecutarán tantas veces la variable i recorre los valores desde 1 hasta n,
en incremento de c (de c en c).
>> sump=0;
if rem(i,2)==0
sump=sump+i;
end
end
>> sump
sump =
2550
for i=1:m
for j=1:n
sentencias
end
end
39
MATLAB Orientado a la matemática aplicada
>>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 j=1:6
sum=sum+M(i,j);
end
end
>> sum
sum =
162
Advertimos al lector que el uso del comando for no siempre es la mejor opción. Por ejemplo, si
queremos sumar dos matrices de 50x50 podríamos definir una matriz de orden 50x50 y luego
emplear dos comando for anidados para suma elemento por elemento. No obstante la
operación será más rápida 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 más sentencias en forma repetida. La diferencia es que en el
comando while no se indica la cantidad de iteraciones a hacer, más bien se indica repetir
mientras se cumpla cierta condición. La sintaxis es
while condición
sentencias
end
40
Andrés Pérez
>> a=0.123456;
>> n=1;
n=n+1;
end
>> n
n=
41
MATLAB Orientado a la matemática aplicada
EJERCICIOS 2
𝑛𝑛
𝑎𝑎𝑛𝑛 = (−1)𝑛𝑛 , ∀ 𝑛𝑛 ∈ ℕ
2𝑛𝑛
42
Andrés Pérez
Mediante un algoritmo, calcule 𝐶𝐶 = 𝐴𝐴𝐴𝐴. Recuerde que la matriz 𝐶𝐶 viene dada por 𝐶𝐶 =
(𝑐𝑐𝑖𝑖𝑖𝑖 )2×4
donde
3
4 4
� � 𝐵𝐵(𝑖𝑖, 𝑗𝑗)
𝑖𝑖=1 𝑗𝑗=1
Para cada función 𝑓𝑓 halle un entero positivo 𝑛𝑛 tal que |𝑓𝑓(𝑛𝑛)| > 𝜖𝜖.
12. Cada uno de los siguientes polinomios tiene una única raíz entera positiva
a) 𝑥𝑥 2 − 45𝑥𝑥 − 94
b) 𝑥𝑥 2 − 26𝑥𝑥 − 120
c) 𝑥𝑥 3 + 7𝑥𝑥 2 − 84𝑥𝑥 − 540
d) 𝑥𝑥 4 − 51𝑥𝑥 3 − 721𝑥𝑥 2 − 2181𝑥𝑥 − 1512
e) 𝑥𝑥 4 − 87𝑥𝑥 3 − 1153𝑥𝑥 2 − 3441𝑥𝑥 − 2376
43
MATLAB Orientado a la matemática aplicada
CAPITULO 3. M-Ficheros
Hay problemas en los cuales se necesita tipiar una enorme lista de sentencias (o líneas de
código) 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
PROGRAMA
PRINCIPAL
Subprograma 1
Ejecutar
Ejecutar
Subprograma 2
44
Andrés Pérez
Los M-Ficheros son de dos tipos: ficheros script y ficheros de función. En el presente capítulo
plantaremos dos problemas, los cuales resolveremos definiendo un fichero script y un fichero
de función respectivamente.
−3 1 6 4 3 5 − 7⁄8 −1 1
� −2 3 2� , �− 1⁄2 7 −7 � , � 9 8 −7 �
7 −8 −1 9 −2 9 1⁄3 2 1
−9 0 2 2 −2 3 7 −1 7
� −2 4 6� , �−4 5⁄3 2 �, � −1 4 4�
1 4 −8 1 −7 − 9⁄8 2 −3 −9
>> SUM=0;
>> PROD=1;
for j=1:3
SUM=SUM+A(i,j);
PROD=PROD*A(i,j);
end
end
>> SUM
SUM =
>> PROD
PROD =
12096
45
MATLAB Orientado a la matemática aplicada
O sea, para estudiar cada matriz necesitamos escribir 11 líneas de código. Luego en total, para
obtener el informe de las 6 matrices tendríamos que escribir nada más y nada menos que 6x11
= 66 líneas de código.
FICHEROS SCRIPT
Los ficheros script son el tipo de M-Ficheros más fáciles de definir. Un fichero script (o script)
no tiene explícitamente 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 cálculos
posteriores. Sigamos los siguientes pasos para crear un script que resuelva el problema 1
46
Andrés Pérez
%ESTE SUBPROGRAMA CALCULA DE UNA MATRIZ 3X3: Líneas de comentarios: estas líneas
% 1)la suma de sus coeficientes describen para que sirve el
subprograma. Aunque son opcionales,
% 2)el producto de sus coeficientes
resultan muy útiles para proporcionar
información sobre el mismo en cuestión
SUM=0;
PROD=1;
for 1=1:3
for j=1:3 Cuerpo: esta es la parte que contiene el código
SUM=SUM+A(i,j); del subprograma que realiza las operaciones
PROD=PROD*A(i,j); especificadas. Dicho código puede contener
cualquier comando de MATLAB
end
end
SUM
PROD
47
MATLAB Orientado a la matemática aplicada
Nos dirigimos ahora a la ventana de comandos para obtener el informe de la primera matriz
mediante el fichero infomatriz
>> infomatriz
SUM =
PROD =
12096
>> infomatriz
SUM =
27.5000
PROD =
-238140
>> infomatriz
SUM =
-2.5417
PROD =
-3969
48
Andrés Pérez
>> infomatriz
SUM =
-2
PROD =
>> infomatriz
SUM =
-4.4583
PROD =
1260
>> infomatriz
SUM =
10
PROD =
42336
Así, ya no es necesario escribir 66 líneas de código en la ventana de comandos para estudiar las
6 matrices, hemos optimizado nuestro trabajo utilizando sólo 2x6 +13= 25 líneas de código (el
código de la ventana de comandos mas el código del fichero). Además, este fichero script lo
podemos utilizar posteriormente.
Cabe resaltar la siguiente observación: todas las matrices del problema 1 eran de orden 3x3, lo
que nos permitió utilizar el script infomatriz para estudiar cada una de ellas.
49
MATLAB Orientado a la matemática aplicada
sentencias es demasiado elevado (como el algoritmo para resolver el problema 1), esta
metodología no es apropiada.
Otra forma diferente de ejecutar comandos en MATLAB es crear un fichero script con las
líneas de código 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. Además, si fueran
necesarias correcciones o cambios posteriores, sólo habría que editar el fichero y ejecutarlo de
nuevo.
0 4
−5 3
� −5 −7 � , � �, ( −5 9 9⁄8 4 −7⁄5 −6 )
4 1⁄8
9 8
− 1⁄4 −3 1 −7 −3 0 9
9 7 3
� −3 0 8 �, � 3 �, � 9 0 4 4 1 0�
7 −9 4 −7 5 7 8 9 6 1
4
50
Andrés Pérez
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).
Podríamos modificar el scritp infomatriz de manera que pueda hacer el estudio de cualquier
matriz (cuadrada, no cuadrada y unidimensional), bastaría cambiar los índices de los bucles a
m (número de filas) y n (número 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 ;
Sin embargo, esta nueva estructura nos obliga a considerar implícitamente a m,n, y A como
argumentos de entrada, lo cual hace más complejo su uso. Es por ello que MATLAB ofrece otro
tipo de M-Fichero: fichero de función.
FICHEROS DE FUNCIÓN
Un fichero de función es prácticamente un fichero script pero más sofisticado. Su diferencia
principal con el script es que si tiene explícitamente argumentos de entrada y salida. Lo
ficheros de función, al igual que los script, están formado por comandos de MATLAB que se
ejecutan en una forma preestablecida. Los pasos para resolver el problema 2 con un fichero de
función son similares al caso script:
51
MATLAB Orientado a la matemática aplicada
SUM=0;
PROD=1;
for i=1:m
for j=1:n Cuerpo: esta es la parte que contiene el código que
SUM=SUM+A(i,j); realiza las operaciones especificadas
PROD=PROD*A(i,j);
end
end
function[argumentos_de_salida]=nombre_funcion(argumentos_de_entrada)
Lista de
Nombre argumentos
La palabra
Lista de de la de entrada
function debe
argumentos función encerrados
ser la primera
de salida entre
palabra
encerrados paréntesis
tecleada en
entre
minúscula
corchetes
El nombre puede estar formado por letras, dígitos y el carácter subrayado. Las reglas para el
nombre de este tipo de M-Fichero son las mismas que para la construcción de nombres de
52
Andrés Pérez
variables. Se recomienda evitar usar para este propósito 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.
>> [SUM,PROD]=estudiomatriz(A,3,2)
SUM =
PROD =
53
MATLAB Orientado a la matemática aplicada
PROD =
21
>> [SUM,PROD]=estudiomatriz(A,3,6)
SUM =
51
PROD =
Existen muchas funciones que están 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).
donde la entrada y la salida pueden estar compuestas por una o más variables (escalares,
vectoriales o matriciales).
EL COMANDO help
Antes de utilizar un fichero scirpt o un fichero de función, 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.
54
Andrés Pérez
ARGUMENTOS DE ENTRADA:
A: matriz a estudiar
m: numero de filas
n: numero de columnas
ARGUMENTOS DE SALIDA:
Con el anterior ejemplo queda clara la importancia de las líneas de comentario hechas en los
ficheros.
• Ambos son archivos con extensión .m (por tal razón reciben el nombre de M-Ficheros).
55
MATLAB Orientado a la matemática aplicada
• Los ficheros script pueden usar variables definidas en el espacio de trabajo. Por el
contrario, para usar una variable definida en el espacio de trabajo dentro de un fichero
de función, dicha variable debe estar indicada como argumento de entrada del mismo.
• Si se quiere resolver un problema complejo, definir un script puede ser muy largo y el
código se torna engorroso. En cambio puede ser útil descomponer el código del script
en una o mas funciones (definiendo ficheros de función) que sean llamadas desde un
script compuesto justamente de ocas líneas de código.
• Los ficheros script son más fáciles de definir que los ficheros de función.
56
Andrés Pérez
EJERCICIOS 3
4 0 1 7 −2 8 9 4 1
� −5 4 9 �, � 1/7 0 3 �, � −1 3 0 �
2 3 −8 −3 1 −9 9 0 2
4 2 5 −7 1 2 −1 7 9
� −9 9 6 �, � 1 8 9�, � −7 3 1 �
0 3 −1 3 −5 3 9 3 5
Para cada matriz 𝑀𝑀 = (𝑚𝑚𝑖𝑖𝑖𝑖 )3×3 se desea un informe que con lo siguiente
3 3 3 3 3 3
2
� � 𝑚𝑚𝑖𝑖𝑖𝑖 , � �(𝑚𝑚𝑖𝑖𝑖𝑖 ) , � �(𝑚𝑚𝑖𝑖𝑖𝑖 )3
𝑖𝑖=1 𝑗𝑗=1 𝑖𝑖=1 𝑗𝑗=1 𝑖𝑖=1 𝑗𝑗=1
2. Para cada una de las matrices del ejercicio anterior, se quiere un informe con los
siguiente
a) Determinante
b) Matriz inversa (si la matriz es invertible)
c) Matriz escalonada reducida por filas de Gauss-Jordan
d) Forma canónica de Jordan
function[mcd]=max_com_div(a,b)
%este subprograma calcula el maximo comun divisor de dos enteros no
simultaneamente nulos
%ARGUMENTOS DE ENTRADA:
%a: entero no negativo
%b: entero cualquiera
%ARGUMENTOS DE SALIDA:
%mcd: maximo comun divisor
r=[a, b];
while r(n)~=0
57
MATLAB Orientado a la matemática aplicada
end
mcd=r(n-1);
function[minimo]=small(x)
%ESTE SUBPROGRAMA CALCULA EL MINIMO DE UN VECTOR
%ARGUMENTOS DE ENTRADA:
%x: vector a estudiar
%ARGUMENTOS DE SALIDA:
%minimo: menor elemento del vector x
minimo=x(1);
n=length(x);
for i=2:n
if x(i)<minimo
minimo=x(i);
end
end
5. Defina un fichero de función para calcular el elemento máximo de los vectores del
ejercicio 4.
58
Andrés Pérez
n=length(x);
for i=1:n
if x(i)==small(x)
k_min=i;
break
end
end
Respecto a cada uno de los vectores del ejercicio 4 calcule la posición mínima que
ocupa el mínimo. Observe que para utilizar este fichero es necesario que ya esté
definido el fichero small. El comando break se utiliza para salir de un bucle.
n=length(x);
for i=2:n
[k_min]=pos_min(x);
k=k_min;
59
MATLAB Orientado a la matemática aplicada
x=[x(k+1:m)];
x=[x(1:k-1), x(k+1:m)];
x=[x(1:k-1)];
end
ord_cre(i)=min(x);
end
Ordene los vectores del ejercicio 4 en forma creciente. Observe que para utilizar este
fichero es necesario que ya esté definido el fichero pos_min.
8. Defina un fichero de función para ordenar en forma decreciente los vectores del
ejercicio 4.
60
Andrés Pérez
>>syms x y z
FUNCIONES
Simbólicamente se pueden crear funciones de una o más variables y evaluarlas en cualquier
expresión.
𝑓𝑓(𝑥𝑥) = 𝑥𝑥 3 − 3
>> subs(f,x,0)
ans =
-3
>> subs(f,x,4)
ans =
61
61
MATLAB Orientado a la matemática aplicada
>> subs(f,{x,y,z,…},{a,b,c,…})
donde x, y, z,… denotan las variables, y a, b, c,… denotan los valores que se asignaran a las
variables x, y, z,…
𝑥𝑥 3 + 𝑦𝑦
𝑓𝑓(𝑥𝑥, 𝑦𝑦) =
𝑥𝑥 4 − 𝑦𝑦 2
>> syms f x y
>> f='(x^3+y)/(x^4-y^2)'
f=
(x^3+y)/(x^4-y^2)
>> subs(f,{x,y},{0,1})
ans =
-1
>> subs(f,{x,y},{1,-2})
ans =
0.3333
>> subs(f,{x,y},{3,3})
ans =
0.4167
62
Andrés Pérez
>> syms f x a b
>> f='x^2-b*x-a*x+b*a'
f=
x^2-b*x-a*x+b*a
>> subs(f,x,a)
ans =
>> subs(f,x,b)
ans =
>>subs(f,x,v)
ECUACIONES
>>solve(‘E’,x).
63
MATLAB Orientado a la matemática aplicada
2𝑥𝑥 + 1 = 9
tecleamos
>> syms x
>> solve('2*x+1=9',x)
ans =
−3𝑥𝑥 2 + 𝑥𝑥 + 3
tecleamos
>> solve('-3*x^2+x+3=0',x)
ans =
1/6-1/6*37^(1/2)
1/6+1/6*37^(1/2)
En algunas expresiones simbólicas utilizamos letras como a, b, c para denotar constantes y las
letras x, y, z para denotar variables. En MATLAB todas las letras deben declararse como
variables simbólicas.
64
Andrés Pérez
EJEMPLO: resolver
𝑎𝑎𝑥𝑥 2 + 𝑏𝑏𝑏𝑏 + 𝑐𝑐 = 0
>> syms a b c x
>> solve('a*x^2+b*x+c=0',x)
ans =
-1/2*(b-(b^2-4*a*c)^(1/2))/a
-1/2*(b+(b^2-4*a*c)^(1/2))/a
Nótese que aunque sabemos que en la ecuación a, b, c son constates, fue necesario declararlas
en el comando syms al igual que x.
>>pretty(expresion)
>> pretty(solve('a*x^2+b*x+c=0',x))
y MATLAB muestra
65
MATLAB Orientado a la matemática aplicada
LÍMITES
El comando afín es
>>limit(f,x,a)
EJEMPLO: calcular
4𝑥𝑥 2 − 9
lim3
𝑥𝑥→− 2𝑥𝑥 − 3
2
>> syms x
>> limit((4*x^2-9)/(2*x-3),-3/2)
ans =
EJEMPLO: calcular
𝑥𝑥 𝑥𝑥
lim− , lim+
𝑥𝑥→0 |𝑥𝑥| 𝑥𝑥→0 |𝑥𝑥|
>> syms x
>> limit(x/abs(x),x,0,'left')
ans =
-1
>> limit(x/abs(x),x,0,'right')
ans =
66
Andrés Pérez
DERIVADAS
El comando a utilizar es
>>diff(f,x)
>> diff(-x/(1-x)^2,x)
ans =
-1/(1-x)^2-2*x/(1-x)^3
>> syms g x y
>> g='(y-x)/(x-y^2)^3';
ans =
-1/(x-y^2)^3-3*(y-x)/(x-y^2)^4
ans =
1/(x-y^2)^3+6*(y-x)/(x-y^2)^4*y
67
MATLAB Orientado a la matemática aplicada
INTEGRALES
Para integrar funciones, se utiliza el comando
>>int(f,x)
EJEMPLO: integrar
𝑥𝑥 + 1
𝑓𝑓(𝑥𝑥) =
𝑥𝑥 3 − 7𝑥𝑥 2 + 14𝑥𝑥 − 8
>>syms x
>>pretty(int((x+1)/(x^3-7*x^2+14*x-8),x))
EJEMPLO: calcular
2𝜋𝜋
𝑑𝑑𝑑𝑑
�
0 1 + 𝑠𝑠𝑠𝑠𝑠𝑠2 (𝑥𝑥)
>> syms x
>> int(1/(1+sin(x)^2),x,0,2*pi)
ans =
pi*2^(1/2)
68
Andrés Pérez
COMANDO UTILIDAD
lim 𝑓𝑓
𝑥𝑥→𝑎𝑎
lim 𝑓𝑓
𝑥𝑥→𝑎𝑎 −
lim 𝑓𝑓
𝑥𝑥→𝑎𝑎 +
69
MATLAB Orientado a la matemática aplicada
� 𝑓𝑓(𝑥𝑥)𝑑𝑑𝑑𝑑
70
Andrés Pérez
EJERCICIOS 4
b) −3𝑥𝑥 2 + 𝑥𝑥 − 5 = 0
4
c) = 𝑥𝑥
𝑥𝑥−2
71
MATLAB Orientado a la matemática aplicada
d) √𝑥𝑥 3 + 2 = 2𝑥𝑥
e) |𝑥𝑥 + 1| = 2
1
f) |𝑥𝑥 2 + 𝑥𝑥 − 5|=
3
g) 𝑒𝑒 𝑥𝑥 = 1
h) 𝑙𝑙𝑙𝑙𝑙𝑙 = 0
i) 𝑠𝑠𝑠𝑠𝑠𝑠(𝑥𝑥) = cos(𝑥𝑥)
5. Calcule
a) lim 𝑥𝑥 2 + 6 1 − cos(2𝑥𝑥)
𝑥𝑥→2 𝑗𝑗) lim
𝑥𝑥→0 4𝑥𝑥 2
𝑥𝑥 2 − 1 𝑠𝑠𝑠𝑠𝑠𝑠(2𝑥𝑥)
𝑏𝑏) lim 𝑘𝑘) lim
𝑥𝑥→1 𝑥𝑥 − 1 𝑥𝑥→0 𝑠𝑠𝑠𝑠𝑠𝑠(3𝑥𝑥)
1 𝑥𝑥
2
2𝑥𝑥 + 𝑥𝑥 − 3 𝑙𝑙) lim �1 + �
𝑐𝑐) lim 𝑥𝑥→∞ 𝑥𝑥
𝑥𝑥→1 𝑥𝑥 − 1 1
𝑚𝑚) lim+
𝑥𝑥→0 𝑥𝑥
1
𝑑𝑑) lim 𝑛𝑛) lim 𝑒𝑒 𝑥𝑥
𝑥𝑥→1 (𝑥𝑥 − 1)2 𝑥𝑥→−∞
72
MATLAB Orientado a la matemática aplicada
d) 𝑖𝑖(𝑥𝑥) = 𝑥𝑥𝑥𝑥 𝑥𝑥 + 𝑥𝑥 3
e) 𝑗𝑗(𝑥𝑥) = ln(1⁄𝑥𝑥 )
f) 𝑘𝑘(𝑥𝑥) = 𝑠𝑠𝑠𝑠𝑠𝑠(𝑥𝑥) + 𝑥𝑥𝑥𝑥𝑥𝑥𝑥𝑥(𝑥𝑥)
7. Calcule
𝜕𝜕
a) (𝑥𝑥𝑦𝑦 2 + 𝑥𝑥 3 )
𝜕𝜕𝜕𝜕
𝜕𝜕 𝑥𝑥−𝑦𝑦
b) � �
𝜕𝜕𝜕𝜕 𝑥𝑥 2 +𝑦𝑦 2
𝜕𝜕 2 𝑦𝑦
c) �𝑥𝑥𝑒𝑒 𝑦𝑦 + cos � ��
𝜕𝜕𝜕𝜕𝜕𝜕𝜕𝜕 𝑥𝑥
𝜕𝜕2 𝑥𝑥+𝑦𝑦
d) �𝐿𝐿𝐿𝐿 � 𝑦𝑦3 ��
𝜕𝜕𝑥𝑥 2
8. Calcule
a) ∫ 3𝑥𝑥 2 − 5 𝑑𝑑𝑑𝑑
𝑥𝑥 2 +2𝑥𝑥
b) ∫ 3 2 𝑑𝑑𝑑𝑑
√𝑥𝑥 +3𝑥𝑥 +1
𝑥𝑥𝑒𝑒 𝑥𝑥
c) ∫ (𝑥𝑥+1)2 𝑑𝑑𝑑𝑑
4𝑥𝑥−11
d) ∫ 2 𝑑𝑑𝑑𝑑
2𝑥𝑥 +7𝑥𝑥−4
1
e) ∫ 𝑑𝑑𝑑𝑑
3+ √𝑥𝑥+2
f) ∫ 𝐿𝐿𝐿𝐿(𝑥𝑥 2 + 1) 𝑑𝑑𝑑𝑑
g) ∫ tan(𝑥𝑥) 𝑠𝑠𝑠𝑠𝑠𝑠(𝑥𝑥) 𝑑𝑑𝑑𝑑
h) ∫ 𝑠𝑠𝑠𝑠𝑠𝑠2 (𝑥𝑥)𝑐𝑐𝑐𝑐𝑐𝑐 3 (𝑥𝑥) 𝑑𝑑𝑑𝑑
𝑡𝑡𝑡𝑡𝑡𝑡3 (𝐿𝐿𝐿𝐿(𝑥𝑥))𝑠𝑠𝑠𝑠𝑠𝑠 6 (𝐿𝐿𝐿𝐿(𝑥𝑥))
i) ∫ 𝑑𝑑𝑑𝑑
𝑥𝑥
j) ∫ �tan(𝑥𝑥) 𝑑𝑑𝑑𝑑
9. Calcule
1 1−𝑥𝑥
a) ∫1⁄2 � 𝑑𝑑𝑑𝑑
𝑥𝑥
1 𝑑𝑑𝑑𝑑
b) ∫0
𝑒𝑒 𝑥𝑥 +𝑒𝑒 −𝑥𝑥
4 𝑥𝑥 2
c) ∫0 𝑥𝑥 3 +4𝑥𝑥 2 +5𝑥𝑥+2
𝑑𝑑𝑑𝑑
73
MATLAB Orientado a la matemática aplicada
16
d) ∫0 �4 − √𝑥𝑥 𝑑𝑑𝑑𝑑
𝜋𝜋⁄2
e) ∫0 𝑠𝑠𝑠𝑠𝑠𝑠3 (𝑥𝑥)𝑐𝑐𝑐𝑐𝑐𝑐 3 (𝑥𝑥) 𝑑𝑑𝑑𝑑
𝜋𝜋 𝑑𝑑𝑑𝑑
f) ∫−𝜋𝜋 𝑠𝑠𝑠𝑠𝑠𝑠(𝑥𝑥)+𝑐𝑐𝑐𝑐𝑐𝑐(𝑥𝑥)
12. Dada una función 𝑓𝑓(𝑥𝑥) tal que existen las primeras n derivadas en 𝑥𝑥 = 0, el polinomio
de Maclaurin de grado 𝑛𝑛 de f viene dado por
𝑛𝑛
𝑓𝑓 (𝑘𝑘) (0)𝑥𝑥 𝑛𝑛
𝑃𝑃𝑛𝑛 (𝑥𝑥) = �
𝑘𝑘!
𝑘𝑘=0
Definiendo un fichero de función, calcule el polinomio de Maclaurin de grado 𝑛𝑛 de las
siguientes funciones:
• 𝑓𝑓(𝑥𝑥) = 𝑒𝑒 𝑥𝑥 , 𝑛𝑛 = 4
1
• 𝑔𝑔(𝑥𝑥) = (1−𝑥𝑥)2 , 𝑛𝑛 = 8
• 𝑘𝑘(𝑥𝑥) = 𝑠𝑠𝑠𝑠𝑠𝑠(𝑥𝑥), 𝑛𝑛 = 5
• 𝑙𝑙(𝑥𝑥) = cosh(𝑥𝑥) , 𝑛𝑛 = 7
74
Andrés Pérez
CAPITULO 5. GRÁFICOS
Los gráficos son herramientas muy utilizadas para presentar todo tipo de información;
información que puede proceder de cualquier campo del conocimiento, pero especialmente
de las disciplinas relacionadas con las ciencias y la ingeniaría, donde MATLAB es ampliamente
utilizado.
GRÁFICOS EN 2D
Graficando funciones del tipo y=f(x)
Para representar una función del tipoy=f(x) se utiliza el comando
>>plot(x,y)
Habiendo creado previamente un vector con los valores x del dominio de la función f,
seguidamente de un vector y para los valores de y=f(x) (esto es, expresando simbólicamente la
función).
Una vez creados ambos vectores se utiliza el comando plot(x,y) para la creación del gráfico de
la función.
𝑓𝑓(𝑥𝑥) = cos(𝑥𝑥)
en el intervalo [-2,2]
75
MATLAB Orientado a la matemática aplicada
Es importante señalar que para graficar funciones cuya expresión simbólica involucra una
potenciación (o división), debe colocarse un punto antes del operador potencia (o división).
𝑦𝑦 = 𝑥𝑥 2
en el intervalo [-2,2]
>> x=-2:0.1:2;
Notar que escribimos y=x.^2
>> y=x.^2;
en vez de y=x^2
>> plot(x,y)
76
Andrés Pérez
Donde t es el parámetro y las funciones componente de r son x=f(t) , y=g(t) (estas últimas son
funciones de valor real en la variable t). Para crear el gráfico de la curva paramétrica 2D que
induce este tipo de función se tienen los siguientes pasos:
1. Crear un vector con los valores del parámetro t del dominio de la función r, por
ejemplo
>>t=-a:i:b
donde i representa el incremento (para mayor información consulte la tabla)
Con esto se define el intervalo [a,b] , el cual corresponde al dominio de la función r.
2. Calcular el valor de x, y en cada punto del vector anterior (esto es, representar
simbólicamente las funciones componentes de t). En este caso, como en el
bidimensional, si la expresión simbólica de las funciones f, g involucra una
potenciación (o división), debe colocarse un punto antes del operador potencia (o
división).
77
MATLAB Orientado a la matemática aplicada
t=0:0.1:2*pi
Definimos el vector [0,7π],
que es el domino de la
función r
x=cos(t);
plot(x,y)
Finalmente representamos el
gráfico de la circunferencia
78
Andrés Pérez
GRÁFICOS EN 3D
Los gráficos tridimensionales proporcionan una manera muy práctica de representar datos de
más de dos variables. La sintaxis para estos gráficos es análoga a la utilizada para el caso
bidimensional.
1. Crear una rejilla en el plano XY que cubre el dominio de la función. Para ello se deben
definir dos vectores x, y por ejemplo
>>x=[a:i:b]
>>y=[c:i:d]
>>[x,y]=meshgrid(x,y)
Con el cual se define la región [a,b]×[c,d] del plano XY, la cual corresponde al dominio
de la función f.
cos((𝑥𝑥 2 + 𝑦𝑦 2 )⁄4)
𝑓𝑓(𝑥𝑥, 𝑦𝑦) =
𝑥𝑥 2 + 𝑦𝑦 2 + 3
en el rectángulo [-5,5]×[-5,5]
79
MATLAB Orientado a la matemática aplicada
>> x=-5:0.1:5;
>> y=-5:0.1:5;
>> [x,y]=meshgrid(x,y);
>> z=cos((x.^2+y.^2)./4)./(3+x.^2+y.^2);
>> mesh(x,y,z)
80
Andrés Pérez
>> x=-5:0.1:5;
>> y=-5:0.1:5;
>> [x,y]=meshgrid(x,y);
>> z=cos((x.^2+y.^2)./4)./(3+x.^2+y.^2);
>> surf(z)
81
MATLAB Orientado a la matemática aplicada
1. Crear un vector con los valores del parámetro t del dominio de la función r, por
ejemplo
>>t=-a:i:b
2. Calcular el valor de x, y, z en cada punto del vector anterior (esto es, representar
simbólicamente las funciones componentes de t). En este caso, como en el
bidimensional, si la expresión simbólica de las funciones f, g, h involucra una
potenciación (o división), debe colocarse un punto antes del operador potencia (o
división).
>>plot3(x,y,z)
en el dominio [0,7π]
t=0:0.1:7*pi;
x=cos(t);
y=sin(t);
z=t;
plot3(x,y,z)
82
Andrés Pérez
83
MATLAB Orientado a la matemática aplicada
EJERCICIOS 5
a) 𝑦𝑦 = 𝑥𝑥 4 − 𝑥𝑥 2 [−2,3]
𝑥𝑥+3
b) 𝑦𝑦 = [−3,3]
𝑥𝑥
𝑒𝑒 𝑥𝑥 +𝑒𝑒 −𝑥𝑥
c) 𝑦𝑦 = [−1,2]
𝑒𝑒 𝑥𝑥 −𝑒𝑒 −𝑥𝑥
d) 𝑦𝑦 = 𝑥𝑥𝑥𝑥𝑥𝑥(𝑥𝑥 + 2)[−4,2]
84
Andrés Pérez
7. Grafique la función
3 −𝑦𝑦 3
𝑓𝑓(𝑥𝑥, 𝑦𝑦) = −𝑥𝑥𝑥𝑥𝑒𝑒 −𝑥𝑥
8. Grafique la function
−3𝑦𝑦
𝑔𝑔(𝑥𝑥, 𝑦𝑦) = 𝑥𝑥 2 − 𝑦𝑦 2
𝑥𝑥 2 + 𝑦𝑦 2 + 1
En el rectángulo [−3,3] × [−3,3]
a) 𝑧𝑧 = 𝑥𝑥 2 + 𝑦𝑦 2 , [−2,2] × [−2,2]
b) 𝑧𝑧 = 𝑥𝑥 2 − 𝑦𝑦 2 , [−3,2] × [−3,2]
𝑠𝑠𝑠𝑠𝑠𝑠(𝑥𝑥)𝑠𝑠𝑠𝑠𝑠𝑠(𝑦𝑦)
d) 𝑧𝑧 = [−3,3] × [−3,3]
𝑥𝑥𝑥𝑥
11. Visualice el gráfico de la recta que pasa por el punto (3,1, −2) y cuyo vector director
es (2,3,1). Sugerencia: utilize la parametrización
𝑟𝑟(𝑡𝑡) = 〈3 + 2𝑡𝑡, 1 + 2𝑡𝑡, −2 − 𝑡𝑡〉, −7 ≤ 𝑡𝑡 ≤ 6
a) 𝑟𝑟(𝑡𝑡) = 〈𝑡𝑡, 𝑡𝑡 2 , 𝑡𝑡 3 〉
85
MATLAB Orientado a la matemática aplicada
CAPITULO 6. ESTADÍSTICA
El paquete estadístico de MATLAB ha sido desarrollado para proveer ayuda a cualquier tipo de
área, desde las finanzas hasta la ingeniería, con herramientas interactivas capaces de
establecer análisis de datos, además viene acompañado de una completa serie de funciones
para desarrollar desde las más básicas aplicaciones estadísticas hasta un completo diseño y
proceso de cualquier análisis estadístico.
MEDIDAS DE LOCALIZACIÓN
Media aritmética
Para calcular la media aritmética o promedio se emplea la función
>>mean(a)
EJEMPLO:
>> mean(a)
ans =
5.8571
>> b =[6 2 5 5 10 9;
10 10 8 9 7 9;
10 10 2 8 1 7];
mean(b)
ans =
86
Andrés Pérez
>>mean(a,dim)
donde
• a es una matriz
• dim es 1 o 2. Si es 1 se calculará la media de cada columna. Si es 2 se calculará
la media de cada fila
EJEMPLO:
>>a =[ 8 6 5 1 0;
8 1 8 6 3;
4 1 9 5 2];
>> mean(a,1)
ans =
>> mean(a,2)
ans =
4.0000
5.2000
4.2000
Media geométrica
Para este cálculo están los comandos
>>geomean(a)
>>geomean(a,dim)
87
MATLAB Orientado a la matemática aplicada
EJEMPLO:
>>a =[ 9 2 8 5];
>> geomean(a)
ans =
5.1800
Media armónica
La función es
>>harmmean(a)
>>harmmean(a,dim)
EJEMPLO:
>> a =[8 2;
3 2;
7 5;
7 10];
>> harmmean(a,2)
ans =
3.2000
2.4000
5.8333
8.2353
88
Andrés Pérez
Media ajustada
Se emplea el comando
>>trimmean(a,y)
donde
EJEMPLO:
>> a =[4 4 4 2 2 2;
3 8 8 1 6 8;
3 6 8 6 5 4;
7 6 4 8 1 6;
5 9 6 9 4 2];
trimmean(a,3)
ans =
Máximo
Comando
>>max(a)
donde a es un vector
>>max(a,[ ],dim)
donde dim es 1 o 2
89
MATLAB Orientado a la matemática aplicada
EJEMPLO:
>> a =[6 7 2 2;
3 8 3 8;
7 5 9 6];
>> max(a,[],1)
ans =
7 8 9 8
>> max(a,[],2)
ans =
Mínimo
Los comandos afines son
>>min(a)
>>min(a,[],dim)
EJEMPLO:
>> min(a)
ans =
90
Andrés Pérez
Mediana
Comando
>>median(a,dim)
EJEMPLO:
>> median(a)
ans =
3.5000
MEDIDAS DE DISPERSIÓN
Desviación estándar
Comando
>>std(a,flag,dim)
donde
EJEMPLO:
>> std(a,0)
ans =
3.9097
>> std(a,1)
ans =
3.6197
91
MATLAB Orientado a la matemática aplicada
Varianza
Para la varianza corregida se usa el comando
>>var(a)
>>var(a,1)
EJEMPLO:
>> std(a)
ans =
1.5275
>> std(a,1)
ans =
1.2472
Rango
Comando
>>range(a)
EJEMPLO:
>> range(a)
ans =
92
Andrés Pérez
Rango intercuartil
Comando
>>iqr(a)
EJEMPLO:
>> iqr(a)
ans =
>> b =[5 3 6;
3 3 6;
8 2 2;
5 2 9;
9 9 7];
>> iqr(b)
ans =
Percentil
Comando
>>prctile(a,p)
donde
93
MATLAB Orientado a la matemática aplicada
EJEMPLO:
>> prctile(a,3)
ans =
Quantil
Comando
>>quantile(a,p,dim)
donde
EJEMPLO:
>> a =[1 10 5;
9 5 4];
>> quantile(a,0.3,2)
ans =
2.6000
4.4000
Oblicuidad
Comando
>>skewness(a)
94
Andrés Pérez
EJEMPLO:
>> a =[0 1 3 4 8 4 8;
3 8 10 4 2 6 3;
0 7 0 8 5 7 7];
>> skewness(a)
ans =
Curtosis
Comando
>>kurtosis(a,flag)
donde
EJEMPLO:
>>a =[8 9 3;
4 2 1];
>> kurtosis(a,1)
ans =
1 1 1
>>tabulate(a)
95
MATLAB Orientado a la matemática aplicada
EJEMPLO:
>> tabulate(a)
1 0 0.00%
2 0 0.00%
3 0 0.00%
4 1 50.00%
5 1 50.00%
Desviación absoluta
Comando
>>mad(a,flag,dim)
donde
EJEMPLO:
>>a =[3 5 8 5;
6 4 6 9];
>> mad(a,0,2)
ans =
1.3750
1.3750
96
Andrés Pérez
Momentos centrales
Comando
>>moment(a,order,dim)
donde
EJEMPLO:
>> a =[8 5 4;
1 6 7;
1 4 8;
3 8 2;
7 3 9;
8 7 8;
7 3 5];
>> moment(a,2)
ans =
GRUPOS DE DATOS
Matriz de covarianza
Comando
>>cov(a)
97
MATLAB Orientado a la matemática aplicada
EJEMPLO:
>> a =[5 6;
2 3];
>> cov(a)
ans =
4.5000 4.5000
4.5000 4.5000
>>corr(a)
EJEMPLO:
5 1];
>> corr(a)
ans =
1 1
1 1
>> [R,P,RLO,RUP]=corrcoef(a)
98
Andrés Pérez
EJEMPLO:
>> a =[7 4;
6 5;
3 3];
>> [R,P,RLO,RUP]=corrcoef(a)
R=
1.0000 0.7206
0.7206 1.0000
P=
1.0000 0.4878
0.4878 1.0000
RLO =
1 NaN
NaN 1
RUP =
1 NaN
NaN 1
99
MATLAB Orientado a la matemática aplicada
>>crosstab (a,b)
EJEMPLO:
>> crosstab(a,b)
ans =
1 0 0 0 0 0
0 0 0 1 0 0
0 0 0 0 1 1
0 0 1 0 0 0
0 0 0 0 1 1
0 1 1 0 0 1
1 0 0 0 1 0
>>grpstats(a,group)
donde
• a es una matriz
• group es el vector que define como se agruparán los datos
100
Andrés Pérez
EJEMPLO:
>>a =[5 10 1 5 3;
3 6 1 6 4;
5 2 3 4 7;
2 3 7 8 8;
2 4 8 3 2;
9 8 7 7 9];
>> grpstats(a,group)
ans =
GRÁFICOS ESTADÍSTICOS
MATLAB proporciona grandes facilidades en lo relacionado con gráficas, situación que permite
automatizar y agilizar el manejo y procesamiento de las mismas. Para ello dispone de una serie
de funciones que permiten modificar dentro de la figura los parámetros que afectan el
resultado de la misma.
Las gráficas en MATLAB permiten la posibilidad de adecuarlas de tal forma que sean
completamente entendibles para los usuarios, por medio de las diferentes posibilidades
existentes para insertar en las gráficas
101
MATLAB Orientado a la matemática aplicada
Gráficos simples
Comando
>>plot(x,y)
EJEMPLO:
>> x=[1:8];
>> plot(x,y)
102
Andrés Pérez
>>plot(y,’+’)
>>lsline
donde y es un vector
EJEMPLO:
>> plot(y,'+');
>> lsline
103
MATLAB Orientado a la matemática aplicada
Histograma
El comando es hist. Para generar el gráfico de histograma con diez barras igualmente
espaciadas, la sintaxis es
>>hist(y)
donde y es un vector
Otra sintaxis es
>>hist(y,n)
EJEMPLO:
>> hist(y)
104
Andrés Pérez
>>bar(x,y)
EJEMPLO:
>> x=[1:8];
>> bar(x,y)
105
MATLAB Orientado a la matemática aplicada
>>barh(x,y)
EJEMPLO:
> x=[5:13];
>> barh(x,y)
106
Andrés Pérez
Gráfico de escaleras
Comando
>>stairs(x,y)
EJEMPLO:
>> x=[-2:4];
>> stairs(x,y)
107
MATLAB Orientado a la matemática aplicada
Gráfico de tallo
Comando
>>stem(x,y)
EJEMPLO:
>> x=[3:8];
>> stem(x,y)
108
Andrés Pérez
Gráfico de tarta
Comando
>>pie(x)
donde x es un vector
EJEMPLO:
>> pie(x)
109
MATLAB Orientado a la matemática aplicada
>>randtool
Esta función permite generar de forma interactiva números al azar mostrando los resultados
gráficos por medio de un histograma. Instala un interfaz gráfico que permite indagar los
efectos al realizar cambios en los parámetros que afectan la función que se desee graficar
EJEMPLO:
>>randtool
Además, la interfaz que se abre con la función, permite fijar valores de parámetro para la
distribución y para cambiar sus límites superiores e inferiores en la generación de datos
aleatorios.
110
Andrés Pérez
>> disttool
EJEMPLO:
>> disttool
Al igual que la función presentada con anterioridad permite realizar modificaciones a los
parámetros relacionados con las características de la misma interfaz generada.
111
MATLAB Orientado a la matemática aplicada
EJERCICIOS 6
1. Según el INE, la población venezolana ha evolucionado (de acuerdo a los censos 1873-
2011) de la siguiente manera
Censos Población
1873 1732411
1881 2005139
1891 2221572
1920 2479525
1926 2814131
1936 3364347
1941 3850771
1950 5034838
1961 7523999
1971 10721522
1981 14516735
1990 18105265
2001 23054210
2011 27227930
2. Según el INE, la población del estado Lara (mejor conocida como la capital musical de
Venezuela) ha evolucionado (de acuerdo a los censos 1873-2011) de la siguiente
manera
LARA
Censo Población
1873 143818
1881 176079
1891 189624
1920 219816
1926 271369
1936 291230
1941 332975
1950 368169
1961 489140
1971 671410
1981 945064
1990 1193161
2001 1556415
2011 1774867
3. A continuación mostramos las cifras dadas por el INE (de acuerdo a los censos 1873-
2011) respecto a la evolución de la población en 5 estados venezolanos
112
Andrés Pérez
113
MATLAB Orientado a la matemática aplicada
CAPÍTULO 7. OPTIMIZACIÓN
MATLAB proporciona comandos para resolver problemas de optimización tales como:
programación lineal y cuadrática, minimización no lineal con restricciones, minimización no
lineal restringida, logro de objetivos minimización semi-infinita, entre otros. En este capítulo
sólo nos enfocaremos en la programación lineal y la programación cuadrática.
PROGRAMACIÓN LINEAL
Si hacemos
114
Andrés Pérez
𝑥𝑥1
𝑥𝑥2
𝐶𝐶 = (𝑐𝑐1 𝑐𝑐2 ⋯ 𝑐𝑐𝑛𝑛 ) , 𝑋𝑋 = � �
⋮
𝑥𝑥𝑛𝑛
𝑙𝑙1 𝑢𝑢1
𝑙𝑙2 𝑢𝑢2
𝐿𝐿 = � � , 𝐵𝐵 = � ⋮ �
⋮
𝑙𝑙𝑚𝑚 𝑢𝑢𝑚𝑚
Sujeto a
𝐴𝐴𝐴𝐴 ≤ 𝐵𝐵
𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴 = 𝐵𝐵𝐵𝐵𝐵𝐵
𝐿𝐿 ≤ 𝑋𝑋 ≤ 𝑈𝑈
Minimización
La sintaxis en para resolver un PL de minimización es
>>[X,z] = linprog(C,A,B,Aeq,Beq,L,U)
115
MATLAB Orientado a la matemática aplicada
Sujeto a
>> B=[-4;9];
>> Beq=[-3];
>> L=[1;0;0];
>> U=[4;7;9];
>> [X,z]=linprog(C,A,B,Aeq,Beq,L,U)
Optimization terminated.
X=
1.5
1.7756e-013
3.4227e-012
z=
4.5
116
Andrés Pérez
lb por lb de alimento
Como la mezcla de alimentos consiste en maíz y soya, las variables de decisión del
modelo se definen como
𝑥𝑥1 = lb de maíz en la mezcla diaria
𝑥𝑥2 = lb de soya en la mezcla diaria
La función objetivo se expresa como sigue
𝑧𝑧 = 0.3𝑥𝑥1 − 0.9𝑥𝑥2
Así, el PL a resolver es
Sujeto a
0.21𝑥𝑥1 − 0.30𝑥𝑥2 ≤ 0
0.03𝑥𝑥1 − 0.01𝑥𝑥2 ≥ 0
𝑥𝑥1 , 𝑥𝑥2 ≥ 0
117
MATLAB Orientado a la matemática aplicada
Sujeto a
0.21𝑥𝑥1 − 0.30𝑥𝑥2 ≤ 0
−0.03𝑥𝑥1 + 0.01𝑥𝑥2 ≤ 0
𝑥𝑥1 , 𝑥𝑥2 ≥ 0
>> B=[-800;0;0];
>> [X,z]=linprog(C,A,B,[],[],L,[])
Optimization terminated.
X=
470.5882
329.4118
z=
437.6471
𝑧𝑧 = $437.6471 diarios.
Maximización
Resolver un PL de maximización
Maximizar 𝑍𝑍 = 𝐶𝐶𝐶𝐶
Sujeto a
𝐴𝐴𝐴𝐴 ≤ 𝐵𝐵
𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴 = 𝐵𝐵𝐵𝐵𝐵𝐵
118
Andrés Pérez
𝐿𝐿 ≤ 𝑋𝑋 ≤ 𝑈𝑈
Minimizar 𝑧𝑧 = −𝐶𝐶𝐶𝐶
Sujeto a
𝐴𝐴𝐴𝐴 ≤ 𝐵𝐵
𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴 = 𝐵𝐵𝐵𝐵𝐵𝐵
𝐿𝐿 ≤ 𝑋𝑋 ≤ 𝑈𝑈
Nótese que la diferencia entre estos dos PL es que la función objetivo del segundo es el
opuesto aditivo del la del primero. En este caso la solución óptima del problema de
minimización es la misma del problema de maximización, y el el valor máximo de Z es el valor
mínimo de z.
Materia prima 6 4 24
M1
Materia prima 1 2 6
M2
119
MATLAB Orientado a la matemática aplicada
120
Andrés Pérez
PROGRAMACIÓN CUADRÁTICA
Un problema general de este tipo puede definirse como sigue
1
Minimizar 𝑧𝑧 = 𝑋𝑋 𝑡𝑡 𝐷𝐷𝐷𝐷 + 𝐶𝐶 𝑡𝑡 𝑋𝑋
2
Sujeto a
𝐴𝐴𝐴𝐴 ≤ 𝐵𝐵
𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴 = 𝐵𝐵𝐵𝐵𝐵𝐵
𝐿𝐿 ≤ 𝑋𝑋 ≤ 𝑈𝑈
𝑋𝑋 𝑡𝑡 𝐷𝐷𝐷𝐷 ≥ 0
>>[X,z] = quadprog(D,C,A,B,Aeq,Beq,L,U)
1 1
1 −1 −2
𝐷𝐷 = � �, 𝐶𝐶 = � �, 𝐴𝐴 = �−1 2 �
−1 2 −6
2 1
2 𝑥𝑥1
𝐵𝐵 = � 2 � , 𝑋𝑋 = � 𝑥𝑥 �
2
3
solucionar el problema
1
Minimizar 𝑧𝑧 = 𝑋𝑋 𝑡𝑡 𝐷𝐷𝐷𝐷 + 𝐶𝐶 𝑡𝑡 𝑋𝑋
2
Sujeto a
𝐴𝐴𝐴𝐴 ≤ 𝐵𝐵
𝑋𝑋 ≥ 0
121
MATLAB Orientado a la matemática aplicada
>> C=[-2;-6];
>> B=[2;2;3];
>> L=[0;0];
Warning: Large-scale method does not currently solve this problem formulation,
Optimization terminated.
X=
0.6667
1.3333
z=
-8.2222
Sujeto a
𝐴𝐴𝐴𝐴 ≤ 𝐵𝐵
𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴 = 𝐵𝐵𝐵𝐵𝐵𝐵
𝐿𝐿 ≤ 𝑋𝑋 ≤ 𝑈𝑈
hacemos
1 1
𝑧𝑧 = −𝑍𝑍 = − � 𝑋𝑋 𝑡𝑡 𝐷𝐷𝐷𝐷 + 𝐶𝐶 𝑡𝑡 𝑋𝑋 � = 𝑋𝑋 𝑡𝑡 (−𝐷𝐷)𝑋𝑋 + (−𝐶𝐶 𝑡𝑡 )𝑋𝑋
2 2
122
Andrés Pérez
y procedemos a resolver
1
Minimizar 𝑧𝑧 = 𝑋𝑋 𝑡𝑡 (−𝐷𝐷)𝑋𝑋 + (−𝐶𝐶)𝑡𝑡 𝑋𝑋
2
Sujeto a
𝐴𝐴𝐴𝐴 ≤ 𝐵𝐵
𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴 = 𝐵𝐵𝐵𝐵𝐵𝐵
𝐿𝐿 ≤ 𝑋𝑋 ≤ 𝑈𝑈
−4 −2 4
𝐷𝐷 = � �, 𝐶𝐶 = � � , 𝐴𝐴 = ( 1 2 ) , 𝐵𝐵 = ( 2 )
−2 −4 6
1
Maximizar 𝑍𝑍 = 𝑋𝑋 𝑡𝑡 𝐷𝐷𝐷𝐷 + 𝐶𝐶 𝑡𝑡 𝑋𝑋
2
Sujeto a
𝐴𝐴𝐴𝐴 ≤ 𝐵𝐵
𝑥𝑥1 , 𝑥𝑥2 ≥ 0
Vemos que
>> C=[-4;-6];
>> B=[2];
>> L=[0;0];
>> [X,z]=quadprog(D,C,A,B,[],[],L,[])
Warning: Large-scale method does not currently solve this problem formulation,
123
MATLAB Orientado a la matemática aplicada
Optimization terminated.
X=
0.3333
0.8333
z=
-4.1667
Un programa cuadrático también se puede plantear sin especificar las matrices 𝐷𝐷 y 𝐶𝐶, en lugar
de ello se muestra la función objetivo en la forma
𝑛𝑛 𝑛𝑛 𝑛𝑛
1
𝑧𝑧 = � � 𝑑𝑑𝑖𝑖𝑖𝑖 𝑥𝑥𝑖𝑖 𝑥𝑥𝑗𝑗 + � 𝑐𝑐𝑘𝑘 𝑥𝑥𝑘𝑘
2
𝑖𝑖=1 𝑗𝑗=1 𝑘𝑘=1
En la parte lineal es evidente la forma de la matriz 𝐶𝐶. Por el contrario, saber como viene dada
la matriz 𝐷𝐷 no es fácil. Para ello veamos el siguiente ejemplo.
EJEMPLO:
Primeramente debemos hallar una matriz D simétrica de orden 2x2 tal que
1 𝑡𝑡
𝑋𝑋 𝐷𝐷𝐷𝐷 = 2𝑥𝑥12 − 4𝑥𝑥1 𝑥𝑥2 + 4𝑥𝑥22
2
124
Andrés Pérez
D=
[ d11, d]
[ d, d22]
4 −4 −15
𝐷𝐷 = � �, 𝐶𝐶 = � �, 𝐴𝐴 = ( 1 2 ), 𝐵𝐵 = ( 30 )
−4 8 −30
>> C=[-15;-30];
>> B=[30];
>> L=[0;0];
>> [X,z]=quadprog(D,C,A,B,[],[],L,[])
Optimization terminated.
X=
12
z=
-270
125
MATLAB Orientado a la matemática aplicada
𝑥𝑥1 = 12 , 𝑥𝑥2 = 9
𝑧𝑧 = −270
𝑥𝑥1 = 𝑥𝑥2 = 0
𝑧𝑧 = 0
126
Andrés Pérez
EJERCICIOS 7
1. Resolver
Minimizar 𝑧𝑧 = 3𝑥𝑥1 + 8𝑥𝑥2
Sujeto a
𝑥𝑥1 + 𝑥𝑥2 ≥ 8
2𝑥𝑥1 − 3𝑥𝑥2 ≤ 0
𝑥𝑥1 + 2𝑥𝑥2 ≤ 30
3𝑥𝑥1 − 𝑥𝑥2 ≥ 0
𝑥𝑥1 ≤ 10
𝑥𝑥2 ≥ 9
𝑥𝑥1 , 𝑥𝑥2 ≥ 0
2. Resolver
Maximizar 𝑧𝑧 = 5𝑥𝑥1 + 4𝑥𝑥2
Sujeto a
6𝑥𝑥1 + 4𝑥𝑥2 ≤ 24
𝑥𝑥1 + 𝑥𝑥2 ≤ 5
𝑥𝑥2 + 2𝑥𝑥2 ≤ 6
−𝑥𝑥1 + 𝑥𝑥2 ≤ 1
𝑥𝑥2 ≤ 2
𝑥𝑥1 , 𝑥𝑥2 ≥ 0
3. Modelos Alfa fabrica camisas y blusas para las Tiendas Beta, que aceptan toda la
producción de Alfa. En el proceso de producción interviene el corte, costura y
empacado. Alfa emplea 25 trabajadores en el departamento de corte, 35 en el
departamento de costura y 5 en el departamento de empaque. Esa fábrica trabaja
un turno de 8 horas, 5 días por semana. En la tabla siguiente se muestran los
tiempos necesarios y las utilidades unitarias para las dos prendas
127
MATLAB Orientado a la matemática aplicada
Camisas 20 70 12 8.00
Blusas 60 60 4 12.00
−8 4 0 1 3
𝐷𝐷 = � �, 𝐶𝐶 = ( 12 12 ) , 𝐴𝐴 = � �, 𝐵𝐵 = � �
4 −8 1 1 6
1
Maximizar 𝑧𝑧 = 𝑋𝑋 𝑡𝑡 𝐷𝐷𝐷𝐷 + 𝐶𝐶 𝑡𝑡 𝑋𝑋
2
Sujeto a
𝐴𝐴𝐴𝐴 ≤ 𝐵𝐵
𝑋𝑋 ≥ 0
6. Resolver
Minimizar 𝑧𝑧 = 𝑥𝑥12 + 𝑥𝑥1 𝑥𝑥2 + 𝑥𝑥22 − 𝑥𝑥1 − 𝑥𝑥2
Sujeto a
𝑥𝑥1 + 𝑥𝑥2 ≥ 2
2𝑥𝑥1 ≥ 1
𝑥𝑥1 , 𝑥𝑥2 ≥ 0
128
Andrés Pérez
6. Resolver
Maximizar 𝑍𝑍 = −2𝑥𝑥12 − 4𝑥𝑥1 𝑥𝑥2 − 3𝑥𝑥22 + 6𝑥𝑥1 + 3𝑥𝑥2
Sujeto a
𝑥𝑥1 + 𝑥𝑥2 ≤ 1
2𝑥𝑥1 + 3𝑥𝑥2 ≤ 4
𝑥𝑥1 , 𝑥𝑥2 ≥ 0
7. Resolver
Sujeto a
𝑥𝑥1 − 2𝑥𝑥2 ≥ 2
−𝑥𝑥1 + 𝑥𝑥2 ≥ −1
𝑥𝑥1 , 𝑥𝑥2 ≥ 0
8. Resolver
Minimizar 𝑧𝑧 = 2𝑥𝑥12 + 2𝑥𝑥22 + 3𝑥𝑥32 + 2𝑥𝑥1 𝑥𝑥2 + 2𝑥𝑥2 𝑥𝑥3 + 𝑥𝑥1 − 3𝑥𝑥2 − 5𝑥𝑥3
Sujeto a
129
MATLAB Orientado a la matemática aplicada
MATLAB posee distintas librerías de funciones pensadas para la resolución numérica de una
gran variedad de problemas matemáticos. Sin embargo, el objetivo principal de este capítulo
no es presentar estas funciones predefinidas en MATLAB sino más bien, enseñar al lector como
poder implementar métodos numéricos mediante ficheros de función.
Este capítulo está compuesto por dos secciones: resolución de ecuaciones no lineales e
interpolación polinomial. Al final de cada una se mostrará los comandos ya predefinidos en
MATLAB afines a los métodos numéricos planteados.
Un criterio de parada es la forma de indicar cuándo terminar la iteración del bucle. Algunos
criterios de parada son:
El esquema iterativo del método de punto fijo consiste en emplear la sucesión {𝑥𝑥𝑘𝑘 } dada por
𝑥𝑥𝑘𝑘+1 = 𝑔𝑔(𝑥𝑥𝑘𝑘 ) , 𝑘𝑘 = 0, 1, 2, …
130
Andrés Pérez
𝑥𝑥 3 − 4𝑥𝑥 − 1 = 0
𝑥𝑥 3 − 1
𝑔𝑔(𝑥𝑥) =
4
function[informe]=met_punto_fijo(x0,maxi)
%ESTE SUBPROGRAMA APROXIMA LA UNICA SOLUCION REAL DE LA ECUACION
% x^3-4*x-1=0
%ESTANDO DICHA SOLUCION EN [-1,1]
%METODO:
% punto fijo
%FORMULACION:
% haciendo fx)=(x^3-1)/4
% hallar x tal que x=f(x)
%CRITERIO DE PARADA:
% un numero maximo de iteraciones
%ARGUMENTOS DE ENTRADA:
%x0: termino inicial
%maxi: iteracion maxima
%ARGUMENTOS DE SALIDA:
%informe: matriz con los datos del metodo
%columna N°1: indices
%columna N°2: terminos x_k
%columna N°3: evaluacion de x_k en la ecuacion principal
x=[x0, zeros(1,maxi)]; %vector que almacenara los k+1 terminos x0, x1, x2, ..., xk
ec=[ec_x0, zeros(1,maxi)]; %vector que contendra los k+1 terminos f(x0), f(x1), f(x2), ...,f(xk)
x(k)=(x(k-1)^3-1)/4;
ec(k)=x(k)^3-4*x(k)-1; %evaluamos x_k en la ecuacion principal
131
MATLAB Orientado a la matemática aplicada
end
informe=[N',x',ec'];
>> [informe]=met_punto_fijo(-0.5,5)
informe =
0 -0.5000 0.8750
1.0000 -0.2813 0.1028
2.0000 -0.2556 0.0056
3.0000 -0.2542 0.0003
4.0000 -0.2541 0.0000
5.0000 -0.2541 0.0000
Método de bisección
Este es uno de los métodos más sencillos y de fácil intuición, para resolver ecuaciones de una
variable. Si una función 𝑓𝑓 es tal que 𝑓𝑓(𝑎𝑎) y 𝑓𝑓(𝑏𝑏) tienen signos opuestos, el valor cero es un
valor intermedio entre 𝑓𝑓(𝑎𝑎) y 𝑓𝑓(𝑏𝑏), por lo que con certeza existe un 𝑥𝑥 ∗ en [𝑎𝑎, 𝑏𝑏] que cumple
𝑓𝑓( 𝑥𝑥 ∗ ) = 0.
El método consiste en lo siguiente: supongamos que en el intervalo [𝑎𝑎, 𝑏𝑏] hay un cero de 𝑓𝑓.
Calculamos el punto medio 𝑚𝑚 = (𝑎𝑎 + 𝑏𝑏)/2 del intervalo [𝑎𝑎, 𝑏𝑏]. A continuación calculamos
𝑓𝑓(𝑚𝑚). Verificamos si 𝑓𝑓(𝑚𝑚) tiene signo opuesto al de 𝑓𝑓(𝑎𝑎). Se redefine el intervalo [𝑎𝑎, 𝑏𝑏] como
[𝑎𝑎, 𝑚𝑚] o [𝑚𝑚, 𝑏𝑏] según se haya determinado en cuál de estos intervalos ocurre un cambio de
signo. A este nuevo intervalo se le aplica el mismo procedimiento y así, sucesivamente, iremos
encerrando la solución en un intervalo cada vez más pequeño, hasta alcanzar la precisión
deseada.
ESQUEMA ITERATIVO: emplear las sucesiones {𝑎𝑎𝑘𝑘 }, {𝑏𝑏𝑘𝑘 } y {𝑚𝑚𝑘𝑘 } dadas como
𝑎𝑎𝑘𝑘 + 𝑏𝑏𝑘𝑘
𝑚𝑚𝑘𝑘 = ; 𝑘𝑘 = 1,2, …
2
132
Andrés Pérez
EJEMPLO: la función
𝑓𝑓(𝑥𝑥) = 𝑥𝑥 2 − cos(𝑥𝑥) − 1
CÓDIGO:
function[informe]=met_biseccion(a,b,cota)
%ESTE SUBPROGRAMA APROXIMA EL CERO DE LA FUNCION
% f(x)=x^2-cos(x)-1 en [1,2]
%METODO:
% biseccion
%CRITERIO DE PARADA:
% |f(m_k)|<cota
%ARGUMENTOS DE ENTRADA:
%a: extremo izquierdo inicial
%b: extremo derecho inicial
%cota: cota superior de |f(m_k)|
%ARGUMENTOS DE SALIDA:
%informe: matriz con los datos del metodo de biseccion
%columna N°1: cantidad de iteraciones
%columna N°2: terminos a_k
%colmuna N°3: terminos b_k
%columna N°4: terminos m_k
%colmuna N°5: terminos de la sucecion de diametros d_k=(b-a)/2^k
%columna N°6: evaluacion f(m_k)
k=1;
while abs(f_m(k))>=cota
if f_a*f_m>0
else
end
end
134
Andrés Pérez
EJEMPLO (continuación):
>> [informe]=met_biseccion(1,2,0.00454)
informe =
Método de Newton
El método de Newton es uno de los métodos que muestra mejor velocidad de convergencia
llegando (bajo ciertas condiciones) a duplicar, en cada iteración, los decimales exactos.
El método consiste así: partiendo de una aproximación 𝑥𝑥0 de un cero 𝑥𝑥 ∗ de 𝑓𝑓, entonces 𝑥𝑥1 es
la intersección de la recta tangente a 𝑓𝑓 en 𝑥𝑥0 , con el eje 𝑋𝑋. Cuando se ha calculado una
aproximación 𝑥𝑥𝑘𝑘 , la siguiente aproximación 𝑥𝑥𝑘𝑘+1 se obtiene hallando la intersección con el
eje 𝑋𝑋 de la recte tangente en el punto (𝑥𝑥𝑘𝑘 , 𝑓𝑓(𝑥𝑥𝑘𝑘 )).
𝑓𝑓(𝑥𝑥𝑘𝑘 )
𝑥𝑥𝑘𝑘+1 = 𝑥𝑥𝑘𝑘 − , 𝑘𝑘 = 0,1,2, …
𝑓𝑓′ (𝑥𝑥𝑘𝑘 )
𝑥𝑥 2 = 𝑐𝑐𝑐𝑐𝑐𝑐(𝑥𝑥) + 1
estando 𝑥𝑥 ∗ en [1,2]
135
MATLAB Orientado a la matemática aplicada
CÓDIGO:
function[informe]=met_newton(x0,tol)
%ESTE SUBPROGRAMA APROXIMA LA UNICA SOLUCION DE LA ECUACION
% x^2=cos(x)+1 en [1,2]
%METODO:
% Newton
%PLANTEAMIENTO:
% aproximar el cero de la funcion f(x)=x^2-cos(x)-1 en [1,2]
%CRITERIO DE PARADA:
% | x_{n} - x_{n-1} |<=tol
%ARGUMENTOS DE ENTRADA:
%x0: aproximacion del cero de f
%tol: tolerancia
%ARGUMENTOS DE SALIDA:
%informe: matriz con los datos del metodo de biseccion
%columna N°1: cantidad de iteraciones
%columna N°2: terminos x_k
%columna N°3: error absluto estimado como | x_{n} - x_{n-1} |
x1=x0-(x0^2-cos(x0)-1)/(2*x0+sin(x0));
while est(k)>tol
end
136
Andrés Pérez
EJEMPLO (continuación):
>> [informe]=met_newton(1.5,0.0089)
informe =
Método de Euler
El método de Newton puede obtenerse con un polinomio de Taylor de orden 1. Si
aumentamos el orden del polinomio de Taylor, se puede obtener un método de orden
superios. Tal es el método de Euler, el cual es de orden cúbico.
2
𝑥𝑥𝑘𝑘+1 = 𝑥𝑥𝑘𝑘 − 𝑢𝑢(𝑥𝑥𝑘𝑘 )
1 + �1 − 2𝑡𝑡(𝑥𝑥𝑘𝑘 )
donde
𝑓𝑓(𝑥𝑥) 𝑓𝑓 ′′ (𝑥𝑥)
𝑢𝑢(𝑥𝑥) = 𝑦𝑦 𝑡𝑡(𝑥𝑥) = 𝑢𝑢(𝑥𝑥)
𝑓𝑓 ′ (𝑥𝑥) 𝑓𝑓 ′ (𝑥𝑥)
𝑓𝑓(𝑥𝑥) = 𝑥𝑥 2 − 2 cos(𝑥𝑥) + 1
CÓDIGO:
function[informe]=met_euler(x0,maxi)
%ESTE SUBPROGRAMA APROXIMA UN CERO DE LA FUNCION
% f(x)=x^2-2*cos(x)+1
%METODO:
% Euler
137
MATLAB Orientado a la matemática aplicada
%CRITERIO DE PARADA:
% un numero maximo de iteraciones
%ARGUMENTOS DE ENTRADA:
%x0: aproximacion del cero de f
%maxi: iteracion maxima
%ARGUMENTOS DE SALIDA:
%informe: matriz con los datos del metodo de euler
%columna N°1: cantidad de iteraciones
%columna N°2: terminos x_k
%columna N°3: error absluto estimado como | x_{n} - x_{n-1} |
x1=x0-Ux0*(2/(1+sqrt(1-2*Tx0)));
for k=2:maxi
%auxiliar U
x_new=x(k-1)-Ux_k*(2/(1+sqrt(1-2*Tx_k)));
end
138
Andrés Pérez
EJEMPLO (continuación):
>> [informe]=met_euler(0.5,6)
informe =
El método es como sigue: supongamos que 𝑓𝑓(𝑎𝑎)𝑓𝑓(𝑏𝑏) < 0. Sea 𝑥𝑥0 = 𝑎𝑎 o 𝑥𝑥0 = 𝑏𝑏. En cada
iteración una nueva aproximación 𝑥𝑥 ′ es calculada y 𝑎𝑎 y 𝑏𝑏 son actualizados como sigue
• Si 𝑥𝑥 ′ = 𝑥𝑥0 − 𝑓𝑓(𝑥𝑥0 )⁄𝑓𝑓 ′ (𝑥𝑥0 ) cae en [𝑎𝑎, 𝑏𝑏] lo aceptamos, sino usamos bisecciónm, es
decir 𝑥𝑥 ′ = (𝑎𝑎 + 𝑏𝑏)⁄2
• Actualizar: 𝑎𝑎′ = 𝑥𝑥 ′ , 𝑏𝑏 ′ = 𝑏𝑏 o 𝑎𝑎′ = 𝑎𝑎, 𝑏𝑏 ′ = 𝑥𝑥 ′ , de tal manera que 𝑓𝑓(𝑎𝑎′ )𝑓𝑓(𝑏𝑏 ′ ) < 0
139
MATLAB Orientado a la matemática aplicada
CÓDIGO:
function[informe]=meth_newton_biseccion(x0,a,b,maxi)
%ESTE SUBPROGRAMA APROXIMA UN CERO DE LA FUNCION
% f(x)=0.2*sen(16*x)-x+1.75
%DICHO CERO ESTA EN [1,2]
%METODO:
% hibrido: newton-biseccion
%CRITERIO DE PARADA:
% un numero maximo de iteraciones
%ARGUMENTOS DE ENTRADA:
%x0: aproximacion del cero de f
%a: extremo izquierdo inicial
%b: extremo derecho inicial
%maxi: iteracion maxima
%ARGUMENTOS DE SALIDA:
%informe: matriz con los datos del metodo newton-biseccion
%columna N°1: cantidad de iteraciones
%columna N°2: terminos x_k
%columna N°3: error absluto estimado como | x_{n} - x_{n-1} |
%columna N°4: metodo empleado en la k-esima iteracion
% 1) Newton
% 2) Biseccion
x1=cand;
else
x1=(a+b)/2;
end
if f_a*f_x1<0 %a no varia
140
Andrés Pérez
b=x1; %actualizacion de b
else %b no varia
a=x1; %actualizacion de a
end
for k=2:maxi
cand=x(k-1)-(0.2*sin(16*x(k-1))-x(k-1)+1.75)/(3.2*cos(16*x(k-1))-1); %calculamos el
x_new=cand;
x_new=(a+b)/2;
end
est_new=abs(x_new-x(k-1));
if f_a*f_x_new<0 %a no varia
b=x_new; %actualizacion de b
else %b no varia
a=x_new; %actualizacion de a
end
end
141
MATLAB Orientado a la matemática aplicada
EJEMPLO (continuación):
>> [informe]=meth_newton_biseccion(1,1,2,8)
informe =
La diferencia con el método de bisección, es que el término 𝑥𝑥𝑘𝑘 no es punto medio del intervalo
[𝑎𝑎𝑘𝑘−1 , 𝑏𝑏𝑘𝑘−1 ], sino el punto 𝑥𝑥 de interseción entre la recta secante (que une los puntos
extremos (𝑎𝑎𝑘𝑘 , 𝑓𝑓(𝑎𝑎𝑘𝑘 )) y (𝑏𝑏𝑘𝑘 , 𝑓𝑓(𝑏𝑏𝑘𝑘 )) y el eje 𝑋𝑋.
ESQUEMA ITERATIVO: emplear las sucesiones {𝑎𝑎𝑘𝑘 }, {𝑏𝑏𝑘𝑘 } y {𝑥𝑥𝑘𝑘 } dadas para 𝑘𝑘 = 1, 2, …
142
Andrés Pérez
𝑃𝑃(𝑥𝑥) = 𝑥𝑥 2 − 1
CODIGO:
function[informe]=met_falsa_posicion(a,b,maxi)
%ESTE SUBPROGRAMA APROXIMA LA RAIZ DEL POLINOMIO
% P(x)=x^2-1
%DONDE TAL RAIZ SE ENCUENTRA EN EL INTERVALO [0,4]
%MÉTODO:
% falsa posicion
%CRITERIO DE PARADA:
% un numero maximo de iteraciones
%ARGUMENTOS DE ENTRADA:
%a: extremo izquierdo inicial
%b: extremo derecho inicial
%maxi: numero de iteraciones que se desea
%ARGUMENTOS DE SALIDA:
%informe: matriz con los datos del metodo
%columna N°1: indices
%columna N°2: terminos a_k
%columna N°3: terminos b_k
%columna N°4: terminos x_k (falsa posicion)
143
MATLAB Orientado a la matemática aplicada
if f_a*f_x<0
else
end
%posicion
end
EJEMPLO (continuación):
>> [informe]=met_falsa_posicion(0,4,4)
informe =
144
Andrés Pérez
Método de la Secante
Este método es prácticamente el de la falsa posición, la diferencia radica es que en cada
iteración no se estudia si la función cambia de signo en el intervalo respectivo.
CÓDIGO:
function[informe]=met_secante(x0,x1,cota)
%ESTE SUBPROGRAMA APROXIMA LA RAIZ DEL POLINOMIO
% P(x)=x^3-0.2*x^2-0.2*x-1.2
%DONDE TAL RAIZ SE ENCUENTRA EN EL INTERVALO [1,1.5]
%MÉTODO:
% secante
%CRITERIO DE PARADA:
% | f(x_{k+1}) |<cota
%ARGUMENTOS DE ENTRADA:
%x0: primer punto inicial
%x1: segundo punto inicial
%cota: cota de la imagen x_{k+1}
%ARGUMENTOS DE SALIDA:
%informe: matriz con los datos del metodo
%columna N°1: indices
%columna N°2: terminos x_{k+1}
%columna N°3: estimacion del k+1-esimo error absoluto como | x_{k+1} - x_{k} |
%columna N4: evaluacion | f(x_{k+1}) |
145
MATLAB Orientado a la matemática aplicada
x2=(x0*f_x1-x1*f_x0)/(f_x1-f_x0);
est1=abs(x1-x0);
est2=abs(x2-x1);
end
146
Andrés Pérez
EJMPLO (continuación):
>> [informe]=met_secante(1,1.5,0.000023)
informe =
>>[x,fval,exitflag,output]=fzero(‘ f ’,x0)
147
MATLAB Orientado a la matemática aplicada
>> [x,fval,exitflag,output]=fsolve('sin(x)-cos(x)',0.7854)
x=
0.7854
fval =
-3.3307e-015
exitflag =
output =
iterations: 1
funcCount: 4
firstorderopt: 4.7103e-015
options.TolFun.'
148
Andrés Pérez
INTERPOLACIÓN POLINOMIAL
Dada una función 𝑓𝑓, si conocemos 𝑛𝑛 + 1 puntos de si gráfico, la interpolación polinomial
consiste en hallar un polinomio 𝑃𝑃𝑛𝑛 (𝑥𝑥) que pase por los 𝑛𝑛 + 1 dados, de modo que podamos
aproximar el valor de la función 𝑓𝑓 en un un número 𝑥𝑥� (para el que no se conoce 𝑓𝑓(𝑥𝑥�)).
A 𝑃𝑃𝑘𝑘 (𝑥𝑥) se le llama polinomio interpolante, a cada 𝑥𝑥𝑖𝑖 le decimos nodo de interpolación y a cada
𝑦𝑦𝑖𝑖 valor interpolado. Si hacemos 𝐴𝐴 = {𝑥𝑥0 , 𝑥𝑥1 , … , 𝑥𝑥𝑛𝑛 } y 𝑥𝑥� no está en 𝐴𝐴 pero min(𝐴𝐴) < 𝑥𝑥� <
𝑚𝑚𝑚𝑚𝑚𝑚(𝐴𝐴); entonces interpolar 𝒇𝒇 en 𝒙𝒙 � con un subconjunto de 𝑘𝑘 + 1 nodos de 𝐴𝐴 consiste en
calcular 𝑃𝑃𝑘𝑘 (𝑥𝑥) donde 𝑃𝑃𝑘𝑘 es el polinomio interpolante obtenido con un subconjunto de 𝑘𝑘 + 1
nodos alrededor de 𝑥𝑥�. Así el valor de 𝑓𝑓 en un un 𝑥𝑥� lo estimamos como 𝑓𝑓(𝑥𝑥�) ≈ 𝑃𝑃𝑛𝑛 (𝑥𝑥� ).
Forma de Lagrange
Lagrange demostró que el polinomio interpolante viene dado por
𝑃𝑃𝑛𝑛 (𝑥𝑥) = 𝑦𝑦0 𝐿𝐿𝑛𝑛,0 (𝑥𝑥) + 𝑦𝑦1 𝐿𝐿𝑛𝑛,1 (𝑥𝑥) + ⋯ + 𝑦𝑦𝑛𝑛 𝐿𝐿𝑛𝑛,𝑛𝑛 (𝑥𝑥)
A 𝑃𝑃𝑛𝑛 (𝑥𝑥) expresado de esta forma se le conoce como forma de Lagrange del polinomio
interpolante.
CÓDIGO:
function[f_new]=forma_lagrange(x,y,x_new)
%ESTE SUBPROGRAMA REALIZA INTERPOLACION POLINOMIAL DE UNA FUNCION
%PLANTEAMIENTO:
%dados n+1 puntos (x0,y0), (x1, y1), ..., (xn, yn) de una funcion f con los xi distintos entre
si,denotando A={x0, x1, ..., xn}, y dado x_new distinto de cada xi con min(A)<x_new<max(A);
%este subprograma interpola f en x_new mediante el polinomio interpolante de grado n
%METODO:
% forma de Lagrange
%ARGUMENTOS DE ENTRADA:
%x: vector con los n+1 nodos de interpolacion
%y: vector con los n+1 valores interpolados
%ARGUMENTOS DE SALIDA:
%f_new: interpolacion de f en x_new
149
MATLAB Orientado a la matemática aplicada
for i=1:m
if i~=k
fac=fac*(x_new-x(i))/(x(k)-x(i));
end
end
L_n(k)=fac;
end
suma=0;
suma=suma+y(k)*L_n(k);
end
f_new=suma;
>> [f_new]=forma_lagrange(x,y,0.35)
f_new =
0.3329
150
Andrés Pérez
CÓDIGOS:
function[W]=pesos_baricentricos(x)
%ESTE SUBPROGRAMA CALCULA LOS PESOS BARICENTRICOS DE n+1 NODOS
%ARGUMENTOS DE ENTRADA:
%x: vector con los n+1 nodos de interpolacion
%ARGUMENTOS DE SALIDA:
%W: vector con los pesos baricentricos
for k=1:m %en cada iteracion se calcula el k-1 esimo peso baricentrico
%W_{k-1}
fac=1;
for i=1:m
if i~=k
fac=fac*(1/(x(k)-x(i)));
end
151
MATLAB Orientado a la matemática aplicada
end
W(k)=fac;
end
function[f_new]=forma_lagrange_modificada(x,y,x_new)
%ESTE SUBPROGRAMA REALIZA INTERPOLACION POLINOMIAL DE UNA FUNCION
%PLANTEAMIENTO:
%dados n+1 puntos (x0,y0), (x1, y1), ..., (xn, yn) de una funcion f con los xi distintos entre
%si,denotando A={x0, x1, ..., xn}, y dado x_new distinto de cada xi con min(A)<x_new<max(A);
%este subprograma interpola f %en x_new mediante el polinomio interpolante de grado n
%METODO:
% forma modificada de Lagrange
%ARGUMENTOS DE ENTRADA:
%x: vector con los n+1 nodos de interpolacion
%y: vector con los n+1 valores interpolados
%ARGUMENTOS DE SALIDA:
%f_new: interpolacion de f en x_new
L=1;
for k=1:m
L=L*(x_new-x(k));
end
[W]=pesos_baricentricos(x);
suma=0;
suma=suma+(W(k)/(x_new-x(k)))*y(k);
end
f_new=L*suma;
152
Andrés Pérez
EJEMPLO: considere los siguientes datos del segundo coeficiente virial 𝐵𝐵 en función
de la temperatura 𝑇𝑇
>> [f_new]=forma_lagrange_modificada(x,y,450)
f_new =
13.8844
CÓDIGO:
function[f_new]=forma_baricentrica_lagrange(x,y,x_new)
%ESTE SUBPROGRAMA REALIZA INTERPOLACION POLINOMIAL DE UNA FUNCION
%PLANTEAMIENTO:
%dados n+1 puntos (x0,y0), (x1, y1), ..., (xn, yn) de una funcion f con los xi distintos entre %si,
%denotando A={x0, x1, ..., xn}, y dado x_new distinto de cada xi con min(A)<x_new<max(A);
%este subprograma interpola f en x_new mediante el polinomio interpolante de grado n
%METODO:
%forma baricentrica del poliniomio de Lagrange
%ARGUMENTOS DE ENTRADA:
%x: vector con los n+1 nodos de interpolacion
%y: vector con los n+1 valores interpolados
%ARGUMENTOS DE SALIDA:
%f_new: interpolacion de f en x_new
m=length(x); %cantidad de nodos m=n+1 (se cuentan los n+1 nodos)
153
MATLAB Orientado a la matemática aplicada
L=1;
for k=1:m
L=L*(x_new-x(k));
end
[W]=pesos_baricentricos(x);
suma1=0;
suma2=0;
for k=1:m
suma1=suma1+(W(k)/(x_new-x(k)))*y(k);
suma2=suma2+W(k)/(x_new-x(k));
end
>> [f_new]=forma_baricentrica_lagrange(x,y,0.108)
f_new =
6.4875
154
Andrés Pérez
CÓDIGO:
function[f_new]=forma_lagrange_baricentrica_2(x,y,x_new)
%ESTE SUBPROGRAMA REALIZA INTERPOLACION POLINOMIAL DE UNA FUNCION
%PLANTEAMIENTO:
%dados n+1 puntos (x0,y0), (x1, y1), ..., (xn, yn) de una funcion f con los xi distintos entre si,
%denotando A={x0, x1, ..., xn}, y dado x_new distinto de cada xi con min(A)<x_new<max(A);
este subprograma interpola f en x_new mediante el polinomio interpolante de grado n
%METODO:
%forma baricentrica del poliniomio de Lagrange con nodos igualmente espaciados
%ARGUMENTOS DE ENTRADA:
%x: vector con los n+1 nodos igualmente espaciados
%y: vector con los n+1 valores interpolados
%ARGUMENTOS DE SALIDA:
%f_new: interpolacion de f en x_new
n=m-1;
suma1=0;
suma2=0;
for k=1:m
num_comb=factorial(n)/(factorial(k-1)*factorial(n-(k-1)));
suma1=suma1+(-1)^(k-1)*num_comb*(y(k)/(x_new-x(k)));
suma2=suma2+(-1)^(k-1)*num_comb*(1/(x_new-x(k)));
end
155
MATLAB Orientado a la matemática aplicada
Tomando en cuenta que los nodos están igualmente espaciados interpole 𝑓𝑓(0.2)
>> [f_new]=forma_lagrange_baricentrica_2(x,y,0.2)
f_new =
5.6348
Forma de Newton
La representación
𝑃𝑃𝑛𝑛 (𝑥𝑥) = 𝐶𝐶0,0 + 𝐶𝐶1,1 (𝑥𝑥 − 𝑥𝑥0 ) + 𝐶𝐶2.2 (𝑥𝑥 − 𝑥𝑥0 )(𝑥𝑥 − 𝑥𝑥1 )
para el polinomio interpolante que pasa por los 𝑛𝑛 + 1 puntos (𝑥𝑥0 , 𝑦𝑦0 ), (𝑥𝑥1 , 𝑦𝑦1 ), … , (𝑥𝑥𝑛𝑛 , 𝑦𝑦𝑛𝑛 ), es
conocida como la presentación de Newton del polinomio interpolante. Los coeficientes 𝐶𝐶𝑖𝑖,𝑖𝑖
son los elementos de la diagonal de la matriz de diferencias divididas
𝐶𝐶0,0
𝐶𝐶1,0 𝐶𝐶1,1
𝐶𝐶2,0 𝐶𝐶2,1 𝐶𝐶2,2
𝐶𝐶3,0 𝐶𝐶3,1 𝐶𝐶3,2
⋮ ⋮ ⋮ ⋱
𝐶𝐶𝑛𝑛,0 𝐶𝐶𝑛𝑛,1 𝐶𝐶𝑛𝑛,2 ⋯ 𝐶𝐶𝑛𝑛,𝑛𝑛
CÓDIGOS:
156
Andrés Pérez
function[C]=diferencias_divididas(x,y)
%ESTE SUBPROGRAMA CALCULA LA MATRIZ DE DIFERENCIAS DIVIDIDAS DE n+1 PUNTOS
%(x0,y0), (x1,y1),…, (xn, yn)
%ARGUMENTOS DE ENTRADA:
%x: vector con los n+1 nodos de interpolacion
%y: vector con los n+1 valores interpolados
%ARGUMENTOS DE SALIDA:
%C: matriz con las diferencias divididas
n=m-1;
for i=1:m
end
for j=1:n
for i=j:n
C(i+1,j+1)=(C(i+1,j)-C(i,j))/(x(i+1)-x(i-j+1));
end
end
function[f_new]=forma_newton(x,y,x_new)
%ESTE SUBPROGRAMA REALIZA INTERPOLACION POLINOMIAL DE UNA FUNCION
%PLANTEAMIENTO:
%dados n+1 puntos (x0,y0), (x1, y1), ..., (xn, yn) de una funcion f con los xi distintos entre si,
%denotando A={x0, x1, ..., xn}, y dado x_new distinto de cada xi con min(A)<x_new<max(A);
este subprograma interpola f en x_new mediante el polinomio interpolante de grado n
%METODO:
% forma de Newton
%ARGUMENTOS DE ENTRADA:
%x: vector con los n+1 nodos de interpolacion
%y: vector con los n+1 valores interpolados
%ARGUMENTOS DE SALIDA:
%f_new: interpolacion de f en x_new
[C]=diferencias_divididas(x,y);
suma=C(1,1);
fac=1;
for j=2:m
fac=fac*(x_new-x(j-1));
suma=suma+C(j,j)*fac;
end
EJEMPLO: la siguiente tabla muestra los pesos normales (en libras) de bebés
durante los primeros 12 meses de vida
Edad 0 2 5 8 10 12
>> [f_new]=forma_newton(x,y,6)
f_new =
15.4564
Donde los coeficientes 𝐶𝐶𝑘𝑘,𝑘𝑘 son las entradas de la diagonal principal de la matriz de diferencias
divididas, y �𝑘𝑘𝑠𝑠 � es el número combinatorio extendido, dado por
158
Andrés Pérez
𝑠𝑠
� �=1,
0
𝑠𝑠
� � = 𝑠𝑠 ,
1
𝑠𝑠 𝑠𝑠(𝑠𝑠 − 1)
� �= ,
2 2
CÓDIGOS:
function[combi]=combinatorio_ext(s,k)
%ESTE SUBPROGRAMA CALCULA EL NUMERO COMBINATORIO EXTENDIDO
%ARGUMENTOS DE ENTRADA:
%s: numero real cualquiera
%k: numero entero no negativo
%ARGUMENTOS DE SALIDA:
%combi: numero combinatorio extendido C_{s,k}
fac=1;
for i=0:k-1
fac=fac*(s-i);
end
combi=fac/factorial(k);
function[f_new,C,s]=forma_newton_2(x,y,x_new)
%ESTE SUBPROGRAMA REALIZA INTERPOLACION POLINOMIAL DE UNA FUNCION
%PLANTEAMIENTO:
%dados n+1 puntos (x0,y0), (x1, y1), ..., (xn, yn) de una funcion f con los xi distintos entre
si,denotando A={x0, x1, ..., xn},
%y dado x_new distinto de cada xi con min(A)<x_new<max(A); este subprograma interpola f
en x_new mediante
%el polinomio interpolante de grado n
%METODO:
%forma de Newton del poliniomio interpolante con nodos igualmente espaciados
%ARGUMENTOS DE ENTRADA:
%x: vector con los n+1 nodos igualmente espaciados
%y: vector con los n+1 valores interpolados
%ARGUMENTOS DE SALIDA:
%f_new: interpolacion de f en x_new
159
MATLAB Orientado a la matemática aplicada
[C]=diferencias_divididas(x,y);
suma=0;
for k=1:m
%real)
suma=suma+combi*factorial(k-1)*h^(k-1)*C(k,k);
end
Interpolar 𝑓𝑓(0.57)
>> x=[0:0.1:0.7];
>> [f_new]=forma_newton_2(x,y,0.57)
f_new =
6.4180
160
Andrés Pérez
>>p = polyfit(x,y,n)
Mas precisamente, p arroja los n+1 coeficientes de 𝑃𝑃𝑛𝑛 (𝑥𝑥) en sentido decreciente
Una vez obtenido el vector p de los coeficientes del polinomio, este puede ser evaluado en un
valor x con el comando
>>polyval(p,x)
𝒕𝒕 0 5 10 15 20
>> p=polyfit(x,y,4)
p=
161
MATLAB Orientado a la matemática aplicada
>> polyval(p,16)
ans =
1.4269
>> t=[0:0.1:20];
>> u=polyval(p,t);
>> plot(t,u)
162
Andrés Pérez
EJERCICIOS 8
2. Resuelva la ecuación
𝑥𝑥 2 − 2 cos(𝑥𝑥) + 1 = 0
Aplicando Newton y Euler simultáneamente, 𝑥𝑥0 = 0.5, diez iteraciones. La
salida del fichero que va a definir debe ser una matriz de orden 10 × 3, donde:
• La primera columna indique el índice de la iteración
• La segunda columna muestre los términos 𝑥𝑥𝑘𝑘 del método de Newton
• La tercera columna muestre los términos 𝑥𝑥𝑘𝑘 del método de Euler
3. Resuelva la ecuación
𝑥𝑥 2 − cos(𝑥𝑥) − 1 = 0
Aplicando bisección y falsa posición simultáneamente, 𝑎𝑎1 = 1, 𝑏𝑏1 = 2, nueve
iteraciones. La salida del fichero que va a definir debe ser una matriz de orden
9 × 3, donde:
• La primera columna indique el índice de la iteración
• La segunda columna muestre los términos 𝑥𝑥𝑘𝑘 del método de bisección
• La tercera columna muestre los términos 𝑥𝑥𝑘𝑘 del método de la falsa
posición
5. En la siguiente tabla se muestran los valores de la densidad del agua del mar 𝜌𝜌 (en
𝐾𝐾𝐾𝐾⁄𝑚𝑚3 ) correspondientes a diferentes valores de la termperatura 𝑇𝑇 (en grados
Celsius)
163
MATLAB Orientado a la matemática aplicada
Censos Población
1873 1732411
1881 2005139
1891 2221572
1920 2479525
1926 2814131
1941 3850771
1950 5034838
1961 7523999
1971 10721522
1981 14516735
1990 18105265
2001 23054210
2011 27227930
7. A continuación mostramos las cifras dadas por el INE (de acuerdo a los censos 1873-
2011) respecto a la evolución de la población en el estado Lara
Censo Población
1873 143818
1881 176079
1891 189624
1920 219816
1926 271369
1936 291230
1941 332975
1950 368169
1971 671410
1981 945064
1990 1193161
2001 1556415
2011 1774867
164
Andrés Pérez
Matriz VB
Librería para poder utilizar desde Visual Basic las funciones matemáticas y gráficas que
incorpora MATLAB.
165
MATLAB Orientado a la matemática aplicada
Symbolic Math
Permite integrar la expresión y el cálculo simbólicos (cálculo, transformadas, álgebra lineal,
ecuaciones) al entorno de cálculo y visualización de MATLAB.
Database Toolbox
Permite directamente desde MATLAB consultar e intercambiar datos con las bases de datos
ODBC/JDBC más populares (Oracle, Sybase SQL Server, Sybase SQL Anywhere, Microsoft SQL
Server, Microsoft Access, Informix and Ingres) de forma dinámica, preservándolos durante el
intercambio y simultáneamente con más de una base de datos.
Statistics Toolbox
Funciones y herramientas interactivas para el análisis de datos históricos, el modelado y
simulación de sistemas y para el desarrollo de algoritmos estadísticos. Soporta 20
distribuciones de probabilidad, incorpora el control estadístico de procesos, el diseño de
experimentos, estadística descriptiva, análisis clúster, etc.
Optimization Toolbox
Proporciona diversos algoritmos y técnicas para solucionar problemas de optimización no
lineales, tanto generales como a gran escala.
Spline Toolbox
Mediante un interface gráfico proporciona potentes funciones para el ajuste de datos,
visualización, interpolación y extrapolación mediante técnicas spline.
166
Andrés Pérez
167
MATLAB Orientado a la matemática aplicada
Communications Toolbox
Conjunto de funciones para MATLAB que facilitan el diseño de algoritmos y componentes de
sistemas de comunicaciones.
Wavelet Toolbox
Funciones basadas en el análisis wavelet para analizar y procesar señales, imágenes (señal
bidimensional) y series temporales; son adecuadas para el estudio de señales con
características no estacionarias o transitorias en las que el análisis del tiempo en que dichas
señales experimentan los cambios es primordial (para el estudio de este tipo de señales no es
adecuado el análisis de Fourier). Estas aplicaciones son muy convenientes para eliminación de
ruidos y ecos, compresión de imágenes y vídeo.
Mapping Toolbox
Conjunto de herramientas para el análisis y visualización de información
gráfica de tipo geográfico.
168
Andrés Pérez
Financial Toolbox
Proporciona las herramientas básicas para finanzas cuantitativas y prototipaje analítico
aplicables a optimización de portfolios y análisis de riesgos, cálculos de precios y sensibilidades
según diversos modelos, análisis de volatilidad (ARCH/GARCH), análisis básico de series
temporales, etc.
Garch Toolbox
Proporciona un entorno de cálculo integrado para trabajar con el modelo
GARCH de volatilidad. Usa un modelo compuesto ARMAX/GARCH para
simulaciones, previsiones, estimación de parámetros de series temporales, etc.
Datafeed Toolbox
Permite desde MATLAB el acceso a los servicios de datos financieros (Bloomberg, Interactive
Data, Yahoo Finance) para su descarga y posterior análisis en MATLAB.
Simulink
Es un entorno gráfico interactivo para el modelado, análisis y simulación de una gran variedad
de sistemas dinámicos (discreto, analógico e híbrido) mediante la utilización de diagramas de
bloques. Permite la incorporación de los algoritmos y controles que se hayan desarrollado en C
previamente a la utilización de Simulink. Trabaja totalmente integrado con MATLAB.
169
MATLAB Orientado a la matemática aplicada
Stateflow
Es un entorno gráfico interactivo para el modelado de la lógica de sistemas dinámicos basados
en eventos (temporales o de estado). Se basa en la teoría de máquinas de estado finito y utiliza
diagramas de transición de estado para expresar la lógica del sistema y diagramas de control
de flujo. Trabaja perfectamente integrado con Simulink.
Virtual Reality
Permite la creación de escenas e imágenes en movimiento en un entorno de realidad virtual de
3 dimensiones. Desde MATLAB y Simulink podemos representar y visualizar en este entorno de
realidad virtual el modelo que estamos simulando e interactuar con él, bien desde Simulink o
bien desde el propio entorno de realidad virtual.
BLOCKSETS DE SIMULINK
Al igual que MATLAB presentaba toolboxes adicionales con extensiones del programa general
aplicadas a diversos campos, Simulink también presenta aplicaciones adicionales con
extensiones de simulación de sistemas denominadas blocksets. A continuación se relacionan
los más interesantes:
DSP Blockset
Proporciona un conjunto de bloques para Simulink que son el fundamento para el diseño de
muchas aplicaciones de procesado de señales digitales (DSP) como procesado básico de señal,
estimación espectral, diseño de filtros. Todos los bloques soportan simulación por muestreo y
por frames.
Communications Blockset
Conjunto de más de 150 bloques para Simulink para diseñar de forma completa y simular
sistemas de comunicaciones.
170
Andrés Pérez
Fixed-Point Blockset
Permite emular la aritmética de punto fijo cuando diseñamos y simulamos sistemas dinámicos
o filtros digitales que al final serán implementados en targets digitales de punto fijo.
Real-Time Workshop
Genera código C en tiempo real a partir de los modelos realizados en Simulink, lo que nos
permite realizar prototipaje rápido, acelerar las simulaciones o realizar simulaciones en tiempo
real.
171
MATLAB Orientado a la matemática aplicada
Stateflow Coder
Genera código C en tiempo real a partir de los diagramas de transición realizados en Stateflow.
IMPLEMENTACIÓN EN TARGETS
El desarrollo de tarjetas (targets) para relacionar MATLAB con aplicaciones de otros sistemas
ha registrado un avance importante en las últimas versiones del programa. La implementación
en targets ha originado módulos como los siguientes:
PROTOTIPAJE
En el campo del prototipaje MATLAB dispone de las siguientes aplicaciones:
xPC Target
Permite añadir bloques I/O a Simulink, generar código con Real-Time Workshop y descargar
este código en un segundo PC que ejecuta el kernel de xPC Target. Es ideal para prototipaje
rápido. Permite la ejecución de modelos en tiempo real en un segundo PC (como target) sin
necesidad de Windows. Con esta solución, el PC que actúa como host y el que actúa como
target se mantienen comunicados durante la ejecución en tiempo real.
172
Andrés Pérez
173
MATLAB Orientado a la matemática aplicada
BIBLIOGRAFÍA
C. Pérez. (2002). Matlab y sus Aplicaciones en las Ciencias y la Ingeniería. Madrid.
B. Hunt. (2001). A Guide to MATLAB for Beginners and Experienced Users. Cambridge.
174
Andrés Pérez
175