Vous êtes sur la page 1sur 175

Andrés Pérez

MATLAB
Orientado a
la matemática aplicada

2da Edición
Universidad Centroccidental

“Lisandro Alvarado”

Decanato de Ciencias y Tecnología

Licenciatura en Ciencias Matemáticas

Barquisimeto. Estado Lara

MATLAB
Orientado a la matemática aplicada
Segunda Edición

Andrés E. Pérez G.

E-mail: andres.chi.cuadrado@gmail.com

Barquisimeto. Marzo de 2014


A Dios Todopoderoso, mi fuente de lux et veritas.
MATLAB Orientado a la matemática aplicada

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

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


Algunas reglas básicas de sintaxis ................................................................................................................. 32
EJERCICIOS 1 ...................................................................................................................................................... 33
CAPITULO 2. ALGORITMOS .........................................................................................................................35
COMANDO if ...................................................................................................................................................... 36
Comando if simple ......................................................................................................................................... 36
Comando if múltiple ...................................................................................................................................... 37
COMANDO for ................................................................................................................................................... 38
Comando for simple ...................................................................................................................................... 38
Comando for con especificación de incremento ........................................................................................... 39
Anidamiento de comandos for ...................................................................................................................... 39
COMANDO while ............................................................................................................................................... 40
EJERCICIOS 2 ...................................................................................................................................................... 42
CAPITULO 3. M-Ficheros .............................................................................................................................44
FICHEROS SCRIPT ............................................................................................................................................... 46
Paso 1: acceder al editor ............................................................................................................................... 46
Paso 2: estructurar el fichero ........................................................................................................................ 47
Paso 3: guardar el fichero .............................................................................................................................. 47
Paso 4: ejecutar el fichero ............................................................................................................................. 48
¿Realmente que es un fichero script? ........................................................................................................... 49
FICHEROS DE FUNCIÓN ..................................................................................................................................... 51
Paso 1: acceder al editor ............................................................................................................................... 51
Paso 2: estructurar el fichero ........................................................................................................................ 51
Paso 3: guardar el fichero .............................................................................................................................. 53
Paso 4: ejecutar el fichero ............................................................................................................................. 53
¿Realmente que es un fichero de función? ................................................................................................... 54
EL COMANDO help ............................................................................................................................................ 54
COMPARATIVA ENTRE UN FICHERO SCRIPT Y UN FICHERO DE FUNCIÓN ........................................................ 55
EJERCICIOS 3 ...................................................................................................................................................... 57
CAPITULO 4. CÁLCULO SIMBÓLICO.............................................................................................................. 61
FUNCIONES ........................................................................................................................................................ 61
ECUACIONES ...................................................................................................................................................... 63
5
MATLAB Orientado a la matemática aplicada

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

Un método híbrido: Newton-Bisección ....................................................................................................... 139


Método de la Falsa Posición ........................................................................................................................ 142
Método de la Secante.................................................................................................................................. 145
Comandos predefinidos en MATLAB ........................................................................................................... 147
INTERPOLACIÓN POLINOMIAL ........................................................................................................................ 149
Forma de Lagrange ...................................................................................................................................... 149
Forma modificada de Lagrange ................................................................................................................... 151
Forma baricéntrica de Lagrange .................................................................................................................. 153
Forma baricéntrica con nodos igualmente espaciados ............................................................................... 155
Forma de Newton ........................................................................................................................................ 156
Forma de Newton con nodos igualmente espaciados ................................................................................ 158
Comandos predefinidos en MATLAB ........................................................................................................... 161
EJERCICIOS 8 .................................................................................................................................................... 163
CAPÍTULO 9. COMPONENTES DE MATLAB ................................................................................................. 165
EL SOFTWARE BÁSICO MATLAB Y SUS HERRAMIENTAS ADICIONALES ........................................................... 165
MATLAB Report Generador ......................................................................................................................... 165
MATLAB Compiler Suite............................................................................................................................... 165
MATLAB Runtime Server ............................................................................................................................. 165
MATLAB Web Server ................................................................................................................................... 165
Matriz VB ..................................................................................................................................................... 165
MATLAB Excel Builder.................................................................................................................................. 166
TOOLBOXES DE MATLAB DE APLICACIÓN EN MATEMÁTICA GENERAL .......................................................... 166
Symbolic Math ............................................................................................................................................. 166
Extended Symbolic Math............................................................................................................................. 166
Database Toolbox ........................................................................................................................................ 166
Excel Link Toolbox........................................................................................................................................ 166
Statistics Toolbox ......................................................................................................................................... 166
Optimization Toolbox .................................................................................................................................. 166
Spline Toolbox ............................................................................................................................................. 166
Partial Differential Equation Toolbox .......................................................................................................... 167
Neural Network Toolbox ............................................................................................................................. 167
TOOLBOXES DE MATLAB DE ADQUISICIÓN DE DATOS .................................................................................... 167
8
Andrés Pérez

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


Instrument Control Toolbox ........................................................................................................................ 167
Curve Fitting Toolbox................................................................................................................................... 167
TOOLBOXES DE MATLAB PARA PROCESADO DE SEÑALES .............................................................................. 167
Signal Processing Toolbox ........................................................................................................................... 168
Filter Desgin Toolbox ................................................................................................................................... 168
Communications Toolbox ............................................................................................................................ 168
Wavelet Toolbox .......................................................................................................................................... 168
System Identification Toolbox ..................................................................................................................... 168
TOOLBOXES DE MATLAB PARA PROCESADO DE IMÁGENES ........................................................................... 168
Image Processing Toolbox ........................................................................................................................... 168
Mapping Toolbox ......................................................................................................................................... 168
TOOLBOXES DE MATLAB EN EL ÁREA FINANCIERA ......................................................................................... 169
Financial Toolbox ......................................................................................................................................... 169
Financial Time Series Toolbox ..................................................................................................................... 169
Financial Derivatives Toolbox ...................................................................................................................... 169
Garch Toolbox.............................................................................................................................................. 169
Datafeed Toolbox ........................................................................................................................................ 169
SIMULACIÓN DE SISTEMAS CON SIMULINK Y SUS HERRAMIENTAS ADICIONALES......................................... 169
Simulink ....................................................................................................................................................... 169
Stateflow...................................................................................................................................................... 170
Simulink Report Generator .......................................................................................................................... 170
Simulink Performance Tools ........................................................................................................................ 170
Requirements Management Interface ........................................................................................................ 170
Virtual Reality .............................................................................................................................................. 170
BLOCKSETS DE SIMULINK ................................................................................................................................ 170
DSP Blockset ................................................................................................................................................ 170
Communications Blockset ........................................................................................................................... 170
CDMA Reference Blockset ........................................................................................................................... 171
Fixed-Point Blockset .................................................................................................................................... 171
Dials & Gauges Blockset .............................................................................................................................. 171
Nonlinear Control Design Blockset .............................................................................................................. 171
9
MATLAB Orientado a la matemática aplicada

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


Sym Mechanics Blockset.............................................................................................................................. 171
GENERACIÓN DE CÓDIGO DE SIMULINK ......................................................................................................... 171
Real-Time Workshop ................................................................................................................................... 171
Real-Time Workshop Embedded Coder ...................................................................................................... 171
Stateflow Coder ........................................................................................................................................... 172
IMPLEMENTACIÓN EN TARGETS ..................................................................................................................... 172
Developer’s Kit for Texas Instruments DSP ................................................................................................. 172
Motorola DSP Developer’s Kit. .................................................................................................................... 172
Xilinx’s FPGA System Generator for Simulink .............................................................................................. 172
PROTOTIPAJE ................................................................................................................................................... 172
Real-Time Windows Target ......................................................................................................................... 172
xPC Target .................................................................................................................................................... 172
xPC Target Embedded Option ..................................................................................................................... 173
ANÁLISIS Y DISEÑO DE SISTEMAS DE CONTROL .............................................................................................. 173
Control System Toolbox .............................................................................................................................. 173
Fuzzy Logic Toolbox ..................................................................................................................................... 173
Robust Control Toolbox ............................................................................................................................... 173
μ-Analysis and Synthesis Toolbox................................................................................................................ 173
LMI Control Toolbox .................................................................................................................................... 173
Model Predictive Control Toolbox............................................................................................................... 173
Model-Based Calibration Toolbox ............................................................................................................... 173
BIBLIOGRAFÍA .......................................................................................................................................... 174

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.

¿COMO UTILIZAR ESTE TUTORIAL?


Esta obra está dividida en nueve capítulos. Los primeros tres corresponden a temas básicos sobre el manejo de
MATLAB: manipulación de variables vectoriales y matriciales, programación estructurada y definición de
M-Ficheros respectivamente.

Los capítulos cuarto y quinto corresponden a: cálculo simbólico y gráficos respectivamente.

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

CAPITULO 1. COMENZANDO A TRABAJAR CON


MATLAB

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.

¿Qué versión estamos utilizando en este tutorial?


A lo largo de esta obra, utilizaremos la versión MATLAB2007a.

12
Andrés Pérez

ENTORNO DE TRABAJO DE MATLAB

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:

• Comand Window (ventana de comandos): ejecuta las funciones MATLAB.


• Comand History (historial de comandos): presenta una historia de todas las funciones introducidas en
la ventana de comandos y permite copiarlas y ejecutarlas.
• Current Directory (directorio actual): muestra ficheros MATLAB y ejecuta operaciones de ficheros tales
como abrir y buscar contenido.
• Help (ayuda): muestra y busca documentación de toda la familia completa de productos MATLAB.
• Workspace (espacio de trabajo): muestra y realiza cambios en el contenido del espacio de trabajo.
• Array Editor: muestra contenido de arrays en formato de tabla y edita sus valores.
• Editor: crea, edita y comprueba M-Ficheros (mas adelante hablaremos sobre el editor y los M-
Ficheros).

13
MATLAB Orientado a la 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 de historial de comandos

La ventana Comand History aparece cuando se inicia MATLAB, situada en la parte inferior derecha del
escritorio de MATLAB. Esta ventana muestra una 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

La ventana de directorio actual

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).

NÚMEROS, OPERADORES Y VARIABLES


Se puede trabajar con diferentes tipos de números y expresiones numéricas, que abarcan todo el campo de los
números enteros, racionales, reales, complejos, y se utilizan en argumentos de funciones.

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.

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

>> 1/2+1/3

luego pulsamos Enter y MATLAB muestra el resultado deseado

ans =

0.8333

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

EJEMPLO: el cálculo del ejemplo anterior lo podemos hacer utilizando


variables. Escribimos en la ventana de comandos

>>x=1/2

pulsamos Enter y se produce

x=

0.5000

análogamente

>> y=1/3

>>y =

0.3333

ahora calculemos z=x+y

>>z=x+y

z=

0.8333

como la variable z almacena el valor 0.8333, si tipiamos

>>z

y luego pulsamos Enter, MATLAB nos muestra

z=

0.8333

Esto es así, pues el valor asignado a una variable es permanente, hasta


que no se cambie de forma expresa o hasta que no se salga de la presente
sesión de MATLAB, por ejemplo

>>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

Funciones matemáticas elementales de MATLAB


Un resumen de las funciones elementales del módulo básico de MATLAB se muestra en la siguiente tabla

SINTAXIS EXPLICACIÓN

sqrt(x) Raíz cuadrada

exp(x) Exponencial

log(x) Logaritmo natural (neperiano)

abs(x) Valor absoluto

factorial(n) Factorial

rem(a,b) Resto de la división a/b

sin(x), sinh(x) Seno y seno hiperbólico

cos(x), cosh(x) Coseno y coseno hiperbólico

tan(x), tanh(x) Tangente y tangente hiperbólico

cot(x), coth(x) Cotangente y cotangente hiperbólico

sec(x), sech(x) Secante y secante hiperbólico

csc(x), csch(x) Cosecante y cosecante hiperbólico

18
Andrés Pérez

asin(x), asinh(x) Arco seno y arco seno hiperbólico

acos(x), acosh(x) Arco coseno y arco coseno hiperbólico

atan(x), atanh(x) Arco tangente y arco tangente hiperbólico

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


hiperbólico

asec(x), asech(x) Arco secante y arco secante hiperbólico

acsc(x), acsch(x) Arco cosecante y arco cosecante hiperbólico

Funciones matemáticas elementales.

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

Algunos números especiales


Existe un grupo importante de números irracionales y reales en general que por su utilización merecen trato
especial. MATLAB incorpora los siguientes:

SINTAXIS EXPLICACIÓN

pi Número 𝜋𝜋

exp(1) Número 𝑒𝑒

i Unidad imaginaria 𝑖𝑖

Inf Infinito. Se produce con operaciones como 1/0

NaN Indeterminación. Se produce con operaciones como


0/0 o Inf/Inf

realmin Menor número real positivo utilizable

realmax Mayor número real positivo utilizable

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:

o Separando los componentes con comas

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

o Separando los componentes con espacios en blanco

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

variable=[a:b] Define el vector cuyos primero y último


elementos son a y b, respectivamente, y los
elementos intermedios se diferencian en una
unidad

variable=[a:s:b] Define el vector cuyos primero y último


elementos son a y b, y los elementos

21
MATLAB Orientado a la matemática aplicada

intermedios se diferencian en la cantidad s


especificada por el incremento

variable=linspace(a,b,n) Define el vector cuyos primero y último


elementos son a y b, y que tiene en total n
elementos uniformemente espaciados entre

variable=logspace(a,b,n) Define el vector cuyos primero y último


elementos son especificados y que tiene en
total n elementos en escala logarítmica
uniformemente espaciados entre sí

Formas de definir vectores.

EJEMPLO:

>>G=[1:0.2:2]

G=

1.0000 1.2000 1.4000 1.6000 1.8000 2.0000

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

Asimismo podemos seleccionar un elemento de un vector o un subconjunto de elementos. La tabla siguiente


nos lo explica

SINTAXIS EXPLICACIÓN

lenght(x) Devuelve la longitud del vector x

x(n) Devuelve el enésimo elemento del vector x

x(a:b) Devuelve los elementos del vector x situados entre el


a-ésimo y el b-ésimo, ambos inclusive.

x(a:p:b) Devuelve los elementos del vector x situados entre el


a-ésimo y el b-ésimo (a<b), ambos inclusive, pero
separados de p en p unidades (p>0)

x(b:p:a) Devuelve los elementos del vector x situados entre el


b-ésimo y el a-ésimo (b>a), ambos inclusive, pero
separados de p en p unidades y empezando por el b-
ésimo (p<0)

Opciones para manipular vectores.

EJEMPLO:

>> z=[1 0 2 0 3 0 4 0 5 0];

>> 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]

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

det(a) Determinante de la matriz A

inv(A) Devuelve la matriz inversa de A

A’ Devuelve la matriz transpuesta de A

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


de la matriz A

jordan(a) Forma canónica de Jordan de la matriz A

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

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

flipud(A) Devuelve la matriz cuyas filas están colocadas en


orden inverso (de arrida hacia abajo) a las filas de A

fliplr(A) Devuelve la matriz cuyas columnas están colocadas


en orden inverso (de izquierda a derecha) a las de A

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

24
Andrés Pérez

columna

reshape(A,m,n) Devuelve la matriz de orden m×n extraída de la


matriz A tomando elementos consecutivos de A por
columnas

size(A) Devuelve el orden (tamaño) de la matriz A

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


diagonal

eye(n) Crea la matriz identidad de orden n

eye(m,n) Crea la matriz de orden m×n con unos en la diagonal


principal y ceros en el resto

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

ones(m,n) Crea la matriz de orden m×n con todos sus elementos


iguales a 1

pascal(n) Crea una matriz nxn, la cual es una extracción del


Triángulo de Pascal

magic(n) Crea una matriz mágica, en la cual todas las filas,


columnas y diagonales suman el mismo valor

rosser Devuelve una matriz de valores propios de prueba

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

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

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

A(a:p:b,c:q:d) Define la submatriz de A formada por las filas que hay


entre la a-ésima y la b-ésima tomándolas de p en p y
por las columnas que hay entre la c-ésima y la d-
ésima de q en q

A([a b],[c d]) Define la submatriz de A formada por la intersección


de las filas a-ésima y b-ésima y las columnas c-ésima y
d-ésima

A(a:b,:) Define la submatriz de A formada por todas las


columnas de A y por las filas que hay entre la a-ésima

25
MATLAB Orientado a la matemática aplicada

y la b-ésima

A(:,c:d) Define la submatriz de A formada por todas las filas


de A y por las columnas que hay entre la c-ésima y la
d-ésima

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


columnas de A y por las filas a, b, c, …

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


de A y por las columnas c,d e,…

A(:) Define un vector columna cuyos elementos son las


columnas de A situadas por orden una debajo de otra

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

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


Opciones para manipular matrices.

EJEMPLO: definimos la matriz de orden 8×8

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

9 2 7 5 4 5 8 9;

5 8 5 1 0 2 1 0;

1 3 5 0 3 6 7 7;

1 2 8 5 1 6 5 7;

2 2 3 7 7 7 9 8;

8 6 7 8 3 4 1 1;

2 4 7 1 5 1 4 4];

visualizamos los 4 bloques de la matriz

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

26
Andrés Pérez

B1 =

8 7 3 3

9 2 7 5

5 8 5 1

1 3 5 0

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

B2 =

5 1 2 1

4 5 8 9

0 2 1 0

3 6 7 7

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

B3 =

1 2 8 5

2 2 3 7

8 6 7 8

2 4 7 1

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

B4 =

1 6 5 7

7 7 9 8

3 4 1 1

5 1 4 4

27
MATLAB Orientado a la matemática aplicada

ahora recuperamos la matriz A por medio de sus bloques

>> [B1 B2;B3 B4]

ans =

8 7 3 3 5 1 2 1

9 2 7 5 4 5 8 9

5 8 5 1 0 2 1 0

1 3 5 0 3 6 7 7

1 2 8 5 1 6 5 7

2 2 3 7 7 7 9 8

8 6 7 8 3 4 1 1

2 4 7 1 5 1 4 4

GUARDANDO, BORRANDO Y LEYENDO


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

El fichero MATLAB.mat
Para guardar el estado de una 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.

Dicho estado puede recuperarse la siguiente vez que se arranque el programa


con el comando load, es decir, tipiando
>> load

28
Andrés Pérez

Esta es la forma básica de los comandos save y load.

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)

Un resumen de los comandos para manejar variables se cita a continuación:

SINTAXIS EXPLICACIÓN

clear Borra todas las variables del espacio de


trabajo

clear x y z Borra las variables numéricas x, y, z

load Lee todas las variables del fichero


MATLAB.mat

load nombre1 Lee todas las variables del fichero .mat


llamado nombre1

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


llamado nombre1

load nombre1 –mat Lee el fichero llamado nombre1 como .mat


sea cual sea su extensión

save Guarda las variables del espacio de trabajo


en el fichero binario MATLAB.mat en el

29
MATLAB Orientado a la matemática aplicada

directorio actual

save nombre1 Guarda las variables del espacio de trabajo en


el fichero .mat llamado nombre1 en el
directorio actual.

save nombre1 x y z Guarda las variables del espacio de trabajo x,


y, z en el fichero fichero.mat llamado
nombre1

who Lista las variables del workspace

whos Lista las variables del workspace con sus


tamaños y tipos

Comandos pata manejar variables

EJEMPLO:

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

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

>> save vectores A


>> save VECTORES B -ascii
>> load vectores

>> A

A=

1 2 3 4 5

>> load VECTORES

>> B

B=

6 7 8 9 10

30
Andrés Pérez

ÚLTIMAS ACLARACIONES PARA TRABAJAR EN MATLAB


Tips
• Para teclear un comando, el cursor debe estar situado después del símbolo “>>”, también denominado
prompt.
• Una vez que el comando se ha tecleado y se pulsa la tecla Enter, el comando es ejecutado. Sin
embargo, sólo se ejecuta el último comando. Todo lo ejecutado anteriormente permanece inalterado.
• Se puede teclear más de un comando en una sóla línea. Para ello sólo hay que poner una coma entre
comando y comando. Cuando se pulsa la tecla Enter, todos los comandos se ejecutan de izquierda a
derecha.
• No es posible ir hacia arriba, a una línea anterior, realizar una corrección y ejecutar de nuevo un
comando.
• Un comando anteriormente tecleado puede ser invocado de nuevo. Para ello solo hay que utilizar las
flechas arriba (↑ comando anterior) y abajo (↓ comando porterior) de los cursores para localizar el
comando deseado, visualizando en el prompt y hacer cuantas modificaciones sean necesarias antes de
ejecutarlo de nuevo pulsando la tecla Enter.
• Si un comando es demasiado grande y ocupa más de una línea, este se puede distribuir en un segunda
línea tecleando al final de la primera puntos suspensivos (…) y pulsando la tecla Enter. Seguidamente
se continúa la escritura del comando en la línea siguiente. Un comando de gran tamaño se podría
distribuir en más de una línea hasta un límite máximo de 4096 caracteres.

El punto y coma (;)


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

Si se teclean varios comandos en la misma 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.

Algunas reglas básicas de sintaxis


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

1. Las cadenas aparecen en color 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 𝑥𝑥 = 𝑟𝑟 𝑠𝑠𝑠𝑠𝑠𝑠(𝜃𝜃)

4. Defina los siguientes vectores


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

Respecto a los vectores anteriores, defina las siguientes matrices

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)’]

5. Defina las siguientes matrices

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

> Mayor que

< Menor que

>= Mayor o igual que

<= Menor o igual que

== Igual que

~= Distinto de

Operadores relacionales.

Mientras que para las operaciones lógicas tenemos

SINTAXIS EXPLICACIÓN

~A Negación lógica de A

A&B Conjunción lógica de A y B

A|B Disyunción lógica de A y B

xor(A,B) Disyunción lógica exclusiva de A y B

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.

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

>> A=[ 8 1 6

3 5 7

4 9 2];

>> if det(A)~=0

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

inv(A)

end

La matriz es invertible y su inversa es

ans =

0.1472 -0.1444 0.0639

-0.0611 0.0222 0.1056

-0.0194 0.1889 -0.1028

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

sentencias 3 Aquí se teclea el bloque Nº3 de sentencias, las cuales


se ejecutarán siempre que la condición3 sea cierta
else

sentencias 4 Aquí se teclea el bloque Nº4 de sentencias, las cuales se


ejecutarán siempre que las condiciones 1, 2, 3 sean falsas
end

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).

EJEMPLO: crearemos un matriz 3×3. Deseamos saber si es invertible o no, y en


caso afirmativo, visualizar su inversa

>> B =[1 2;

4 8];

>> if det(B)~=0

disp('La matriz es invertible')

inv(B)

else

disp('La matriz no es invertible')

end

La matriz no es invertible

37
MATLAB Orientado a la 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.

Comando for simple


El comando for repite un conjunto de sentencias un número predeterminado de veces. La
sintaxis es

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).

Una sintaxis muy típica es la siguiente

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.

EJEMPLO: calcularemos la suma de los primeros 100 números naturales

>> 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

sum = Ahora sí, visualizamos el último valor de la variable


sum, que almacena la suma 1+2+3…+100
5050

38
Andrés Pérez

Comando for con especificación de incremento


Esta es una forma más general de la sentencia for. La sintaxis más común es

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).

EJEMPLO: calcularemos la suma de los primeros 50 números pares.

>> sump=0;

>> for i=1:100

if rem(i,2)==0

sump=sump+i;

end

end

>> sump

sump =

2550

Anidamiento de comandos for


Consiste en un bucle dentro de otro. La sintaxis más común es

for i=1:m
for j=1:n
sentencias
end
end

en este caso, las sentencias se ejecután m×n veces.

39
MATLAB Orientado a la matemática aplicada

EJEMPLO: a continuación definiremos una matriz de orden 4x6 y calcularemos la


suma de sus coeficientes

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

9 2 10 5 9 1;

2 4 2 8 8 9;

9 6 10 2 10 9];

>> sum=0;

>> for i=1:4

for j=1:6

sum=sum+M(i,j);

end

end

>> sum

sum =

162

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

EJEMPLO: una consecuencia de la Propiedad Arquimediana es que dado un número


real 𝑎𝑎 > 0, existe un entero 𝑛𝑛 > 0 tal que 1�𝑛𝑛 < 𝑎𝑎. Elaboraremos un algoritmo que
encuentre un entero 𝑛𝑛 > tal que 1�𝑛𝑛 < 0,123456

>> a=0.123456;

>> n=1;

>> while 1/n>=a

n=n+1;

end

>> n

n=

Cabe destacar que en el anterior algoritmo, en principio, no se conocía de antemano la


cantidad de iteraciones a realizar, por lo cual no era viable emplear un comando for simple.
Esta es una de las ventajas del comando while.

41
MATLAB Orientado a la matemática aplicada

EJERCICIOS 2

1. Respecto a cada una de las siguientes matrices


2 6
� �
−4 0
3 0 6 1 4 2 3 ⁄4
−5 3 7
⁄ −2 4
� −1 4 3 � � 0 0 1� � − 1⁄9 0 −1 � � 3 7
0 −2

1 0 4 0
2 1 9 5⁄7 3 5 − 9⁄2 −1 −1 0

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


visualizar su determinante.

2. Calcule la suma de los números del 1 al 1000.

3. Calcule la suma de los números impares del 1 al 100.

4. Considere la siguiente sucesión infinita {𝑎𝑎𝑛𝑛 } , donde

𝑛𝑛
𝑎𝑎𝑛𝑛 = (−1)𝑛𝑛 , ∀ 𝑛𝑛 ∈ ℕ
2𝑛𝑛

a) Visualice los primeros 10 términos.


b) Calcule la suma de los primeros 111 términos.
c) Calcule la suma de los primeros 10001 términos.
d) Calcule la suma de los primeros 1000001 términos.

5. Defina la matriz 𝐴𝐴 = (𝑎𝑎𝑖𝑖𝑖𝑖 )4×4 , como


4⁄9 2 −4⁄3 −3 2 0
𝐴𝐴 = � −7 1 5 3⁄4 1 1⁄6 �
0 3 8 ⁄9 1 −2⁄3 2

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

6. Se desea saber cuál de los siguientes números es el máximo y cuál es el mínimo


5/3 1 6/9 77/4 3/5 7/2 9 5/6 7/6 9/8 33/2 5 4 3/2
Diseñe un algoritmo para resolver este problema.

7. Se desea saber cuáles de los siguiente números son primos


9929 902 9043 43568 8123 226968 32780 99991 98893 87491
Mediante un algoritmo, haga dicho estudio.

8. Considere la siguiente matriz


−4 9 1
� 8 1 4 �
0 5 −3

42
Andrés Pérez

Calcule la transpuesta de la misma.

9. Defina las siguientes matrices


5 3 1⁄2 1 −6 5 −8
𝐴𝐴 = � � , 𝐵𝐵 = � 0 7 −9 3 �
−1 8 9 2 7⁄3 1 0

Mediante un algoritmo, calcule 𝐶𝐶 = 𝐴𝐴𝐴𝐴. Recuerde que la matriz 𝐶𝐶 viene dada por 𝐶𝐶 =
(𝑐𝑐𝑖𝑖𝑖𝑖 )2×4
donde
3

𝑐𝑐𝑖𝑖𝑖𝑖 = � 𝑎𝑎1𝑘𝑘 𝑏𝑏𝑘𝑘𝑘𝑘 ; 𝑖𝑖 = 1, 2 ; 𝑗𝑗 = 1, 2,3, 4


𝑘𝑘=1

10. Considere la matriz 𝐵𝐵 = (𝑎𝑎𝑖𝑖𝑖𝑖 )4×4 , dada como


−2 5 ⁄8 7 1
3 0 0 −2
𝐵𝐵 = � 8 −3 �
−9⁄2 1
0 6 1 1⁄3
Calcule

4 4

� � 𝐵𝐵(𝑖𝑖, 𝑗𝑗)
𝑖𝑖=1 𝑗𝑗=1

11. A continuación damos una lista de funciones no acotadas y un número positivo 𝜖𝜖


a) 𝑓𝑓(𝑥𝑥) = 𝑥𝑥 2 , 𝜖𝜖 = 52
b) 𝑓𝑓(𝑥𝑥) = 1⁄𝑥𝑥, 𝜖𝜖 = 365
c) 𝑓𝑓(𝑥𝑥) = 𝐿𝐿𝐿𝐿𝐿𝐿 𝑥𝑥, 𝜖𝜖 = 27
d) 𝑓𝑓(𝑥𝑥) = 𝑡𝑡𝑡𝑡𝑡𝑡(𝑥𝑥), 𝜖𝜖 = 100
e) 𝑓𝑓(𝑥𝑥) = −𝑠𝑠𝑠𝑠𝑠𝑠ℎ (𝑥𝑥), 𝜖𝜖 = 432

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

Halle la raíz entera positiva de cada polinomio.

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.

PROBLEMA 1: consideremos las siguientes matrices

−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

Para cada una de ellas queremos un informe que nos muestre

• La suma de los coeficientes


• El producto de los coeficientes

El código (o algoritmo) para obtener el informe de la primera matriz es

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

>> SUM=0;

>> PROD=1;

>> for i=1:3

for j=1:3

SUM=SUM+A(i,j);

PROD=PROD*A(i,j);

end

end

>> SUM

SUM =

>> 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.

Afortunadamente MATLAB nos ofrece la forma de simplificar este trabajo, implementando un


subprograma en un M-Fichero, el cual realice el estudio de cada matriz cada vez que se lo
indiquemos en la ventana de comandos (programa principal). A continuación definiremos un
fichero script para resolver el problema 1. Más adelante plantearemos otro problema para
resolverlo mediante un fichero de función.

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

Paso 1: acceder al editor


En el menú File, se selecciona New y luego M-File. Seguidamente se mostrará el editor

en el cual definiremos nuestro fichero script.

46
Andrés Pérez

Paso 2: estructurar el fichero


A continuación escribimos en el editor

%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

Paso 3: guardar el fichero


Todo fichero debe ser almacenado en disco antes de utilizarse. Esto se hace utilizando la
opción Save as del menú File, seleccionando el lugar donde se guardará y proporcionando el
nombre del fichero en cuestión.

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

47
MATLAB Orientado a la matemática aplicada

Paso 4: ejecutar el fichero


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

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

PROBLEMA 1 (continuación): para obtener el informe de la primera matriz


mediante el fichero infomatriz tipiamos

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

>> infomatriz

SUM =

PROD =

12096

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

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

>> infomatriz

SUM =

27.5000

PROD =

-238140

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

>> infomatriz

SUM =

-2.5417

PROD =

-3969

48
Andrés Pérez

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

>> infomatriz

SUM =

-2

PROD =

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

>> infomatriz

SUM =

-4.4583

PROD =

1260

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

>> infomatriz

SUM =

10

PROD =

42336

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.

¿Realmente que es un fichero script?


Hasta ahora los comandos en MATLAB que hemos visto se ejecutan en la ventana de
comandos. Sin embargo, la utilización de la ventana de comandos se restringe generalmente a
la ejecución de un número pequeño de sentencias. En caso contrario, cuando el número de

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.

El problema proviene, básicamente, de que la ventana de comandos no es suficientemente


interactiva, los comando no pueden ser guardados y ejecutados de nuevo a petición del
usuario. Esto implica que cada vez que se pulsa la tecla Enter sólo se ejecuta el último
comando, y todo lo anterior permanece inalterable. Si se necesita realizar alguna corrección o
cambio sobre alguno de esos comandos previamente ejecutados, será necesario volver a
escribirlos y ejecutarlos de nuevo de uno en uno.

Otra forma diferente de ejecutar comandos en MATLAB es crear un fichero script con las
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.

A continuación modificaremos el problema 1 y lo resolveremos.

PROBLEMA 2: consideremos las siguientes matrices

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

Para cada una de ellas queremos un informe que nos muestre

• La suma de los coeficientes


• El producto de los coeficientes

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 ;

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

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:

Paso 1: acceder al editor


Recuérdese que en el menú File, se selecciona New y luego M-File. Seguidamente se mostrará
el editor.

Paso 2: estructurar el fichero


A continuación escribimos en el editor

51
MATLAB Orientado a la matemática aplicada

Línea de definición: esta línea indica el nombre del


function[SUM,PROD]=estudiomatriz(A,m,n) fichero y los argumentos de entrada y salida

Línea H1: esta línea de comentario contiene el


%ESTE SUBPROGRAMA ESTUDIA UNA MATRIZ
nombre y una descripción corta del fichero
%ARGUMENTOS DE ENTRADA:
%A: matriz a estudiar
%m: numero de filas Líneas de texto de ayuda: estas nos ofrecen
%n: numero de columnas información sobre cuáles son los argumentos de
%ARGUMENTOS DE SALIDA: entrada y salida del fichero
%SUM: suma de los coeficientes de A
%PROD: producto de los coeficientes de A

SUM=0;
PROD=1;

for i=1:m
for j=1:n 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

NOTA: la forma general que tiene la línea de definición es

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.

Paso 3: guardar el fichero


El procedimiento es el mismo en caso del fichero script. A nuestro fichero de función le
llamamos estudiomatriz, y quedó de esta forma

Paso 4: ejecutar el fichero

PROBLEMA 2 (continuación): tipiamos

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

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

SUM =

PROD =

53
MATLAB Orientado a la matemática aplicada

PROD =

21

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

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

SUM =

51

PROD =

¿Realmente que es un fichero de función?


Sabemos que una función matemática y=f(x) asocial un número f(x) (variable dependiente) a
cada número x (variable independiente). Cuando se introduce un valor x (entrada) en la
expresión de la función, se obtiene un valor y (salida).

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).

Frecuentemente, a la hora de programar, existe la necesidad de operar con funciones distintas


que no están predefinidas (como el caso de obtener estudiar las matrices del problema 2).
Este problema se puede resolver creando un M-Fichero que sirva como una función. Tal M-
Fichero recibe el nombre de fichero de función. En forma esquemática, este tipo de fichero se
comporta de la siguiente forma

ENTRADA Fichero de función SALIDA

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

EJEMPLO: si queremos consultar que hace el fichero infomatriz tipiamos

> >> help infomatriz

ESTE SUBPROGRAMA CALCULA DE UNA MATRIZ 3X3:

1)la suma de sus coeficientes

2)el producto de sus coeficientes

similarmente para el fichero estudiomatriz

>> help estudiomatriz

ESTE SUBPROGRAMA ESTUDIA UNA MATRIZ

ARGUMENTOS DE ENTRADA:

A: matriz a estudiar

m: numero de filas

n: numero de columnas

ARGUMENTOS DE SALIDA:

SUM: suma de los coeficientes de A

PROD: producto de los coeficientes de A

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

COMPARATIVA ENTRE UN FICHERO SCRIPT Y UN


FICHERO DE FUNCIÓN
Algunas similitudes y diferencias son las siguientes:

• Ambos son archivos con extensión .m (por tal razón reciben el nombre de M-Ficheros).

• En un fichero script no es obligatorio indicar los argumentos de entrada y salida. En


cambio en un fichero de función si es necesario, y precisamente se hace en la línea de
definición.

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.

• Cualquier variable que se cree en un script, permanecerá en el espacio de trabajo. En


un fichero de función solamente las variables definidas como argumentos de salida,
permanecerán en el espacio de trabajo.

• 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.

• Al momento de usar un fichero de función hay libertad de nombrar los argumentos de


entrada y de salida (nótese que cuando empleamos el fichero estudiomatriz en la
tercera matriz no le dimos nombre a esta última como A, simplemente la escribimos
directamente como argumento de entrada). En cambio, el uso de un fichero script nos
obliga nombrar los argumentos de entrada de acuerdo a como serán usados en el
script (por cierto que estos aspectos son implícitos).

56
Andrés Pérez

EJERCICIOS 3

1. Considere la siguientes matrices

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

Defina un fichero script para ello

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

Para ello defina un fichero scritp.

3. El siguiente código de fichero de función calcula el máximo común divisor de dos


enteros no simultáneamente nulos

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];

n=length(r); %cantidad de terminos actual

while r(n)~=0

x=r(n-1); %penultimo termino

57
MATLAB Orientado a la matemática aplicada

y=r(n); %ultimo termino


z=rem(x,y); %nuevo termino

r=[r, z]; %agrandar el vector columna

n=length(r); %cantidad de terminos actual

end

mcd=r(n-1);

Calcule el máximo común divisor de los siguientes números


a) 43 y 65
b) 115 y 20
c) 40 y 90
d) 76 y 140

4. El siguiente código calcula el elemento mínimo de un vector

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

Calcule el elemento mínimo de los siguientes vectores


a) v=[ 8 9 2 9 7 2
6 10]4
b) w=[ 8 10 7 1 9 9 7 8 8 5 7]
c) x=[ 3 7 1 3 1 2 8 7 4 10 1]
d) y=[ 2 3 9 3 8 3 9 4 3 3 7 5 4]
e) z=[ 8 1 6 9 4 8 8 4 6 2 1 6 8 9 2 6]

5. Defina un fichero de función para calcular el elemento máximo de los vectores del
ejercicio 4.

58
Andrés Pérez

6. El siguiente código calcula la posición mínima en un vector que ocupa el elemento


mínimo del vector
function[k_min]=pos_min(x)
%ESTE SUBPROGRAMA CALCULA LA POSICION MINIMA QUE OCUPA EL MINIMO
DE X EN EL %VECTOR X
%ARGUMENTOS DE ENTRADA:
%x: vector a estudiar
%ARGUMENTOS DE SALIDA:
%k_min: posicion minima que ocupa el minimo de x en el vector x

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.

7. El siguiente código ordena un vector en forma creciente


function[ord_cre]=creciente(x)
%ESTE SUBPROGRAMA ORDENA UN VECTOR DE MAS DE UN ELEMENTO
%EN FORMA CRECIENTE
%ARGUMENTOS DE ENTRADA:
%x: vector
%ARGUMENTOS DE SALIDA:
%ord_cre: ordenacion de x en forma creciente

n=length(x);

ord_cre=[min(x), zeros(1,n-1)]; %vector de n componentes

for i=2:n

m=length(x); %longitud actual del vector x

[k_min]=pos_min(x);
k=k_min;

if k==1 %el minimo ocurre el en el extremo izquierdo

59
MATLAB Orientado a la matemática aplicada

x=[x(k+1:m)];

elseif 1<k & k<m %el minimo ocurre en el interior

x=[x(1:k-1), x(k+1:m)];

else %el minimo ocurre en el extremo derecho

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

CAPITULO 4. CÁLCULO SIMBÓLICO

Cuando hablamos de cálculo simbólico, nos referimos a cómputos como solución de


ecuaciones; cálculos de límites, derivadas, integrales, y ese tipo de operaciones en los cuales se
involucran variables. MATLAB dispone de una gran variedad de comandos que facilitan estos
cálculos, pero antes de utilizarlos, se debe colocar la entrada

>>syms x y z

con lo cual se indica que x, y, z son variables simbólicas.

FUNCIONES
Simbólicamente se pueden crear funciones de una o más variables y evaluarlas en cualquier
expresión.

EJEMPLO: dada la función

𝑓𝑓(𝑥𝑥) = 𝑥𝑥 3 − 3

calcular 𝑓𝑓(0) y 𝑓𝑓(4)

Esta es la manera de indicar que f


>> syms x f
está definida como
>> f='x^3-3'
𝑓𝑓(𝑥𝑥) = 𝑥𝑥 3 − 3
f=
Para este fin siempre debe utilizarse
x^3-3 comillas.

>> subs(f,x,0)

ans =

-3

>> subs(f,x,4)

ans =

61

61
MATLAB Orientado a la matemática aplicada

También se pueden hacer sustituciones múltiples en el caso de funciones simbólicas de varias


variables. Para ello, se usa la sintaxis

>> 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,…

EJEMPLO: dada la función

𝑥𝑥 3 + 𝑦𝑦
𝑓𝑓(𝑥𝑥, 𝑦𝑦) =
𝑥𝑥 4 − 𝑦𝑦 2

calcular 𝑓𝑓(0,1), 𝑓𝑓(1, −2) y 𝑓𝑓(3,3)

>> 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

A veces, necesitamos evaluar expresiones simbólicas dentro de otras expresiones simbólicas.

62
Andrés Pérez

EJEMPLO: verificar que 𝑎𝑎 y 𝑏𝑏 son las raíces del polinomio

𝑥𝑥 2 − 𝑏𝑏𝑏𝑏 − 𝑎𝑎𝑎𝑎 + 𝑏𝑏𝑏𝑏

>> 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 =

También es posible evaluar una función f en un vector v. La sintaxis sería

>>subs(f,x,v)

en este caso el resultado es un vector de igual longitud que v.

ECUACIONES

Para ello se emplea el comando

>>solve(‘E’,x).

donde E denota la ecuación y x la variable.

63
MATLAB Orientado a la matemática aplicada

EJEMPLO: vamos a resolver la ecuación

2𝑥𝑥 + 1 = 9

tecleamos

>> syms x

>> solve('2*x+1=9',x)

ans =

lo cual nos indica que la solución es 𝑥𝑥 = 4.

También se pueden resolver ecuaciones cuadráticas.

EJEMPLO: para hallar las raíces del polinomio

−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)

donde 1/6-1/6*37^(1/2) y 1/6+1/6*37^(1/2) son las raíces del polinomio.

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.

Un comando muy útil para visualizar correctamente soluciones en el cálculo simbólico es

>>pretty(expresion)

EJEMPLO: si queremos una mejor visualización de las soluciones del ejemplo


anterior tecleamos

>> pretty(solve('a*x^2+b*x+c=0',x))

y MATLAB muestra

soluciones que son exactamente la que nos da la resolvente

−𝑏𝑏 ± √𝑏𝑏 2 − 4𝑎𝑎𝑎𝑎


𝑥𝑥 =
2𝑎𝑎

65
MATLAB Orientado a la matemática aplicada

LÍMITES
El comando afín es

>>limit(f,x,a)

donde f es la expresión, x es la variable, y a es el parámetro.

EJEMPLO: calcular

4𝑥𝑥 2 − 9
lim3
𝑥𝑥→− 2𝑥𝑥 − 3
2

>> syms x

>> limit((4*x^2-9)/(2*x-3),-3/2)

ans =

Así, el límite buscado es 0.

También se pueden calcular límites laterales

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)

donde f es la expresión y x es la variable.

EJEMPLO: derivar la siguiente función


−𝑥𝑥
𝑓𝑓(𝑥𝑥) =
(𝑥𝑥 − 1)2

>> diff(-x/(1-x)^2,x)

ans =

-1/(1-x)^2-2*x/(1-x)^3

También podemos calcular derivadas parciales de funciones de varias variables

EJEMPLO: calcule las derivadas parciales de la siguiente función


𝑦𝑦 − 𝑥𝑥
𝑔𝑔(𝑥𝑥, 𝑦𝑦) =
(𝑥𝑥 − 𝑦𝑦 2 )3

>> syms g x y

>> g='(y-x)/(x-y^2)^3';

>> diff(g,x) %derivada parcial respecto a x

ans =

-1/(x-y^2)^3-3*(y-x)/(x-y^2)^4

>> diff(g,y) %derivada parcial respecto a y

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)

donde f es la expresión y x es la variable.

EJEMPLO: integrar

𝑥𝑥 + 1
𝑓𝑓(𝑥𝑥) =
𝑥𝑥 3 − 7𝑥𝑥 2 + 14𝑥𝑥 − 8

>>syms x

>>pretty(int((x+1)/(x^3-7*x^2+14*x-8),x))

MATLAB también calcula integrales definidas

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

A continuación damos un compendio de comandos afines al cálculo simbólico

COMANDO UTILIDAD

subs(f,x,a) Sustituye x por a en la función f

subs(f,{x,y,z,…},{a,b,c,…}) Sustituye x, y, z,… por a, b,


c,…respectivamente en la función f

solve(e,x) Resuelve una ecuación e en la variable x

solve(e1,e2,...,en) Resuelve varias ecuaciones de varias


variables

limit(f,x,a) Calcula el límite de la función f cuando x


“tiende a” a

lim 𝑓𝑓
𝑥𝑥→𝑎𝑎

limit(x,a,’left’) Calcula el límite de la función f cuando x


“tiende a” a por la izquierda

lim 𝑓𝑓
𝑥𝑥→𝑎𝑎 −

limit(x,a,’right’) Calcula el límite de la función f cuando x


“tiende a” a por la derecha

lim 𝑓𝑓
𝑥𝑥→𝑎𝑎 +

diff(f,x) Deriva la función f en la variable x


𝑓𝑓′(𝑥𝑥)

Notar que f puede ser una función de


dos variables: x, y. En tal caso la
derivada corresponde a la derivada
parcial de f respecto a x

𝑓𝑓𝑥𝑥 (𝑥𝑥, 𝑦𝑦)

diff(f,x,n) Deriva de orden n de la función f en la


variable x
𝑓𝑓 (𝑛𝑛) (𝑥𝑥)

En este caso n debe ser un entero


positivo

69
MATLAB Orientado a la matemática aplicada

int(f,x) Calcula la integra indefinida de la


función f respecto a la variable x

� 𝑓𝑓(𝑥𝑥)𝑑𝑑𝑑𝑑

int(f,x,a,b) Calcula la integra definida de la función


f respecto a la variable x, de a hasta b
𝑏𝑏
� 𝑓𝑓(𝑥𝑥)𝑑𝑑𝑑𝑑
𝑎𝑎

Comandos para el cálculo simbólico.

70
Andrés Pérez

EJERCICIOS 4

1. Defina la siguiente función


3
𝑥𝑥 − √𝑥𝑥
𝑓𝑓(𝑥𝑥) = 2
2𝑥𝑥 + 3
Calcule
a) 𝑓𝑓(0)
b) 𝑓𝑓(2)
c) 𝑓𝑓(−3)
d) 𝑓𝑓(5.1)
e) 𝑓𝑓�√2�
f) 𝑓𝑓(𝑏𝑏 − 𝑎𝑎)

2. Considere los siguientes polinomios


𝑎𝑎𝑥𝑥 2 + 𝑏𝑏𝑏𝑏 + 𝑐𝑐
𝑎𝑎𝑥𝑥 2 + 𝑏𝑏𝑏𝑏
𝑎𝑎𝑥𝑥 2 + 𝑐𝑐
𝑎𝑎𝑥𝑥 2
a) Calcule las raíces del primero y guárdelas en una variable de nombre PRIM
b) Calcule las raíces del segundo y guárdelas en una variable de nombre SEG
c) Calcule las raíces del tercero y guárdelas en una variable de nombre TERC
d) Calcule las raíces del cuarto y guárdelas en una variable de nombre CUAR
e) Verifique que las raíces del segundo son un caso particular del primero (haga
𝑐𝑐 = 0 en PRIM y compare con SEG)
f) Verifique que las raíces del tercero son un caso particular del primero (haga
𝑏𝑏 = 0 en PRIM y compare con TERC)
g) Verifique que las raíces del cuarto son un caso particular del primero, del
segundo y del tercero (haga 𝑏𝑏 = 0 y 𝑐𝑐 = 0 en PRIM y compare con CUAR,
luego haga 𝑏𝑏 = 0 en SEG y compare con CUAR, finalmente haga 𝑐𝑐 = 0 en TER
y compare con CUAR)

3. Resuelva las ecuaciones


1
a) 𝑥𝑥 + 1 = 3𝑥𝑥 −
2

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(𝑥𝑥)

4. Resuelva los siguientes sistemas de ecuaciones


2𝑥𝑥 + 3𝑦𝑦 = 13
a) �
4𝑥𝑥 − 𝑦𝑦 = 5
3𝑥𝑥
− 𝑦𝑦 = 9
2
b) � 𝑦𝑦
𝑥𝑥 + = 7
2
𝑎𝑎 𝑥𝑥 + 𝑏𝑏1 𝑦𝑦 = 𝑐𝑐1
c) � 1
𝑎𝑎2 𝑥𝑥 + 𝑏𝑏2 𝑦𝑦 = 𝑐𝑐2
𝑥𝑥 + 4𝑦𝑦 − 𝑧𝑧 = 6
d) �2𝑥𝑥 + 5𝑦𝑦 − 7𝑧𝑧 = −9
3𝑥𝑥 − 2𝑦𝑦 + 𝑧𝑧 = 2

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 𝑥𝑥→−∞

4𝑥𝑥 2 − 9 ñ) lim− log(𝑥𝑥)


𝑒𝑒) lim3 𝑥𝑥→0
𝑥𝑥→− 2𝑥𝑥 − 3
2
√9 − 𝑥𝑥 2
𝑥𝑥 3 − 𝑎𝑎3 𝑜𝑜) lim
𝑥𝑥→3 𝑥𝑥 − 3
𝑓𝑓) lim
𝑥𝑥→𝑎𝑎 𝑥𝑥 2 − 𝑎𝑎𝑎𝑎 − 𝑥𝑥 + 𝑎𝑎
𝑥𝑥√𝑥𝑥 − 𝑎𝑎 √𝑎𝑎
𝑝𝑝) lim+
√𝑎𝑎𝑎𝑎 + 𝑏𝑏 − √𝑏𝑏𝑏𝑏 + 𝑎𝑎 𝑥𝑥→𝑎𝑎 3
√𝑥𝑥 − √𝑎𝑎
3
𝑔𝑔) lim
𝑥𝑥→1 √𝑐𝑐𝑐𝑐 + 𝑑𝑑 − √𝑑𝑑𝑑𝑑 + 𝑐𝑐 1 1
𝑛𝑛 𝑞𝑞) lim− −
√𝑥𝑥 − 1 𝑥𝑥→0 𝑥𝑥 |𝑥𝑥|
ℎ) lim 𝑚𝑚
𝑥𝑥→1 √𝑥𝑥 − 1 𝑥𝑥 − 4
𝑟𝑟) lim+
𝑠𝑠𝑠𝑠𝑠𝑠(𝑥𝑥) 𝑥𝑥→4 |𝑥𝑥 − 4|
𝑖𝑖) lim
𝑥𝑥→0 𝑥𝑥

72
MATLAB Orientado a la matemática aplicada

6. Derive las siguientes funciones


a) 𝑓𝑓(𝑥𝑥) = 3𝑥𝑥 + 5
b) 𝑔𝑔(𝑥𝑥) = −4𝑥𝑥 3 + 2𝑥𝑥
3𝑥𝑥−𝑥𝑥 2
c) ℎ(𝑥𝑥) = 𝑥𝑥−7

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) ∫−𝜋𝜋 𝑠𝑠𝑠𝑠𝑠𝑠(𝑥𝑥)+𝑐𝑐𝑐𝑐𝑐𝑐(𝑥𝑥)

10. Asumiendo que la siguiente matriz es invertible


𝑎𝑎 𝑏𝑏
𝑀𝑀 = � �
𝑐𝑐 𝑑𝑑
calcule 𝑀𝑀−1

11. Asumiendo que la siguiente matriz es invertible


𝑎𝑎 𝑏𝑏 𝑐𝑐
𝑁𝑁 = � 𝑑𝑑 𝑒𝑒 𝑓𝑓 �
𝑔𝑔 ℎ 𝑖𝑖
calcule 𝑁𝑁 −1

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

• ℎ(𝑥𝑥) = 𝐿𝐿𝐿𝐿(1 + 𝑥𝑥), 𝑛𝑛 = 6

• 𝑘𝑘(𝑥𝑥) = 𝑠𝑠𝑠𝑠𝑠𝑠(𝑥𝑥), 𝑛𝑛 = 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.

A continuación estudiaremos como crear gráficos en el plano y en el espacio.

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.

EJEMPLO: graficar la función

𝑓𝑓(𝑥𝑥) = cos(𝑥𝑥)

en el intervalo [-2,2]

Definimos el vector [-2,2] que es


>> x=-2:0.1:2; el dominio de la función f

>> y=cos(x); Calculamos el valor de y en


cada punto del vector [-2,2]

>> plot(x,y) Finalmente creamos el gráfico

MATLAB genera la siguiente figura

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).

EJEMPLO: graficar la funció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

Graficando curvas paramétricas en el plano


Consideremos la función paramétrica

𝑟𝑟(𝑡𝑡) = 〈𝑓𝑓(𝑡𝑡), 𝑔𝑔(𝑡𝑡)〉

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).

3. Representar el gráfico. Para ello se emplea el comando


>>plot(x,y)

77
MATLAB Orientado a la matemática aplicada

EJEMPLO: visualizar el gráfico de la circunferencia unitaria centrada en el


origen, sabiendo que una parametrización de la misma es

𝑟𝑟(𝑡𝑡) = 〈𝑐𝑐𝑐𝑐𝑐𝑐(𝑡𝑡), 𝑠𝑠𝑠𝑠𝑠𝑠(𝑡𝑡)〉, 0 ≤ 𝑡𝑡 ≤ 2𝜋𝜋

t=0:0.1:2*pi
Definimos el vector [0,7π],
que es el domino de la
función r
x=cos(t);

y=sin(t); Definimos las funciones


componente de r

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.

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


Para representar funciones que tiene la formaz=f(x,y) (donde x,y son las variables
independientes y la variable dependiente es z) se utilizan los gráficos de malla y superficie en
3D. Los gráficos de malla y superficie se generan siguiendo tres pasos:

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]

donde i representa el incremente y seguidamente se utiliza el comando

>>[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.

2. Calcular el valor de z en cada punto de la rejilla (esto es, representar simbólicamente la


función). En este caso, como en el bidimensional, si la expresión simbólica de la
función involucra una potenciación (o división), debe colocarse un punto antes del
operador potencia (o división).

3. Representar el grafico. Para ello se tienen dos comandos alternativos:

• para crear un gráfico de malla:


>>mesh(x,y)

• para crear un gráfico de superficie:


>>surf(x,y)

A continuación mostraremos los distintos modelos de gráficos de malla y de superficie, para


representar la función

cos((𝑥𝑥 2 + 𝑦𝑦 2 )⁄4)
𝑓𝑓(𝑥𝑥, 𝑦𝑦) =
𝑥𝑥 2 + 𝑦𝑦 2 + 3

en el rectángulo [-5,5]×[-5,5]

79
MATLAB Orientado a la matemática aplicada

EJEMPLO: visualizar el gráfico de malla de la función f

>> 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)

Otras configuraciones para hacer un gráfico de malla son:

• meshz(x,y,z) (gráfico de malla con cortina)


• meshc(x,y,z) (gráfico de malla con contorno)

Ahora vamos con la otra modalidad.

80
Andrés Pérez

EJEMPLO: visualizar el gráfico de superficie de la función f

>> 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)

EL gráfico de malla también ofrece otras configuraciones:

• surfc(x,y,z) (gráfico de superficie con contorno)


• surfl(x,y,z) (gráfico de superficie con alumbrado)

81
MATLAB Orientado a la matemática aplicada

Graficando curvas paramétricas en el espacio


Consideremos la función paramétrica

𝑟𝑟(𝑡𝑡) = 〈𝑓𝑓(𝑡𝑡), 𝑔𝑔(𝑡𝑡), ℎ(𝑡𝑡)〉

Donde t es la variable independiente (o parámetro) y las funciones componente de r son


x=f(t), y=g(t), z=h(t) (estas últimas son funciones de valor real en la variable t). Para crear el
gráfico de la curva paramétrica 3D 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.


Con esto se define el intervalo [a,b] del eje X, la cual corresponde al dominio de la
función r.

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).

3. Representar el grafico. Para ello se emplea el comando

>>plot3(x,y,z)

EJEMPLO: graficar la curva paramétrica en 3D que define la siguiente función

𝑟𝑟(𝑡𝑡) = 〈𝑐𝑐𝑐𝑐𝑐𝑐(𝑡𝑡), 𝑠𝑠𝑠𝑠𝑠𝑠(𝑡𝑡), 𝑡𝑡〉

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

1. Grafique la siguiente función


𝑓𝑓(𝑥𝑥) = 𝑥𝑥 3 − 𝑥𝑥
en el intervalo [−2,2]

2. Grafique la siguiente función


𝑥𝑥
𝑔𝑔(𝑥𝑥) =
𝑥𝑥 + 1
en el intervalo [−3,2]

3. Considere las siguientes funciones

a) 𝑦𝑦 = 𝑥𝑥 4 − 𝑥𝑥 2 [−2,3]
𝑥𝑥+3
b) 𝑦𝑦 = [−3,3]
𝑥𝑥

𝑒𝑒 𝑥𝑥 +𝑒𝑒 −𝑥𝑥
c) 𝑦𝑦 = [−1,2]
𝑒𝑒 𝑥𝑥 −𝑒𝑒 −𝑥𝑥

d) 𝑦𝑦 = 𝑥𝑥𝑥𝑥𝑥𝑥(𝑥𝑥 + 2)[−4,2]

e) 𝑦𝑦 = 𝑠𝑠𝑠𝑠𝑠𝑠(𝑥𝑥) + 𝑠𝑠𝑠𝑠𝑠𝑠 3 (𝑥𝑥)[−2𝜋𝜋, 2𝜋𝜋]

Se desea visualizar la gráfica de las anteriores funciones en los intervalos indicados.

4. Visualice el gráfico de la circunferencia de radio 2 centrada en el origen Sugerencia:


utilice la parametrización
𝑟𝑟(𝑡𝑡) = 〈2𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐(𝑥𝑥), 2𝑠𝑠𝑒𝑒𝑒𝑒(𝑡𝑡)〉, 0 ≤ 𝑡𝑡 ≤ 2𝜋𝜋

5. Visualice la gráfica de la hipérbola 𝑥𝑥 2 − 𝑦𝑦 2 = 1. Sugerencia: utilize la parametrización


𝑟𝑟(𝑡𝑡) = 〈𝑐𝑐𝑐𝑐𝑐𝑐ℎ𝑡𝑡(𝑥𝑥), 𝑠𝑠𝑠𝑠𝑠𝑠ℎ(𝑡𝑡)〉,

6. Considere las siguientes funciones paramétricas

a) 𝑟𝑟(𝑡𝑡) = 〈4 cos(𝑡𝑡) , 3𝑠𝑠𝑠𝑠𝑠𝑠(𝑡𝑡)〉, 0 ≤ 𝑡𝑡 ≤ 2𝜋𝜋

b) 𝑟𝑟(𝑡𝑡) = 〈𝑡𝑡 − 𝑠𝑠𝑠𝑠𝑠𝑠(𝑡𝑡), 1 − cos(𝑡𝑡)〉 , − 𝜋𝜋 ≤ 𝑡𝑡 ≤ 𝜋𝜋

c) 𝑟𝑟(𝑡𝑡) = 〈𝑡𝑡 − 𝑠𝑠𝑠𝑠𝑠𝑠(𝑡𝑡), 1 − cos(𝑡𝑡)〉, 0 ≤ 𝑡𝑡 ≤ 𝜋𝜋

d) 𝑟𝑟(𝑡𝑡) = 〈−𝑐𝑐𝑐𝑐𝑐𝑐(𝑡𝑡) + 2 cos(−𝑡𝑡⁄2) , −𝑠𝑠𝑠𝑠𝑠𝑠(𝑡𝑡) + 2𝑠𝑠𝑠𝑠𝑠𝑠(−𝑡𝑡⁄2)〉, 0 ≤ 𝑡𝑡 ≤ 2𝜋𝜋

e) 𝑟𝑟(𝑡𝑡) = 〈𝑐𝑐𝑐𝑐𝑐𝑐 3 (𝑡𝑡), 𝑠𝑠𝑠𝑠𝑠𝑠3 (𝑡𝑡)〉, 0 ≤ 𝑡𝑡 ≤ 𝜋𝜋

f) 𝑟𝑟(𝑡𝑡) = 〈𝑡𝑡 − tanh(𝑡𝑡) , sech(𝑡𝑡)〉 , − 𝜋𝜋 ≤ 𝑡𝑡 ≤ 𝜋𝜋

84
Andrés Pérez

Visualice la gráfica de las curvas paramétricas asociadas.

7. Grafique la función
3 −𝑦𝑦 3
𝑓𝑓(𝑥𝑥, 𝑦𝑦) = −𝑥𝑥𝑥𝑥𝑒𝑒 −𝑥𝑥

En el rectángulo [−2,2] × [−2,2]

8. Grafique la function
−3𝑦𝑦
𝑔𝑔(𝑥𝑥, 𝑦𝑦) = 𝑥𝑥 2 − 𝑦𝑦 2
𝑥𝑥 2 + 𝑦𝑦 2 + 1
En el rectángulo [−3,3] × [−3,3]

9. Obtenga el gráfico de las siguientes funciones en los rectángulos indicados

a) 𝑧𝑧 = 𝑥𝑥 2 + 𝑦𝑦 2 , [−2,2] × [−2,2]

b) 𝑧𝑧 = 𝑥𝑥 2 − 𝑦𝑦 2 , [−3,2] × [−3,2]

c) 𝑧𝑧 = 𝑠𝑠𝑠𝑠𝑠𝑠(𝑥𝑥) + 𝑠𝑠𝑠𝑠𝑠𝑠(𝑦𝑦), [−2𝜋𝜋, 2𝜋𝜋] × [−2𝜋𝜋, 2𝜋𝜋]

𝑠𝑠𝑠𝑠𝑠𝑠(𝑥𝑥)𝑠𝑠𝑠𝑠𝑠𝑠(𝑦𝑦)
d) 𝑧𝑧 = [−3,3] × [−3,3]
𝑥𝑥𝑥𝑥

10. La curva que induce la función


𝑟𝑟(𝑡𝑡) = 〈cos(𝑡𝑡) , 𝑠𝑠𝑠𝑠𝑠𝑠(𝑡𝑡), 𝑡𝑡〉
Se llama hélice. Bosqueje su gráfico para 2 ≤ 𝑡𝑡 ≤ 60.

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

12. Las siguientes funciones definen curvas paramétricas

a) 𝑟𝑟(𝑡𝑡) = 〈𝑡𝑡, 𝑡𝑡 2 , 𝑡𝑡 3 〉

b) 𝑟𝑟(𝑡𝑡) = 〈cos(𝑡𝑡), 𝑠𝑠𝑠𝑠𝑠𝑠(𝑡𝑡)cos(2𝑡𝑡), 〉

c) 𝑟𝑟(𝑡𝑡) = 〈𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡(𝑡𝑡), 𝑡𝑡𝑡𝑡𝑡𝑡𝑡𝑡[(𝑡𝑡)𝑡𝑡, 〉

d) 𝑟𝑟(𝑡𝑡) = 〈2𝑠𝑠𝑠𝑠𝑠𝑠(𝑡𝑡), 2𝑠𝑠𝑠𝑠𝑠𝑠(𝑡𝑡), √8𝑐𝑐𝑐𝑐𝑐𝑐𝑐𝑐)〉

e) 𝑟𝑟(𝑡𝑡) = 〈𝑠𝑠𝑠𝑠𝑠𝑠(2𝑡𝑡),2𝑠𝑠𝑠𝑠𝑠𝑠2 (𝑡𝑡) ,2cos(𝑡𝑡)〉

Obtenga la gráfica de dichas curvas para −3𝜋𝜋 ≤ 𝑡𝑡 ≤ 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)

donde a es un vector o una matriz.

• Si a es un vector, se calcula la media de los valores


• Si a es una matriz, se calcula la media de cada columna

EJEMPLO:

>> a =[8 9 2 9 7 2 4];

>> 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 =

8.6667 7.3333 5.0000 7.3333 6.0000 8.3333

86
Andrés Pérez

Otra sintaxis del comando mean es

>>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 =

6.6667 2.6667 7.3333 4.0000 1.6667

>> 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)

donde a y dim se comportan de la misma forma que en comando mean

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)

donde a y dim se comportan de la misma forma que en comando mean

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

• a funciona de la misma manera que en el comando mean


• y representa el número de percentiles que se quieren obviar en los extremos

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 =

4.4000 6.6000 6.0000 5.2000 3.6000 4.4000

Máximo
Comando

>>max(a)

donde a es un vector

En caso de que a sea una matriz, el comando es

>>max(a,[ ],dim)

donde dim es 1 o 2

89
MATLAB Orientado a la matemática aplicada

• Si dim es 1 se calculará el máximo de cada columna


• Si dim es 2 se calculará la máximo de cada fila

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)

donde a y dim funcionan de la misma forma que en el comando max

EJEMPLO:

>> a=[2 3 9 3 8];

>> min(a)

ans =

90
Andrés Pérez

Mediana
Comando

>>median(a,dim)

donde a y dim funcionan de la misma forma que en el comando mean

EJEMPLO:

>> A=[3 9 4 3];

>> median(a)

ans =

3.5000

MEDIDAS DE DISPERSIÓN
Desviación estándar
Comando

>>std(a,flag,dim)

donde

• a es un vector o una matriz y funciona de la misma manera que en el comando mean


• flag es 0 o 1. Si vale 0, retorna la desviación estándar corregida. Si vale 1 devuelve la
desviación estándar sin corregir
• dim funciona de la misma manera que en el comando mean

EJEMPLO:

>> a =[10 2 5 2 10 1 8];

>> 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)

donde a es un vector o una matriz.

Para la varianza sin corregir

>>var(a,1)

EJEMPLO:

>> a=[7 8 5];

>> std(a)

ans =

1.5275

>> std(a,1)

ans =

1.2472

Rango
Comando

>>range(a)

donde a se comporta de la misma manera que en el comando mean

EJEMPLO:

>> a =[8 9 2];

>> range(a)

ans =

92
Andrés Pérez

Rango intercuartil
Comando

>>iqr(a)

donde a se comporta de la misma manera que en el comando mean

EJEMPLO:

>> a =[4 6 10 10];

>> iqr(a)

ans =

>> b =[5 3 6;

3 3 6;

8 2 2;

5 2 9;

9 9 7];

>> iqr(b)

ans =

3.7500 2.5000 2.5000

Percentil
Comando

>>prctile(a,p)

donde

• a se comporta de la misma manera que en el comando mean


• p corresponde al percentil que se busca, puede ser un vector o un escalar

93
MATLAB Orientado a la matemática aplicada

EJEMPLO:

>> a =[8 5 7];

>> prctile(a,3)

ans =

Quantil
Comando

>>quantile(a,p,dim)

donde

• a se comporta de la misma manera que en el comando mean


• p corresponde al quantil que se busca, puede ser un vector o un escalar y se encuentra
entre el rango [0,1]
• dim se comporta de la misma manera que en el comando mean

EJEMPLO:

>> a =[1 10 5;

9 5 4];

>> quantile(a,0.3,2)

ans =

2.6000

4.4000

Oblicuidad
Comando

>>skewness(a)

donde a se comporta de la misma manera que en el comando mean

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 =

0.7071 -0.6520 0.4451 0.7071 0 -0.3818 -0.5952

Curtosis
Comando

>>kurtosis(a,flag)

donde

• a se comporta de la misma manera que en el comando mean


• flag es 0 o 1. Si vale 0 se corrige la diagonal. Si vale 1 no se corrige

EJEMPLO:

>>a =[8 9 3;

4 2 1];

>> kurtosis(a,1)

ans =

1 1 1

Tabla con las frecuencias absolutas y relativas


Comando

>>tabulate(a)

donde a representa la muestra y sólo puede ser un vector

95
MATLAB Orientado a la matemática aplicada

EJEMPLO:

>> a =[4 5];

>> tabulate(a)

Value Count Percent

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

• a se comporta de la misma manera que en el comando mean


• flag es 0 o 1. si vale 0 se calcula la desviación absoluta media. Si vale 1 se calcula la
desviación absoluta mediana

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

• a se comporta de la misma manera que en el comando mean


• order es un entero positivo
• dim se comporta de la misma manera que en el comando mean

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 =

8.8571 3.2653 5.5510

GRUPOS DE DATOS
Matriz de covarianza
Comando

>>cov(a)

donde a es un vector o una matriz

• Si a es un vector, devuelve un valor con la varianza del mismo


• Si a es una matriz, cada columna es una observación y cada columna una variable

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

Matriz de correlación lineal


Comando

>>corr(a)

donde a debe ser una matriz

EJEMPLO:

>> a =[8 10;

5 1];

>> corr(a)

ans =

1 1

1 1

Matriz de los coeficientes de correlación


El comando es corrcoef, y su sintaxis es

>> [R,P,RLO,RUP]=corrcoef(a)

Donde el argumento de entrada es

• a: la cual debe ser una matriz

98
Andrés Pérez

Mientras que los argumentos de salida son

• R: matriz con los coeficientes de correlación


• P: matriz con los valores p usados en las pruebas de hipótesis
• RLO y RUP son los límites de determinado intervalo a 95% de confianza

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

Matriz con tabulación-cruzada


Comando

>>crosstab (a,b)

donde a y b son vectores

EJEMPLO:

>> a =[10 5 8 2 5 9 8 10 7 1 9 9];

>>b =[7 8 8 5 7 3 7 1 3 1 2 8];

>> 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

Resumen estadístico por grupo


Comando

>>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];

>> group=[9 2 1 4 1 5];

>> grpstats(a,group)

ans =

3.5000 3.0000 5.5000 3.5000 4.5000

3.0000 6.0000 1.0000 6.0000 4.0000

2.0000 3.0000 7.0000 8.0000 8.0000

9.0000 8.0000 7.0000 7.0000 9.0000

5.0000 10.0000 1.0000 5.0000 3.0000

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)

donde x, y son vectores de igual longitud

Cuando se ejecuta el comando plot, el gráfico se crea en la Ventana de Gráficos. Si no se ha


abierto previamente, esta ventana se abrirá automáticamente el a jecutar el comando. La
representación del gráfico que se mostrará se corresponde con una curva donde los valores de
x serán los de la abscisa (eje horizontal) y los de y los de la ordenada (eje vertical). La curva se
construye mediante segmentos de recta que unen los puntos cuyas coordenadas están
definidas por los elementos de los vectores x, y.

EJEMPLO:

>> x=[1:8];

>> y =[3 7 1 3 1 2 8 7];

>> plot(x,y)

102
Andrés Pérez

Línea de ajuste de mínimos cuadrados


El comando que genera esta línea es lsline, y la sintaxis de su uso es

>>plot(y,’+’)

>>lsline

donde y es un vector

EJEMPLO:

>> y =[5 10 4 6 3 8 3 6 7 9 10 6];

>> 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)

donde n representa el número de barras que se desean en el gráfico

EJEMPLO:

>> y =[4 10 1 5 4 8 8 3 5 5];

>> hist(y)

104
Andrés Pérez

Gráfico de barras verticales


Comando

>>bar(x,y)

donde x, y son vectores de igual longitud

EJEMPLO:

>> x=[1:8];

>> y =[4 2 8 4 6 2 6 3];

>> bar(x,y)

105
MATLAB Orientado a la matemática aplicada

Gráfico de barras horizontales


Comando

>>barh(x,y)

donde x, y son vectores de igual longitud

EJEMPLO:

> x=[5:13];

>> y =[7 7 8 5 2 3 9 2 8];

>> barh(x,y)

106
Andrés Pérez

Gráfico de escaleras
Comando

>>stairs(x,y)

donde x, y son vectores de igual longitud

EJEMPLO:

>> x=[-2:4];

>> y=[3 5 2 6 4 7 1];

>> stairs(x,y)

107
MATLAB Orientado a la matemática aplicada

Gráfico de tallo
Comando

>>stem(x,y)

donde x, y son vectores de igual longitud

EJEMPLO:

>> x=[3:8];

>> y =[8 9 2 9 7 2];

>> stem(x,y)

108
Andrés Pérez

Gráfico de tarta
Comando

>>pie(x)

donde x es un vector

EJEMPLO:

>> x =[4 6 10 10 2];

>> pie(x)

109
MATLAB Orientado a la matemática aplicada

Generación de números al azar


Comando

>>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

Diagramas de distribuciones de probabilidad


Comando

>> disttool

Esta función permite generar de forma interactiva diagramas de diferentes distribuciones de


probabilidad. La interfaz generada por esta función permite escoger entre dos tipos de
diagramas, el de cdf (genera una función distribución acumulativa elegida) o el de pdf (función
de densidad de probabilidad para una distribución especificada) .

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

Calcule la el promedio y la mediana de la población venezolana entre los años 1873 y


2011.

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

Calcula la media geométrica, armónica y ajustada de la población del estado Lara.

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

Lara Miranda Carabobo Distrito Aragua


Capital
1873 143818 109917 113715 58050 110828
1881 176079 127844 132316 67735 108085
1891 189624 141446 165156 86965 94195
1920 219816 174266 125514 107236 97251
1926 271369 189572 147204 155499 105849
1936 291230 216527 172127 237069 129746
1941 332975 227604 191442 326712 138235
1950 368169 276273 242923 623713 189891
1961 489140 492349 381636 1116245 313274
1971 671410 856272 659339 1658500 543170
1981 945064 1421442 1062268 1816901 891623
1990 1193161 1871093 1453232 1823222 1120132
2001 1556415 2330872 1932168 1836286 1449616
2011 1774867 2675165 2245744 1943901 1630308

Calcule por estado


a) La desviación estándar corregida y sin corregir
b) La varianza corregida y sin corregir

4. Considerando los datos del ejercicio 3 calcule por año


a) La desviación estándar corregida y sin corregir
b) La varianza corregida y sin corregir

5. Considerando los datos del ejercicio 1 calcule


a) La matriz de covarianza
b) La matriz de correlación lineal
c) La matriz de los coeficientes de correlación

6. Considerando los datos del ejercicio 2 visualice l


a) El gráfico simple
b) El gráfico de barras verticales
c) El gráfico de barras horizontales
d) El gráfico de escaleras
e) El gráfico de tallo

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

Formato general de un programa lineal


Un programa lineal (PL) se escribe de la siguiente forma
Función
Maximizar o minimizar 𝑧𝑧 = 𝑐𝑐1 𝑥𝑥1 + 𝑐𝑐2 𝑥𝑥2 + ⋯ + 𝑐𝑐𝑛𝑛 𝑥𝑥𝑛𝑛
objetivo
Sujeto a

𝑎𝑎11 𝑥𝑥1 + 𝑎𝑎12 𝑥𝑥2 + ⋯ + 𝑎𝑎1𝑛𝑛 𝑥𝑥𝑛𝑛 ≤ 𝑏𝑏1

𝑎𝑎21 𝑥𝑥1 + 𝑎𝑎22 𝑥𝑥2 + ⋯ + 𝑎𝑎2𝑛𝑛 𝑥𝑥𝑛𝑛 ≤ 𝑏𝑏2


Restricciones
⋮ ⋮ ⋮ de desigualdad

𝑎𝑎𝑚𝑚1 𝑥𝑥1 + 𝑎𝑎𝑚𝑚2 𝑥𝑥2 + ⋯ + 𝑎𝑎𝑚𝑚𝑚𝑚 𝑥𝑥𝑛𝑛 ≤ 𝑏𝑏𝑚𝑚

𝑎𝑎�11 𝑥𝑥1 + 𝑎𝑎�12 𝑥𝑥2 + ⋯ + 𝑎𝑎�1𝑛𝑛 𝑥𝑥𝑛𝑛 = 𝑏𝑏�1

𝑎𝑎�21 𝑥𝑥1 + 𝑎𝑎�22 𝑥𝑥2 + ⋯ + 𝑎𝑎�2𝑛𝑛 𝑥𝑥𝑛𝑛 = 𝑏𝑏�2 Restricciones


de igualdad
⋮ ⋮ ⋮

𝑎𝑎�𝑚𝑚1 𝑥𝑥1 + 𝑎𝑎�𝑚𝑚2 𝑥𝑥2 + ⋯ + 𝑎𝑎�𝑚𝑚𝑚𝑚 𝑥𝑥𝑛𝑛 = 𝑏𝑏�𝑚𝑚

𝑙𝑙1 ≤ 𝑥𝑥1 ≤ 𝑢𝑢1

𝑙𝑙2 ≤ 𝑥𝑥2 ≤ 𝑢𝑢2


Acotación de
⋮ las variables

𝑙𝑙𝑛𝑛 ≤ 𝑥𝑥𝑛𝑛 ≤ 𝑢𝑢𝑛𝑛

Si hacemos

114
Andrés Pérez
𝑥𝑥1
𝑥𝑥2
𝐶𝐶 = (𝑐𝑐1 𝑐𝑐2 ⋯ 𝑐𝑐𝑛𝑛 ) , 𝑋𝑋 = � �

𝑥𝑥𝑛𝑛

𝑎𝑎12 𝑎𝑎12 ⋯ 𝑎𝑎1 𝑛𝑛 𝑏𝑏1


𝑎𝑎21 𝑎𝑎21 ⋯ 𝑎𝑎2𝑛𝑛 𝑏𝑏2
𝐴𝐴 = � ⋮ ⋮ ⋮ ⋮ � , 𝐵𝐵 = � ⋮ �
𝑎𝑎𝑚𝑚1 𝑎𝑎𝑚𝑚2 ⋯ 𝑎𝑎𝑚𝑚𝑚𝑚 𝑏𝑏𝑚𝑚

𝑎𝑎�12 𝑎𝑎�12 ⋯ 𝑎𝑎�1 𝑛𝑛 𝑏𝑏�1


𝑎𝑎�21 𝑎𝑎�21 ⋯ 𝑎𝑎�2𝑛𝑛 �
𝐴𝐴𝐴𝐴𝐴𝐴 = � � , 𝐵𝐵𝐵𝐵𝐵𝐵 = ⎛ 𝑏𝑏2 ⎞
⋮ ⋮ ⋮ ⋮ ⋮
𝑎𝑎�𝑚𝑚1 𝑎𝑎�𝑚𝑚2 ⋯ 𝑎𝑎�𝑚𝑚𝑚𝑚 ⎝ 𝑏𝑏�𝑚𝑚 ⎠

𝑙𝑙1 𝑢𝑢1
𝑙𝑙2 𝑢𝑢2
𝐿𝐿 = � � , 𝐵𝐵 = � ⋮ �

𝑙𝑙𝑚𝑚 𝑢𝑢𝑚𝑚

El PL se puede escribir matricialmente como

Maximizar o minimizar 𝑧𝑧 = 𝐶𝐶𝐶𝐶

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)

Donde los argumentos de entrada son


o C: el vector fila dado en la función objetivo
o A: la matriz dada en la restricción de desigualdad
o B: es el vector columna dado en la restricción de desigualdad
o Aeq: es la matriz dada en la restricción de igualdad
o Beq: es el vector columna dado en la restricción de igualdad
o L y U son los vectores columna dados en la acotación de las variables de decisión

Mientras que los argumentos de salida son


o X: vector columna con la solución óptima del PL
o z: valor máximo de la función objetivo

115
MATLAB Orientado a la matemática aplicada

EJEMPLO: resolver el siguiente PL

Minimizar 𝑧𝑧 = 3𝑥𝑥1 + 5𝑥𝑥2 − 4𝑥𝑥3

Sujeto a

−7𝑥𝑥1 + 2𝑥𝑥2 + 3𝑥𝑥3 ≤ −4

5𝑥𝑥1 − 3𝑥𝑥2 − 2𝑥𝑥3 ≤ 9

−2𝑥𝑥1 + 4𝑥𝑥2 + 8𝑥𝑥3 = −3

1 ≤ 𝑥𝑥1 ≤ 4 , 0 ≤ 𝑥𝑥2 ≤ 7 , 0 ≤ 𝑥𝑥3 ≤ 9

>> C=[3 5 -4];

>> A=[-7 2 3;5 -3 -2];

>> Aeq=[-2 4 8];

>> 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

Así, el mínimo valor de la función objetivo es 𝑧𝑧 = 4.5 y ocure en la solución


óptima 𝑥𝑥1 = 1.5 , 𝑥𝑥2 = 1.7756e − 013 y 𝑥𝑥3 = 3.4227e − 012.

116
Andrés Pérez

Cuando en un PL no hay restricciones de de igualdad, en vez de colocar Aeq y Beq como


argumentos de entrada de la función linprog, se escriben dos corchetes []. De forma similar
ocurre cuando no hay acotación de variables.

EJEMPLO: en Granjas Modelo se usa diariamente un mínimo de 800 libras (lb) de


un alimento especial, que es una mezcla de maíz y soya, con las composiciones
siguientes

lb por lb de alimento

Alimento Proteínas Fibras Costo ($/lb)

Maíz 0.09 0.02 0.30

Soya 0.60 0.06 0.90

Las necesidades dietéticas del alimento especial son un mínimo de 30% de


proteínas y un máximo de 5% de fibras. Granjas Modelo desea determinar las
proporciones de alimento que produzcan un costo diario mínimo.

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

Minimizar 𝑧𝑧 = 0.3𝑥𝑥1 − 0.9𝑥𝑥2

Sujeto a

𝑥𝑥1 + 𝑥𝑥2 ≥ 800

0.21𝑥𝑥1 − 0.30𝑥𝑥2 ≤ 0

0.03𝑥𝑥1 − 0.01𝑥𝑥2 ≥ 0

𝑥𝑥1 , 𝑥𝑥2 ≥ 0

multiplicando por -1 en ambos lados de la primera y tercera restricción, obtenemos


un PL equivalente al anterior

117
MATLAB Orientado a la matemática aplicada

Minimizar 𝑧𝑧 = 0.3𝑥𝑥1 − 0.9𝑥𝑥2

Sujeto a

−𝑥𝑥1 − 𝑥𝑥2 ≤ −800

0.21𝑥𝑥1 − 0.30𝑥𝑥2 ≤ 0

−0.03𝑥𝑥1 + 0.01𝑥𝑥2 ≤ 0

𝑥𝑥1 , 𝑥𝑥2 ≥ 0

>> C=[0.3 0.9];

>> A=[-1 -1;0.21 -0.30;-0.03 0.01];

>> B=[-800;0;0];

>> [X,z]=linprog(C,A,B,[],[],L,[])

Optimization terminated.

X=

470.5882

329.4118

z=

437.6471

Entonces el costo mínimo correspondiente, de la mezcla de alimentos, es

𝑧𝑧 = $437.6471 diarios.

Maximización
Resolver un PL de maximización

Maximizar 𝑍𝑍 = 𝐶𝐶𝐶𝐶

Sujeto a

𝐴𝐴𝐴𝐴 ≤ 𝐵𝐵

𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴 = 𝐵𝐵𝐵𝐵𝐵𝐵

118
Andrés Pérez

𝐿𝐿 ≤ 𝑋𝑋 ≤ 𝑈𝑈

es equivalente a resolver un Pl de minimización

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.

EJEMPLO: la compañía Reddy Mikks produce pinturas para interiores y


exteriores, M1 y M2. La tabla siguiente proporciona los datos básicos del
problema

Ton de materia prima

Pintura para Pintura para Disponibilidad


exteriores interiores diaria

Materia prima 6 4 24
M1

Materia prima 1 2 6
M2

Utilidad por ton 5 4


(miles de $)

Una encuesta de mercado indica que la demanda diaria de pintura para


interiores no puede ser mayor que 1 tonelada más que la de pintura para
exteriores. También, que la demanda máxima diaria de pintura para interiores es
de 2 toneladas. Reddy Mikks desea determinar la mezcla óptima (la mejor) de
productos para exteriores y para interiores que maximice la utilidad diaria total.
El modelo a resolver es

119
MATLAB Orientado a la matemática aplicada

Maximizar Z= 5𝑥𝑥1 + 4𝑥𝑥2


Sujeto a
6𝑥𝑥1 + 4𝑥𝑥2 ≤ 24
𝑥𝑥1 + 2𝑥𝑥2 ≤ 6
−𝑥𝑥1 + 𝑥𝑥2 ≤ 1
𝑥𝑥2 ≤ 2
𝑥𝑥1 , 𝑥𝑥2 ≥ 0
por ello resolveremos el siguiente PL

Minimizar 𝑧𝑧 = −5𝑥𝑥1 − 4𝑥𝑥2


Sujeto a
6𝑥𝑥1 + 4𝑥𝑥2 ≤ 24
𝑥𝑥1 + 2𝑥𝑥2 ≤ 6
−𝑥𝑥1 + 𝑥𝑥2 ≤ 1
𝑥𝑥2 ≤ 2
𝑥𝑥1 , 𝑥𝑥2 ≥ 0

>> C=[-5 -4];


>> A=[6 4;1 2;-1 1;0 1];
>> B=[24;6;1;2];
>> L=[0;0];
>> [X,z]=linprog(C,A,B,[],[],L,[])
Optimization terminated.
X=
3.0000
1.5000
z=
-21.0000

Luego, la solución de PL original es 𝑥𝑥1 =3.0000 y 𝑥𝑥2 = 1.5000. Y al utilidad


máxima diaria es de 𝑍𝑍 = −𝑧𝑧 = −(−21.0000) = 21.0000 dólares.

120
Andrés Pérez

PROGRAMACIÓN CUADRÁTICA
Un problema general de este tipo puede definirse como sigue
1
Minimizar 𝑧𝑧 = 𝑋𝑋 𝑡𝑡 𝐷𝐷𝐷𝐷 + 𝐶𝐶 𝑡𝑡 𝑋𝑋
2

Sujeto a

𝐴𝐴𝐴𝐴 ≤ 𝐵𝐵

𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴 = 𝐵𝐵𝐵𝐵𝐵𝐵

𝐿𝐿 ≤ 𝑋𝑋 ≤ 𝑈𝑈

donde D es una matriz cuadrada, simétrica y tal que

𝑋𝑋 𝑡𝑡 𝐷𝐷𝐷𝐷 ≥ 0

Aquí 𝑋𝑋 𝑡𝑡 denota la traspuesta de 𝑋𝑋 y 𝐶𝐶 𝑡𝑡 la traspuesta de 𝐶𝐶. La sintaxis para resolver el modelo


de programación cuadrática es

>>[X,z] = quadprog(D,C,A,B,Aeq,Beq,L,U)

Nótese que la diferencia entre un PL y un problema de programación cuadrática es la forma de


la función objetivo.

EJEMPLO: dadas las matrices

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

Vemos que la matriz 𝐷𝐷 es simétrica, además

𝑋𝑋 𝑡𝑡 𝐷𝐷𝐷𝐷 = 𝑥𝑥12 − 2𝑥𝑥1 𝑥𝑥2 + 2𝑥𝑥22 ≥ 0

entonces nuestro programa es cuadrático

121
MATLAB Orientado a la matemática aplicada

>> D=[1 -1;-1 2];

>> C=[-2;-6];

>> A=[1 1;-1 2;2 1];

>> B=[2;2;3];

>> L=[0;0];

>> [X,z] = quadprog(D,C,A,B,[],[],L,[])

Warning: Large-scale method does not currently solve this problem formulation,

using medium-scale method instead.

> In quadprog at 264

Optimization terminated.

X=

0.6667

1.3333

z=

-8.2222

Para resolver un programa cuadrático de maximización


1
Maximizar 𝑍𝑍 = 𝑋𝑋 𝑡𝑡 𝐷𝐷𝐷𝐷 + 𝐶𝐶 𝑡𝑡 𝑋𝑋
2

Sujeto a

𝐴𝐴𝐴𝐴 ≤ 𝐵𝐵

𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴 = 𝐵𝐵𝐵𝐵𝐵𝐵

𝐿𝐿 ≤ 𝑋𝑋 ≤ 𝑈𝑈

hacemos

1 1
𝑧𝑧 = −𝑍𝑍 = − � 𝑋𝑋 𝑡𝑡 𝐷𝐷𝐷𝐷 + 𝐶𝐶 𝑡𝑡 𝑋𝑋 � = 𝑋𝑋 𝑡𝑡 (−𝐷𝐷)𝑋𝑋 + (−𝐶𝐶 𝑡𝑡 )𝑋𝑋
2 2

122
Andrés Pérez

y procedemos a resolver
1
Minimizar 𝑧𝑧 = 𝑋𝑋 𝑡𝑡 (−𝐷𝐷)𝑋𝑋 + (−𝐶𝐶)𝑡𝑡 𝑋𝑋
2

Sujeto a

𝐴𝐴𝐴𝐴 ≤ 𝐵𝐵

𝐴𝐴𝐴𝐴𝐴𝐴𝐴𝐴 = 𝐵𝐵𝐵𝐵𝐵𝐵

𝐿𝐿 ≤ 𝑋𝑋 ≤ 𝑈𝑈

verificando que se satisfaga 𝑋𝑋 𝑡𝑡 (−𝐷𝐷)𝑋𝑋 ≥ 0

EJEMPLO: dadas las matrices

−4 −2 4
𝐷𝐷 = � �, 𝐶𝐶 = � � , 𝐴𝐴 = ( 1 2 ) , 𝐵𝐵 = ( 2 )
−2 −4 6
1
Maximizar 𝑍𝑍 = 𝑋𝑋 𝑡𝑡 𝐷𝐷𝐷𝐷 + 𝐶𝐶 𝑡𝑡 𝑋𝑋
2

Sujeto a

𝐴𝐴𝐴𝐴 ≤ 𝐵𝐵

𝑥𝑥1 , 𝑥𝑥2 ≥ 0

Vemos que

𝑋𝑋 𝑡𝑡 (−𝐷𝐷)𝑋𝑋 = 2𝑥𝑥12 + 2𝑥𝑥1 𝑥𝑥2 + 2𝑥𝑥22 ≥ 0

Así el modelo es cuadrático, y procedemos a hallar 𝑋𝑋 que minimice 𝑧𝑧 = −𝑍𝑍

>> D=[4 2;2 4];

>> C=[-4;-6];

>> A=[1 2];

>> B=[2];

>> L=[0;0];

>> [X,z]=quadprog(D,C,A,B,[],[],L,[])

Warning: Large-scale method does not currently solve this problem formulation,

using medium-scale method instead.

123
MATLAB Orientado a la matemática aplicada

>> In quadprog at 264

Optimization terminated.

X=

0.3333

0.8333

z=

-4.1667

Luego, el valor máximo de 𝑍𝑍 es 𝑍𝑍 = −𝑧𝑧 = −(−4.1667) = 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:

Minimizar 𝑧𝑧 = 2𝑥𝑥12 − 4𝑥𝑥1 𝑥𝑥2 + 4𝑥𝑥22 − 15𝑥𝑥1 − 30𝑥𝑥2


Sujeto a
𝑥𝑥1 + 2𝑥𝑥2 ≤ 30
𝑥𝑥1 , 𝑥𝑥2 ≥ 0

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

>> syms x1 x2 D d11 d d22

>> D=[d11 d;d d22]

D=

[ d11, d]

[ d, d22]

>> pretty(expand((1/2)*[x1 x2]*D*[x1;x2]))

Lo cual nos indica que 𝑑𝑑11 = 4 , 𝑑𝑑 = −4 y 𝑑𝑑22 = 8.

De manera que los datos de nuestro problema son

4 −4 −15
𝐷𝐷 = � �, 𝐶𝐶 = � �, 𝐴𝐴 = ( 1 2 ), 𝐵𝐵 = ( 30 )
−4 8 −30

>> D=[4 -4;-4 8];

>> C=[-15;-30];

>> A=[1 2];

>> B=[30];

>> L=[0;0];

>> [X,z]=quadprog(D,C,A,B,[],[],L,[])

Warning: Large-scale method does not currently solve this problem


formulation,

using medium-scale method instead.

> In quadprog at 264

Optimization terminated.

X=

12

z=

-270

125
MATLAB Orientado a la matemática aplicada

Lo cual nos muestra que solución óptima de nuestro programa cuadrático es

𝑥𝑥1 = 12 , 𝑥𝑥2 = 9

Así, el mínimo valor de 𝑧𝑧

𝑧𝑧 = −270

Lo cual nos muestra que solución óptima de nuestro programa cuadrático es

𝑥𝑥1 = 𝑥𝑥2 = 0

Sin el mínimo valor de 𝑧𝑧

𝑧𝑧 = 0

En el ejemplo anterior utilizamos el comando simbólico expand, el cual permite expresar un


objeto simbólico de forma más amplia.

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

6𝑥𝑥1 + 3𝑥𝑥2 ≤ 22.5

𝑥𝑥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

Minutos por unidad

Prenda Corte Costura Empaque Utilidad unitaria


($)

Camisas 20 70 12 8.00

Blusas 60 60 4 12.00

Mediante un programa lineal:

a) Determine el programa de producción semanal óptimo para Alfa.


b) Determine el valor de corte, costura y empaque por hora.

4. Juan acaba de entrar a la universidad, y se da cuenta que si sólo estudia y no juega,


su personalidad será gris. Desea repartir su tiempo disponible, aproximadamente
de 10 horas por día, entre juego y estudio. Estima que el juego es doblemente
divertido que el estudio. También desea estudiar cuando menos un tiempo igual al
que pasa jugando. Sin embargo, se da cuenta que si debe hacer todas sus tareas
escolares, no puede jugar más de 4 horas diarias. ¿Cómo debe repartir Juan su
tiempo, para maximizar su placer de estudiar y jugar?

5. Dadas las matrices

−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

Minimizar 𝑧𝑧 = 𝑥𝑥12 + 𝑥𝑥1 𝑥𝑥2 + 2𝑥𝑥22 + 𝑥𝑥1 − 𝑥𝑥2

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

𝑥𝑥1 + 𝑥𝑥2 + 𝑥𝑥3 ≥ 1

3𝑥𝑥1 + 2𝑥𝑥2 + 𝑥𝑥3 ≤ 6

𝑥𝑥1 , 𝑥𝑥2 , 𝑥𝑥3 ≥ 0

129
MATLAB Orientado a la matemática aplicada

CAPÍTULO 8. MÉTODOS NUMÉRICOS

Los métodos numéricos se utilizan habitualmente para resolver problemas matemáticos


formulados en diferentes campos científicos y técnicos, donde es difícil o incluso imposible
obtener soluciones exactas a un problema dado.

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.

RESOLUCIÓN DE ECUACIONES NO LINEALES


En general, no es posible determinar el cero de una función, es decir, el valor 𝑥𝑥 ∗ tal que
𝑓𝑓(𝑥𝑥 ∗ ) = 0, en un número finito de pasos. Esto hace necesario utilizar métodos numéricos. Los
métodos son usualmente iterativos (es decir, emplean una sucesión {𝑥𝑥𝑘𝑘 } )y tienen la forma:

• Iniciar con una aproximación inicial 𝑥𝑥0 (o en un intervalo [𝑎𝑎, 𝑏𝑏]) de 𝑥𝑥 ∗


• Calcular las aproximaciones sucesivas 𝑥𝑥1 , 𝑥𝑥2 , … del cero según el esquema iterativo
dado por el método
• Elegir 𝑥𝑥𝑘𝑘 como aproximación de 𝑥𝑥 ∗ cuando se cumpla un criterio de parada dado

Un criterio de parada es la forma de indicar cuándo terminar la iteración del bucle. Algunos
criterios de parada son:

a) |𝑥𝑥𝑘𝑘 − 𝑥𝑥𝑥𝑥−1 | < 𝛿𝛿 (𝛿𝛿 es llamado tolerancia)


b) |𝑓𝑓(𝑥𝑥𝑘𝑘 )| < 𝜖𝜖 (𝜖𝜖 es llamado cota)
c) Un número máximo de iteraciones

Método de punto fijo


En muchos casos una ecuación no lineal aparece en la forma de “problema de punto fijo”:

Encuentre 𝑥𝑥 tal que 𝑔𝑔(𝑥𝑥) = 𝑥𝑥

Un número 𝑥𝑥 = 𝑥𝑥 ∗ que satisface esta ecuación se llama punto fijo de 𝑔𝑔.

El esquema iterativo del método de punto fijo consiste en emplear la sucesión {𝑥𝑥𝑘𝑘 } dada por

𝑥𝑥0 (punto inicial)

𝑥𝑥𝑘𝑘+1 = 𝑔𝑔(𝑥𝑥𝑘𝑘 ) , 𝑘𝑘 = 0, 1, 2, …

130
Andrés Pérez

EJEMPLO: aproximaremos una solución de la ecuación

𝑥𝑥 3 − 4𝑥𝑥 − 1 = 0

lo cual es equivalente a hallar el punto fijo de la función

𝑥𝑥 3 − 1
𝑔𝑔(𝑥𝑥) =
4

Punto inicial: −0.5

Criterio de parada: 5 iteraciones

El código del fichero de función que resuelve este problema es el siguiente

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_x0=x0^3-4*x0-1; %evaluamos x0 en la ecuacion principal

ec=[ec_x0, zeros(1,maxi)]; %vector que contendra los k+1 terminos f(x0), f(x1), f(x2), ...,f(xk)

N=[0]; %hasta ahora solo tenemos el termino x0

for k=2:maxi+1 %se hacen k iteraciones

x(k)=(x(k-1)^3-1)/4;
ec(k)=x(k)^3-4*x(k)-1; %evaluamos x_k en la ecuacion principal

N=[N, k-1]; %anexamos el indice k

131
MATLAB Orientado a la matemática aplicada

end

informe=[N',x',ec'];

EJEMPLO (continuación): una vez definido y guardado el fichero, lo podemos


utilizar

>> [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 (extremo izquierdo inicial)

𝑏𝑏1 (extremo derecho inicial inicial)

[𝑚𝑚𝑘𝑘−1 , 𝑏𝑏𝑘𝑘−1 ], 𝑠𝑠𝑠𝑠 𝑓𝑓(𝑎𝑎𝑘𝑘−1 )𝑓𝑓(𝑚𝑚𝑘𝑘−1 ) > 0


[𝑎𝑎𝑘𝑘 , 𝑏𝑏𝑘𝑘 ] = � ; 𝑘𝑘 = 2,3, …
[𝑎𝑎𝑘𝑘−1 , 𝑚𝑚𝑘𝑘−1 ], 𝑠𝑠𝑠𝑠 𝑓𝑓(𝑎𝑎𝑘𝑘−1 )𝑓𝑓(𝑚𝑚𝑘𝑘−1 ) < 0

𝑎𝑎𝑘𝑘 + 𝑏𝑏𝑘𝑘
𝑚𝑚𝑘𝑘 = ; 𝑘𝑘 = 1,2, …
2

En este caso la sucesión {𝑚𝑚𝑘𝑘 } es la aproximación del cero 𝑥𝑥 ∗ .

132
Andrés Pérez

EJEMPLO: la función

𝑓𝑓(𝑥𝑥) = 𝑥𝑥 2 − cos(𝑥𝑥) − 1

tiene un cambio de signo en el intervalo [1,2]. Aproximaremos 𝑥𝑥 ∗ mediante el


método de bisección

Extremo izquierdo inicial: 𝑎𝑎1 = 1

Extremo derecho inicial: 𝑏𝑏1 = 2

Criterio de parada: cota 𝜖𝜖 = 0.00454

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;

N=[k]; %inicializamos el vector N

m=[(a+b)/2]; %inicializamos el vector de terminos m_k

d=[0.5]; %inicializamos el vector de terminos d_k

f_a=a(1)^2-cos(a(1))-1; %evaluacion f(a_1)

f_m=m(1)^2-cos(m(1))-1; %evaluacion f(m_1)

f=[f_m]; %inicializamos el vector de imagenes f(m_k)


133
MATLAB Orientado a la matemática aplicada

while abs(f_m(k))>=cota

if f_a*f_m>0

a_k=m(k); %nuevo termino de a

b_k=b(k); %nuevo termino de b

else

a_k=a(k); %nuevo termino de a

b_k=m(k); %nueo termino de b

end

a=[a, a_k]; %agrandar el vector a

b=[b, b_k]; %agrandar el vector b

m_k=(a_k+b_k)/2; %nuevo termino de m

m=[m, m_k]; %agrandar el vector m

f_a=a_k^2-cos(a_k)-1; %evaluacion f(a_k)

f_m=m_k^2-cos(m_k)-1; %evaluacion f(m_k)

k=k+1; %aumentamos el contador

N=[N, k]; %agrandar el vector N

d=[d, 1/2^k]; %agrandar el vector d

f=[f, f_m]; %agrandar el vector f

end

informe=[N', a', b', m', d', f'];

134
Andrés Pérez

EJEMPLO (continuación):

>> [informe]=met_biseccion(1,2,0.00454)

informe =

1.0000 1.0000 2.0000 1.5000 0.5000 1.1793

2.0000 1.0000 1.5000 1.2500 0.2500 0.2472

3.0000 1.0000 1.2500 1.1250 0.1250 -0.1656

4.0000 1.1250 1.2500 1.1875 0.0625 0.0362

5.0000 1.1250 1.1875 1.1563 0.0313 -0.0659

6.0000 1.1563 1.1875 1.1719 0.0156 -0.0151

7.0000 1.1719 1.1875 1.1797 0.0078 0.0104

8.0000 1.1719 1.1797 1.1758 0.0039 -0.0024

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 (𝑥𝑥𝑘𝑘 , 𝑓𝑓(𝑥𝑥𝑘𝑘 )).

ESQUEMA ITERATIVO: emplear la sucesión {𝑥𝑥𝑘𝑘 } dada por

𝑥𝑥0 (punto inicial)

𝑓𝑓(𝑥𝑥𝑘𝑘 )
𝑥𝑥𝑘𝑘+1 = 𝑥𝑥𝑘𝑘 − , 𝑘𝑘 = 0,1,2, …
𝑓𝑓′ (𝑥𝑥𝑘𝑘 )

EJEMPLO: aproximar la solución 𝑥𝑥 ∗ de la ecuación

𝑥𝑥 2 = 𝑐𝑐𝑐𝑐𝑐𝑐(𝑥𝑥) + 1

estando 𝑥𝑥 ∗ en [1,2]

Punto inicial: 𝑥𝑥0 = 1.5

Criterio de parada: tolerancia 𝛿𝛿 = 0.0089

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));

x=[x1]; %inicializamos el vetor de terminos x_k

est=[abs(x1-x0)]; %inicializamos el vector de estimacion del error absoluto

k=1; %cantidad de terminos actual

N=[k]; %inicializamos el vector de iteraciones

while est(k)>tol

x_new=x(k)-(x(k)^2-cos(x(k))-1)/(2*x(k)+sin(x(k))); %calculamos el nuevo termino

est_new=abs(x_new-x(k)); %calculamos la nueva estimacion del error absluto

k=k+1; %aumentamos el contador

x=[x, x_new]; %agrandamos el vector x

est=[est, est_new]; %agrandamos el vector est

N=[N, k]; %agrandamos el vector N

end

informe=[N', x', est'];

136
Andrés Pérez

EJEMPLO (continuación):

>> [informe]=met_newton(1.5,0.0089)

informe =

1.0000 1.2050 0.2950

2.0000 1.1768 0.0282

3.0000 1.1765 0.0003

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.

ESQUEMA ITERATIVO: emplear la suceción {𝑥𝑥𝑘𝑘 }dada por

𝑥𝑥0 (punto inicial)

2
𝑥𝑥𝑘𝑘+1 = 𝑥𝑥𝑘𝑘 − 𝑢𝑢(𝑥𝑥𝑘𝑘 )
1 + �1 − 2𝑡𝑡(𝑥𝑥𝑘𝑘 )

donde

𝑓𝑓(𝑥𝑥) 𝑓𝑓 ′′ (𝑥𝑥)
𝑢𝑢(𝑥𝑥) = 𝑦𝑦 𝑡𝑡(𝑥𝑥) = 𝑢𝑢(𝑥𝑥)
𝑓𝑓 ′ (𝑥𝑥) 𝑓𝑓 ′ (𝑥𝑥)

EJEMPLO: aproximar un cero de la función

𝑓𝑓(𝑥𝑥) = 𝑥𝑥 2 − 2 cos(𝑥𝑥) + 1

Punto inicial: 𝑥𝑥0 = 0.5

Criterio de parada: 6 iteraciones

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} |

Ux0=(x0^2-2*cos(x0)+1)/(2*x0+2*sin(x0)); %evaluamos la funcion auxiliar U

Tx0=Ux0* (1+cos(x0)/(x0+sin(x0))); %evaluamos la funcion auxiliar T

x1=x0-Ux0*(2/(1+sqrt(1-2*Tx0)));

x=[x1]; %inicializamos el vetor de terminos x_k

est=[abs(x1-x0)]; %inicializamos el vector de estimacion del error absoluto

N=[1]; %inicializamos el vector de iteraciones

for k=2:maxi

Ux_k=(x(k-1)^2-2*cos(x(k-1))+1)/(2*x(k-1)+2*sin(x(k-1))); %evaluamos la funcion

%auxiliar U

Tx_k=Ux0* (1+cos(x(k-1))/(x0+sin(x(k-1)))); %evaluamos la funcion auxiliar T

x_new=x(k-1)-Ux_k*(2/(1+sqrt(1-2*Tx_k)));

est_new=abs(x_new-x(k-1)); %calculamos la nueva estimacion del error absluto

=[x, x_new]; %agrandamos el vector x

est=[est, est_new]; %agrandamos el vector est

N=[N, k]; %agrandamos el vector N

end

informe=[N', x', est'];

138
Andrés Pérez

EJEMPLO (continuación):

>> [informe]=met_euler(0.5,6)

informe =

1.0000 0.7143 0.2143

2.0000 0.7146 0.0002

3.0000 0.7146 0.0000

4.0000 0.7146 0.0000

5.0000 0.7146 0.0000

6.0000 0.7146 0.0000

Un método híbrido: Newton-Bisección


Si el método de Newton falla (en algún sentido) en una iteración, podemos usar bisección para
dar un pequeño salto y regresar al método de Newton lo más pronto posible.

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

EJEMPLO: aproximar el cero 𝑥𝑥 ∗ de la función

𝑓𝑓(𝑥𝑥) = 0.2𝑠𝑠𝑠𝑠𝑠𝑠(16𝑥𝑥) − 𝑥𝑥 + 1.75

sabiendo que 𝑓𝑓 cambia de signo en el intervalo [1,2]

Punto inicial: 𝑥𝑥0 = 1

Extremo izquierdo inicial: 𝑎𝑎 = 1

Extremo derecho inicial: 𝑏𝑏 = 2

Criterio de parada: 8 iteraciones

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

cand=x0-(0.2*sin(16*x0)-x0+1.75)/(3.2*cos(16*x0)-1); %calculamos el candidato a ser x1

if 1<cand & cand<2

x1=cand;

met=[1]; %metodod de Newton

else

x1=(a+b)/2;

met=[2]; %metodo de Biseccion

end

x=[x1]; %inicializamos el vector de terminos x_k

est=[abs(x1-x0)]; %inicializamos el vector de estimacion del error absoluto

N=[1]; %inicializamos el vector de iteraciones

f_a=0.2*sin(16*1)-1+1.75; %evaluacion f(1)

f_x1=0.2*sin(16*x1)-x1+1.75; %evaluacion f(x1)

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

%candidato a ser x_new

if a<cand & cand<b %aplicar el metodo de Newton

x_new=cand;

met=[met, 1]; %agrandar el vetor met

else %aplicar el metodo de Biseccion

x_new=(a+b)/2;

met=[met, 2]; %agrandar el vector met

end

est_new=abs(x_new-x(k-1));

x=[x, x_new]; %agrandar el vector de terminos x_k

est=[est, est_new]; %agrandar el vector de estimacion del error absoluto

N=[N, k]; %agrandar el vector de iteraciones

f_a=0.2*sin(16*a)-a+1.75; %evaluacion f(a)

f_x_new=0.2*sin(16*x_new)-x_new+1.75; %evaluacion f(x_new)

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

informe=[N', x', est', met'];

EJEMPLO (continuación):

>> [informe]=meth_newton_biseccion(1,1,2,8)

informe =

1.0000 1.1704 0.1704 1.0000

2.0000 1.5852 0.4148 2.0000

3.0000 1.7926 0.2074 2.0000

4.0000 1.7617 0.0309 1.0000

5.0000 1.7631 0.0014 1.0000

6.0000 1.7631 0.0000 1.0000

7.0000 1.7631 0.0000 1.0000

8.0000 1.7624 0.0007 2.0000

Método de la Falsa Posición


La idea de este método es similar al de bisección: iniciar en un intervalo [𝑎𝑎, 𝑏𝑏] donde 𝑓𝑓 cambia
de signo, y obtener una sucesión de intervalos encajados [𝑎𝑎𝑘𝑘 , 𝑏𝑏𝑘𝑘 ] (donde 𝑓𝑓cambie de signo),
juntamente con una sucesión de términos {𝑥𝑥𝑘𝑘 } (dentro de los intervalos anteriores), siendo
esta última sucesión la que aproxima el cero de 𝑓𝑓.

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, …

[𝑥𝑥𝑘𝑘−1 , 𝑏𝑏𝑘𝑘−1 ], 𝑠𝑠𝑠𝑠 𝑓𝑓(𝑎𝑎𝑘𝑘−1 )𝑓𝑓(𝑥𝑥𝑘𝑘−1 ) > 0


[𝑎𝑎𝑘𝑘 , 𝑏𝑏𝑘𝑘 ] = �
[𝑎𝑎𝑘𝑘−1 , 𝑥𝑥𝑘𝑘−1 ], 𝑠𝑠𝑠𝑠 𝑓𝑓(𝑎𝑎𝑘𝑘−1 )𝑓𝑓(𝑥𝑥𝑘𝑘−1 ) < 0

𝑎𝑎𝑘𝑘 𝑓𝑓(𝑏𝑏𝑘𝑘 ) − 𝑏𝑏𝑘𝑘 𝑓𝑓(𝑎𝑎𝑘𝑘 )


𝑥𝑥𝑘𝑘 =
𝑓𝑓(𝑏𝑏𝑘𝑘 ) − 𝑓𝑓(𝑎𝑎𝑘𝑘 )

142
Andrés Pérez

EJEMPLO: hallar una aproximación de la raíz 𝑥𝑥 ∗ del siguiente polinomio

𝑃𝑃(𝑥𝑥) = 𝑥𝑥 2 − 1

sabiendo que 𝑃𝑃(0)𝑃𝑃(4) < 0.

Extremo izquierdo inicial: 𝑎𝑎1 = 0

Extremo derecho inicial: 𝑏𝑏1 = 4

Criterio de parada: 4 iteraciones

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)

f_a=a^2-1; %evaluamos f(a1)

f_b=b^2-1; %evaluamos f(b1)

x=(a*f_b-b*f_a)/(f_b-f_a); %primer termino x_k

f_x=x^2-1; %evaluamos f en la falsa posicion

a=[a]; %inicializamos el vector a

b=[b]; %inicializamos el vector b

x=[x]; %inicializamos el vector x

N=[1]; %inicializamos el vector N


for k=2:maxi

143
MATLAB Orientado a la matemática aplicada

if f_a*f_x<0

a_new=a(k-1); %nuevo extremo izquierdo

b_new=x(k-1); %nuevo extremo derecho

else

a_new=x(k-1); %nuevo extremo izquierdo

b_new=b(k-1); %nuevo extremo derecho

end

f_a_new=a_new^2-1; %evaluamos f(a_new)

f_b_new=b_new^2-1; %evaluamos f(b_new)

x_new=(a_new*f_b_new-b_new*f_a_new)/(f_b_new-f_a_new); %calculamos la falsa

%posicion

f_x_new=x_new^2-1; %evaluamos f en la falsa posicion

a=[a, a_new]; %agrandamos el vector a

b=[b, b_new]; %agrandamos el vector b

x=[x, x_new]; %agrandamos el vector x

N=[N, k]; %agrandamos el vector N

end

informe=[N', a', b', x'];

EJEMPLO (continuación):

>> [informe]=met_falsa_posicion(0,4,4)

informe =

1.0000 0 4.0000 0.2500

2.0000 0.2500 4.0000 0.4706

3.0000 0.4706 4.0000 0.6447

4.0000 0.6447 4.0000 0.7705

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.

ESQUEMA ITERATIVO: emplear la sucesión {𝑥𝑥𝑘𝑘 } dada por

𝑥𝑥0 (primer punto inicial)

𝑥𝑥1 (segundo punto inicial)

𝑥𝑥𝑘𝑘−1 𝑓𝑓(𝑥𝑥𝑘𝑘 ) − 𝑥𝑥𝑘𝑘 𝑓𝑓(𝑥𝑥𝑘𝑘−1 )


𝑥𝑥𝑘𝑘+1 = , 𝑘𝑘 = 1,2, …
𝑓𝑓(𝑥𝑥𝑘𝑘 ) − 𝑓𝑓(𝑥𝑥𝑘𝑘−1 )

EJEMPLO: aproximar la raíz 𝑥𝑥 ∗ del polinomio

𝑃𝑃(𝑥𝑥) = 𝑥𝑥 3 − 0.2𝑥𝑥 2 − 0.2𝑥𝑥 − 1.2

estando 𝑥𝑥 ∗ en el intervalo [1,1.5].

Primer punto inicial: 𝑥𝑥0 = 1

Segundo punto inicial: 𝑥𝑥1 = 1.5

Criterio de parada: cota 𝜖𝜖 =

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}) |

f_x0=x0^3-0.2*x0^2-0.2*x0-1.2; %imagen f(x_{0})

145
MATLAB Orientado a la matemática aplicada

f_x1=x1^3-0.2*x1^2-0.2*x1-1.2; %imagen f(x_{1})

x2=(x0*f_x1-x1*f_x0)/(f_x1-f_x0);

f_x2=x2^3-0.2*x2^2-0.2*x2-1.2; %imagen f(x_{2})

est1=abs(x1-x0);

est2=abs(x2-x1);

k=2; %hasta ahora tenemos dos terminos

x=[x1, x2]; %inicializamos el vector de terminos

est=[est1, est2]; %inicializamos el vector de estimacion

f=[f_x1, f_x2]; %inicializamos el vector de imagenes

N=[1, 2]; %inicializamos el vector N

while abs(f(k))>=cota %se refiere a f(x_{k}), NO confundir con f(2)

f_a=x(k-1)^3-0.2*x(k-1)^2-0.2*x(k-1)-1.2; %imagen del termino x_{k-1}

f_b=x(k)^3-0.2*x(k)^2-0.2*x(k)-1.2; %imagen del termino x_{k}

x_new=(x(k-1)*f(k)-x(k)*f(k-1))/(f(k)-f(k-1)); %nuevo termino x_{k+1}

f_x_new=x_new^3-0.2*x_new^2-0.2*x_new-1.2; %imagen f(x_{k+1})

est_new=abs(x_new-x(k)); %estimacion | x_{k+1} - x_{k} |

k=k+1; %aumentamos el contador

x=[x, x_new]; %agrandamos el vector x


est=[est, est_new]; %agrandamos el vector est

f=[f, f_x_new]; %agrandamos el vector f

N=[N, k]; %agrandamos el vector N

end

informe=[N', x', est', f'];

146
Andrés Pérez

EJMPLO (continuación):

>> [informe]=met_secante(1,1.5,0.000023)

informe =

1.0000 1.5000 0.5000 1.4250

2.0000 1.1481 0.3519 -0.1797

3.0000 1.1876 0.0394 -0.0448

4.0000 1.2006 0.0131 0.0023

5.0000 1.2000 0.0006 -0.0000

6.0000 1.2000 0.0000 -0.0000

Comandos predefinidos en MATLAB


Para hallar el cero de una función, MATLAB habilita el comando fzero, el cual es un M-Fichero
cuyo algoritmo usa una combinación de los métodos de bisección, secante e interpolación
cuadrática inversa. La sintaxis para este comando es

>>[x,fval,exitflag,output]=fzero(‘ f ’,x0)

donde los argumentos de entrada son

o f: función a estudiar, la cual debe introducirse entre comillas


o x0: escalar o vector de dos elementos. Si es un escalar, es interpretado como un punto
inicial del método iterativo a emplear. Si es un vector de dos elementos, digamos
x0=[a,b], MATLAB lo considera como el intervalo inicial del método iterativo (y debe
cumplirse que f(a)f(b)<0).

Mientras que los argumentos de salida son

o x: aproximación del cero de f


o fval: valor de la función f en x
o exitflag: condición de salida del comando fzero. Los posibles valores son
 1 si la función converge a la solución x
 -1 si el algoritmo fue por la función de salida
 -3 NaN o Inf si la función toma estos valores en el algoritmo
 -4 si la función toma valores complejos en el algoritmo
 -5 si el comando fzero converge a un punto singular
o output: contiene información acerca de la optimización. Los posibles valores son
 output.algorithm algoritmo usado
 output.funcCount Nº de evaluaciones de la función

147
MATLAB Orientado a la matemática aplicada

 output.intervaliterations Nº de iteraciones hechas para hallar un intervalo


 output.iterations Nº de iteraciones en la bésque del cero de f
 output.message mensaje de salida

EJEMPLO: iniciando en el punto 𝑥𝑥0 = 0.7854 hallar el cero de la función

𝑓𝑓(𝑥𝑥) = 𝑠𝑠𝑠𝑠𝑠𝑠(𝑥𝑥) − 𝑐𝑐𝑐𝑐𝑐𝑐(𝑥𝑥)

>> [x,fval,exitflag,output]=fsolve('sin(x)-cos(x)',0.7854)

Optimization terminated: first-order optimality is less than options.TolFun.

x=

0.7854

fval =

-3.3307e-015

exitflag =

output =

iterations: 1

funcCount: 4

algorithm: 'trust-region dogleg'

firstorderopt: 4.7103e-015

message: 'Optimization terminated: first-order optimality is less than

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 𝑓𝑓(𝑥𝑥�)).

Formalmente, un problema de interpolación polinomial se especifica como sigue: dados 𝑛𝑛 + 1


pares (𝑥𝑥0 , 𝑦𝑦0 ), (𝑥𝑥1 , 𝑦𝑦1 ), … , (𝑥𝑥𝑛𝑛 , 𝑦𝑦𝑛𝑛 ), siendo todos los 𝑥𝑥𝑖𝑖 distintos entre si, y 𝑦𝑦𝑖𝑖 = 𝑓𝑓(𝑥𝑥𝑖𝑖 ) para
alguna función 𝑓𝑓; encontrar un polinomio 𝑃𝑃𝑛𝑛 (𝑥𝑥) de grado ≤ 𝑛𝑛 tal que

𝑃𝑃𝑘𝑘 (𝑥𝑥𝑖𝑖 ) = 𝑦𝑦𝑖𝑖 , 𝑖𝑖 = 0,1,2, … , 𝑛𝑛

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 𝑓𝑓(𝑥𝑥�) ≈ 𝑃𝑃𝑛𝑛 (𝑥𝑥� ).

A continuación, estudiaremos seis formas de calcular el polinomio interpolante.

Forma de Lagrange
Lagrange demostró que el polinomio interpolante viene dado por

𝑃𝑃𝑛𝑛 (𝑥𝑥) = 𝑦𝑦0 𝐿𝐿𝑛𝑛,0 (𝑥𝑥) + 𝑦𝑦1 𝐿𝐿𝑛𝑛,1 (𝑥𝑥) + ⋯ + 𝑦𝑦𝑛𝑛 𝐿𝐿𝑛𝑛,𝑛𝑛 (𝑥𝑥)

donde para cada 𝑘𝑘 = 0,1,2, … , 𝑛𝑛


𝑛𝑛
𝑥𝑥 − 𝑥𝑥𝑖𝑖
𝐿𝐿𝑛𝑛,𝑘𝑘 (𝑥𝑥) = �
𝑥𝑥𝑘𝑘 − 𝑥𝑥𝑖𝑖
𝑖𝑖=0
𝑖𝑖≠𝑘𝑘

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

m=length(x); %cantidad de nodos m=n+1 (se cuantan los n+1 nodos)

149
MATLAB Orientado a la matemática aplicada

L_n=zeros(m); %damos forma el vector que almacenara los valores L_{n,k}

for k=1:m %en cada iteracion k se calcula L_{n,k-1} evaluado en x_new


fac=1;

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;

for k=1:m %evaluamos el polinomio interpolante en x_new

suma=suma+y(k)*L_n(k);

end

f_new=suma;

EJEMPLO: de una función 𝑓𝑓, conocemos la información de la tabla siguiente.

𝒙𝒙 0.1 0.3 0.4 0.6

𝒇𝒇(𝒙𝒙) 0.32 0.33 0.34 0.45

Interpolar 𝑓𝑓(0.35) usando un polinomio interpolante 𝑃𝑃3 (𝑥𝑥)

>> x=[0.1 0.3 0.4 0.6];

>> y=[0.32 0.33 0.34 0.45];

>> [f_new]=forma_lagrange(x,y,0.35)

f_new =

0.3329

Así, 𝑓𝑓(0.35) ≈ 𝑃𝑃3 (0.35) = 0.3329.

150
Andrés Pérez

Forma modificada de Lagrange


La forma de Lagrange del polinomio interpolante es atractiva para propósitos teóricos. Sin
embargo se puede escribir en una forma que se vuelva eficiente para el cálculo computacional,
además de ser numéricamente más estable. De allí surgén la forma modificada y la forma
barcéntrica de Lagrange.

Primeramente, definimos el polinomio auxiliar


𝑛𝑛

𝑙𝑙(𝑥𝑥) = �(𝑥𝑥 − 𝑥𝑥𝑖𝑖 )


𝑖𝑖=0

Definimos los pesos baricéntricos como


𝑛𝑛
1
𝜔𝜔𝑘𝑘 = � , 𝑘𝑘 = 0,1,2, … , 𝑛𝑛
𝑥𝑥𝑘𝑘 − 𝑥𝑥𝑖𝑖
𝑖𝑖=0
𝑖𝑖≠𝑘𝑘

La forma modificada del polinomio de Lagrange se escribe como


𝑛𝑛
𝜔𝜔𝑘𝑘
𝑃𝑃𝑛𝑛 (𝑥𝑥) = 𝑙𝑙(𝑥𝑥) � 𝑦𝑦
𝑥𝑥 − 𝑥𝑥𝑗𝑗 𝑗𝑗
𝑗𝑗=0

CÓDIGOS:

Para el cálculo de los pesos baricéntricos

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

m=length(x); %cantidad de nodos m=n+1 (se cuentan los n+1 nodos)

W=zeros(1,m); %damos forma el vector de 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

Para la interpolación (aquí se utiliza la función pesos_baricentricos)

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

m=length(x); %cantidad de nodos m=n+1 (se cuentan los n+1 nodos)

L=1;

for k=1:m

L=L*(x_new-x(k));

end

[W]=pesos_baricentricos(x);

suma=0;

for k=1:m %evaluamos el polinomio interpolante en x_new

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 𝑇𝑇

𝑻𝑻(𝑲𝑲) 100 150 320 400 500 600

𝑩𝑩(𝒄𝒄𝒄𝒄𝟑𝟑 ⁄𝒎𝒎𝒎𝒎𝒎𝒎) -160 -35 -4.2 9.0 16.9 21.3

¿Cuál es el segundo coeficiente virial a una temperatura 𝑇𝑇 = 450𝐾𝐾?

>> x=[100 200 300 400 500 600];

>> y=[-160 -35 -4.2 9.0 16.9 21.3];

>> [f_new]=forma_lagrange_modificada(x,y,450)

f_new =

13.8844

Forma baricéntrica de Lagrange


La forma baricéntrica del polinomio de Lagrange es

𝑦𝑦𝑖𝑖 , 𝑠𝑠𝑠𝑠 𝑥𝑥 = 𝑥𝑥𝑖𝑖



⎪ 𝜔𝜔
𝑃𝑃𝑛𝑛 (𝑥𝑥) = ∑𝑛𝑛𝑘𝑘=0 𝑥𝑥−𝑥𝑥𝑘𝑘 𝑦𝑦𝑘𝑘
⎨ 𝑘𝑘
𝜔𝜔𝑘𝑘 , 𝑠𝑠𝑠𝑠 𝑥𝑥 ≠ 𝑥𝑥𝑖𝑖
⎪ ∑𝑛𝑛
⎩ 𝑘𝑘=0 𝑥𝑥−𝑥𝑥𝑘𝑘

CÓDIGO:

Aquí se utiliza la función pesos_baricentricos

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=suma1/suma2; %evaluamos el polinomio interpolante en x_new

EJEMPLO: considere la siguiente tabla de vapor 𝐻𝐻2 𝑂𝑂 calentada a 200𝑀𝑀𝑀𝑀𝑀𝑀

𝒗𝒗(𝒎𝒎𝟑𝟑 ⁄𝒌𝒌𝒌𝒌) 0.10377 0.11144 0.1254

𝒔𝒔(𝒌𝒌𝒌𝒌⁄𝑲𝑲𝑲𝑲. 𝒌𝒌) 6.4147 6.5453 6.7664

Use interpolación polinomial para encontrar la entropía 𝑠𝑠 para un volumen


específico 𝑣𝑣 de 0.108 𝑚𝑚3 ⁄𝑘𝑘𝑘𝑘

>> x=[0.10377 0.11144 0.1254];

>> y=[6.4147 6.5453 6.7664];

>> [f_new]=forma_baricentrica_lagrange(x,y,0.108)

f_new =

6.4875

154
Andrés Pérez

Forma baricéntrica con nodos igualmente espaciados


La forma baricéntrica toma una forma especialmente simple cuando los nodos son igualmente
espaciados

𝑦𝑦𝑖𝑖 , 𝑠𝑠𝑠𝑠 𝑥𝑥 = 𝑥𝑥𝑖𝑖



⎪ 𝑛𝑛 𝑦𝑦𝑘𝑘
𝑃𝑃𝑛𝑛 (𝑥𝑥) = ∑𝑛𝑛𝑘𝑘=0(−1)𝑘𝑘 �𝑘𝑘 � 𝑥𝑥−𝑥𝑥
⎨ 𝑘𝑘
, 𝑠𝑠𝑠𝑠 𝑥𝑥 ≠ 𝑥𝑥𝑖𝑖
⎪∑𝑛𝑛 (−1)𝑘𝑘 �𝑛𝑛� 1
⎩ 𝑘𝑘=0 𝑘𝑘 𝑥𝑥−𝑥𝑥 𝑘𝑘

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

m=length(x); %cantidad de nodos m=n+1 (se cuentan los n+1 nodos)

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

f_new=suma1/suma2; %evaluamos el polinomio interpolante en x_new

155
MATLAB Orientado a la matemática aplicada

EJEMPLO: de una función 𝑓𝑓 conocemos los siguientes datos

𝒙𝒙 -0.5 0 0.5 1 1.5 2

𝒇𝒇(𝒙𝒙) 4.5 6 5.2 4.7 2.9 1

Tomando en cuenta que los nodos están igualmente espaciados interpole 𝑓𝑓(0.2)

>> x=[-0.5 0 0.5 1 1.5 2];

>> y=[4.5 6 5.2 4.7 2.9 1];

>> [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 )

+ ⋯ + 𝐶𝐶𝑛𝑛,𝑛𝑛 (𝑥𝑥 − 𝑥𝑥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 ⋯ 𝐶𝐶𝑛𝑛,𝑛𝑛

Para el cálculo de las diferencias divididas, se utiliza la fórmula recursiva

𝐶𝐶𝑖𝑖,0 = 𝑦𝑦𝑖𝑖 , 𝑖𝑖 = 0, 1 ,2, … , 𝑛𝑛


𝐶𝐶𝑖𝑖,𝑗𝑗−1 − 𝐶𝐶𝑖𝑖−1,𝑗𝑗−1
𝐶𝐶𝑖𝑖,𝑗𝑗 = , 𝑗𝑗 = 1, 2, … , 𝑛𝑛, 𝑖𝑖 = 𝑗𝑗, … , 𝑛𝑛
𝑥𝑥𝑖𝑖 − 𝑥𝑥𝑖𝑖−𝑗𝑗

CÓDIGOS:

Para la matriz de diferencias divididas

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

m=length(x); %cantidad de nodos m=n+1

n=m-1;

C=zeros(m); %damos forma a la matriz de diferencias divididas

%con el siguiente bucle llenamos la primera columna de la matriz C

for i=1:m

C(i,1)=y(i); %aqui se calcula C_{i,0}

end

%con el siguiente bucle llenamos el resto de la triangular inferior de la matriz C

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

Para la interpolación (aquí se utiliza la función diferencias_divididas)

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

m=length(x); %cantidad de nodos m=n+1


157
MATLAB Orientado a la matemática aplicada

[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

f_new=suma; %evaluamos el polinomio interpolante en x_new

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

Pesos 7.5 10.25 15 16 18 21

Determine el peso de los bebés a los 6 meses de vida

>> x=[0 2 5 8 10 12];

>> y=[7.5 10.25 15 16 18 21];

>> [f_new]=forma_newton(x,y,6)

f_new =

15.4564

Forma de Newton con nodos igualmente espaciados


Si tenemos nodos igualmente espaciados (de paso ℎ) y 𝑥𝑥 = 𝑥𝑥0 + 𝑠𝑠 ∙ ℎ, entonces la forma de
Newton del polinomio interpolante adquiere la forma
𝑛𝑛
𝑠𝑠
𝑃𝑃𝑛𝑛 (𝑥𝑥) = � � � 𝑘𝑘! ℎ𝑘𝑘 𝐶𝐶𝑘𝑘,𝑘𝑘
𝑘𝑘
𝑘𝑘=0

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

𝑠𝑠 𝑠𝑠(𝑠𝑠 − 1)(𝑠𝑠 − 2) … (𝑠𝑠 − (𝑘𝑘 − 1))


� �=
𝑘𝑘 𝑘𝑘!

CÓDIGOS:

Para el número combinatorio extendido

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);

Para la interpolación (aquí se utilizan las funciones diferencias_divididas y combinatorio_ext)

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

m=length(x); %cantidad de nodos m=n+1

[C]=diferencias_divididas(x,y);

h=abs(x(1)-x(2)); %distancia entre nodos consecutivos

s=(x_new-x(1))/h; %s es el numero tal que x_new=x(1)+s*h

suma=0;

for k=1:m

[combi]=combinatorio_ext(s,k-1); %numero combinatorio extendido C_{s,k} (pues s es

%real)

suma=suma+combi*factorial(k-1)*h^(k-1)*C(k,k);

end

f_new=suma; %evaluamos el polinomio interpolante en x_new

EJEMPLO: de una función 𝑓𝑓, conocemos los siguientes datos

𝒙𝒙 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7

𝒇𝒇(𝒙𝒙) 3 3.1 3.2 3.3 3.4 4.5 4.6 4.7

Interpolar 𝑓𝑓(0.57)

>> x=[0:0.1:0.7];

>> y=[3 3.1 3.2 3.3 .34 4.5 4.6 4.7];

>> [f_new]=forma_newton_2(x,y,0.57)

f_new =

6.4180

160
Andrés Pérez

Comandos predefinidos en MATLAB


Para calcular los coeficientes del polinomio interpolador 𝑃𝑃𝑛𝑛 (𝑥𝑥) que pasa por los 𝑛𝑛 + 1 puntos
(𝑥𝑥0 , 𝑦𝑦0 ), (𝑥𝑥1 , 𝑦𝑦1 ), … , (𝑥𝑥𝑛𝑛 , 𝑦𝑦𝑛𝑛 ), se MATLAB ofrece el comando

>>p = polyfit(x,y,n)

Siendo los argumentos de entrada

• x: vector fila que almacena los valores 𝑥𝑥0 , 𝑥𝑥1 , … , 𝑥𝑥𝑛𝑛


• y: vector fila que almacena los valores 𝑦𝑦0 , 𝑦𝑦1 , … , 𝑦𝑦𝑛𝑛
• n: grado del polinomio

Y los argumento de salida es

• p: vector fila con los coeficientes del polinomio interpolador

Mas precisamente, p arroja los n+1 coeficientes de 𝑃𝑃𝑛𝑛 (𝑥𝑥) en sentido decreciente

𝑝𝑝(𝑥𝑥) = 𝑝𝑝1 𝑥𝑥 𝑛𝑛 + 𝑝𝑝2 𝑥𝑥 𝑛𝑛−1 + ⋯ + 𝑝𝑝𝑛𝑛 𝑥𝑥 + 𝑝𝑝𝑛𝑛+1

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)

EJEMPLO: la altura ℎ(𝑡𝑡) alcanzada en tiempo 𝑡𝑡 por un fluido, en un cilindro recto,


ha sido medida cada 5 segundos obteniéndose los siguientes valores

𝒕𝒕 0 5 10 15 20

𝒉𝒉(𝒕𝒕) 0.6350 0.1336 0.4410 1.3572 0.2822

Aproximar la altura del fluido a los 16 segundos

>> x=[0 5 10 15 20];

>> y=[0.6350 0.1336 0.4410 1.3572 0.2822];

>> p=polyfit(x,y,4)

p=

-0.0002 0.0045 -0.0238 -0.0745 0.6350

Para interpolar h(16), evaluamos p(16)

161
MATLAB Orientado a la matemática aplicada

>> polyval(p,16)

ans =

1.4269

A continuación, visualizamos el gráfico del polinomio interpolante

>> t=[0:0.1:20];

>> u=polyval(p,t);

>> plot(t,u)

162
Andrés Pérez

EJERCICIOS 8

1. Resuelva las siguientes ecuaciones con el método indicado


a) 𝑥𝑥 − cos(𝑥𝑥) = 0, punto fijo, 𝑥𝑥0 = 0.8, 𝜀𝜀 = 0.0023
b) 𝑥𝑥 2 − 1 = 0, bisección, 𝑎𝑎1 = −0.25, 𝑏𝑏1 = 1.25, siete iteraciones
c) 𝑥𝑥𝑒𝑒 −𝑥𝑥 = 0, Newton, 𝑥𝑥0 = −0.4, 𝛿𝛿 = 0.005
d) −1536 + 6272𝑥𝑥 − 11328𝑥𝑥 2 + 11872𝑥𝑥 3 − 7952𝑥𝑥 4 + 3528𝑥𝑥 5 −
1036𝑥𝑥 6 + 194𝑥𝑥 7 − 21𝑥𝑥 8 + 𝑥𝑥 9 = 0, Euler, 𝑥𝑥0 = 2.2
e) 𝑥𝑥 3 cos(𝑥𝑥) − 𝑥𝑥𝑥𝑥𝑥𝑥𝑥𝑥(2𝑥𝑥) + 1, Newton-bisección, 𝑥𝑥0 = 1.5, 𝑎𝑎 = 1, 𝑏𝑏 = 2,
𝛿𝛿 = 0.012
f) 𝑐𝑐𝑐𝑐𝑐𝑐(𝑥𝑥) cosh(𝑥𝑥) − 1 = 0, falsa posición, 𝑎𝑎 = 3𝜋𝜋⁄2 , 𝑏𝑏 = 2𝜋𝜋, cinco
iteraciones
g) 𝑥𝑥 5 − 100𝑥𝑥 4 + 3995𝑥𝑥 3 − 79700𝑥𝑥 2 + 794004𝑥𝑥 − 3160075 = 0, secante,
𝑥𝑥0 = 22.2, 𝑥𝑥1 = 17, 𝜀𝜀 = 0.0007

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

4. De una función 𝑓𝑓 conocemos los siguientes datos


𝒙𝒙 0 0.2 0.4 0.6

𝒇𝒇(𝒙𝒙) 0.656 -0.086 0.68 -1.799

Interpole 𝑓𝑓(0.27) mediante la forma de lagrange

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

𝑇𝑇 40 80 120 160 200

𝜌𝜌 1000.7794 1000.6427 1000.2805 999.7165 998.9700

Aproxime la densidad del agua 𝜌𝜌 a 50 mediante la forma modificada de


Lagrange.

6. 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
1941 3850771
1950 5034838
1961 7523999
1971 10721522
1981 14516735
1990 18105265
2001 23054210
2011 27227930

Aproxime la población venezolana en el año 1936 mediante la forma


baricentrica de Lagrange.

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

Aproxime la población venezolana en el año 1961 mediante la forma de


Newton.

164
Andrés Pérez

CAPÍTULO 9. COMPONENTES DE MATLAB

EL SOFTWARE BÁSICO MATLAB Y SUS


HERRAMIENTAS ADICIONALES
MATLAB, en su contenido básico, es un entorno integrado de trabajo que 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 a través de todo
tipo de gráficos de ingeniería y científicos.

También es posible con el módulo básico de MATLAB el desarrollo de algoritmos a través de un


lenguaje propio de programación que resulta ser abierto (integrable con C, Excel y Bases de
Datos), extensible (a través de las funcionalidades que aportan las librerías especializadas
complementarias) y de sintaxis similar al C (pero sin las dificultades técnicas de programación
que presenta C).

Asimismo, MATLAB integra un conjunto importante de herramientas básicas adicionales muy


útiles, entre las que destacan las siguientes:

MATLAB Report Generador


Permite la creación de informes estándar y personalizados de los algoritmos desarrollados en
MATLAB. Los informes pueden ejecutar comandos de MATLAB a medida que se van
procesando, lo cual nos ofrece la posibilidad de documentar nuestras pruebas con MATLAB a
medida que las realizamos.

MATLAB Compiler Suite


Está formado por: MATLAB Compiler, MATLAB C/C++ Math Library, MATLAB C/C++ Graphics
Library. Convierte, de forma automática, los ficheros de MATLAB que contienen los algoritmos
que hemos desarrollado (en lenguaje de MATLAB) a código C y C++, bien para poder distribuir
aplicaciones independientes o para mejorar el rendimiento del algoritmo. Se trata por tanto de
un generador de código C a partir de los programas de MATLAB.

MATLAB Runtime Server


Permite distribuir cualquier aplicación desarrollada con MATLAB de forma sencilla mediante
un runtime.

MATLAB Web Server


Permite incorporar funciones de MATLAB (matemáticas y gráficas) a nuestras aplicaciones
web.

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

MATLAB Excel Builder


Permite transformar algoritmos desarrollados en MATLAB a funciones de Excel y usar estas
funciones desde Excel sin necesidad de tener MATLAB.

TOOLBOXES DE MATLAB DE APLICACIÓN EN


MATEMÁTICA GENERAL
Una faceta muy importante de MATLAB son los toolboxes añadidos, que consisten en
paquetes de ampliación al software básico y que son aplicables a determinados campos de la
ciencia. A continuación se relacionan los toolboxes más interesantes de MATLAB.

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.

Extended Symbolic Math


Incluye todas las características de Symbolic Math, proporciona soporte completo para la
programación en Maple y permite el acceso completo a las librerías matemáticas de Maple.

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.

Excel Link Toolbox


Integra toda la potencia de MATLAB con Microsoft Excel permitiendo la transferencia de datos
en los dos sentidos, ejecutando cualquier función de MATLAB desde una fórmula de Excel o
utilizando Excel desde MATLAB como editor de vectores.

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

Partial Differential Equation Toolbox


De aplicación en la solución de problemas en muchos campos de la física y la ingeniería:
transferencia de calor, flujo en medios porosos, medios conductores, cálculo de esfuerzos y
fatigas en estructuras, campos magnéticos, etc. Usa el método FEM (Método de los Elementos
Finitos que incorpora el algoritmo de triangulación de Delaunay) para solucionar ecuaciones
diferenciales parciales.

Neural Network Toolbox


Proporciona las versiones más comunes de paradigmas y algoritmos para el diseño y
simulación de redes neuronales. Incluye bloques de Simulink para poder usar esta toolbox en
aplicaciones de control y simulación de sistemas. Incluye ejemplos de control predictivo y
control adaptativo. Entre las aplicaciones más comunes de las redes neuronales tenemos las
técnicas de clasificación, predicción, filtrado, optimización, reconocimiento de patrones,
aproximación a funciones, interpretación y clasificación de imágenes.

TOOLBOXES DE MATLAB DE ADQUISICIÓN DE


DATOS
Dentro de los toolboxes de MATLAB tienen un papel importante los relativos a la adquisición
de datos de otras aplicaciones. En esta categoría destacan los siguientes:

Data Acquisition Toolbox


Permite el control y la comunicación con una gran variedad de dispositivos de adquisición de
datos estándares en la industria (National Instruments, Agilent, Computer Boards, etc.).
Incluye kit de adaptación para el desarrollo de interfaces para nuevos dispositivos.

Instrument Control Toolbox


Permite la comunicación con instrumentos (analizadores de espectro, osciloscopios,
generadores de funciones) y dispositivos externos. Soporta los protocolos de comunicación
GPIB (IEEE-488, HPIB) y VISA (Serial, GPIB, VXI, GPIB-VXI) y proporciona soporte avanzado de
puerto serie (RS-232, RS-422, RS485).

Curve Fitting Toolbox


Mediante un interface gráfico podemos realizar ajustes de curvas, visualizando y
preprocesando los datos y usando una amplia gama de modelos y métodos de ajuste.

TOOLBOXES DE MATLAB PARA PROCESADO DE


SEÑALES
Otra campo importante en el que MATLAB presenta herramientas es el procesado de señales.
Destacan los siguientes toolboxes:

167
MATLAB Orientado a la matemática aplicada

Signal Processing Toolbox


Conjunto de funciones para analizar, manipular y visualizar señales y sistemas lineales.
Incorpora un interface para diseñar y analizar de forma interactiva filtros digitales (FIR and IIR).

Filter Desgin Toolbox


Complementa la Signal Processing Toolbox añadiendo técnicas avanzadas de filtros digitales
para aplicaciones complejas de DSP en tiempo real. También proporciona funciones para
simplificar el diseño de filtros de punto fijo y para el análisis de los efectos de “quantization”.

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.

System Identification Toolbox


Proporciona herramientas para crear modelos matemáticos de sistemas dinámicos, de los
cuales desconocemos su comportamiento, a partir de los datos de entrada observados y de los
de salida. De aplicación en una gran variedad de campos.

TOOLBOXES DE MATLAB PARA PROCESADO DE


IMÁGENES
También en el área del procesado de imágenes MATLAB presenta los siguientes toolboxes:

Image Processing Toolbox


Entorno interactivo que proporciona un conjunto de herramientas para el análisis y procesado
de imágenes con un amplio abanico de aplicaciones. Algunas de estas herramientas son:
operaciones geométricas, análisis de imagen, eliminación de ruidos, filtros lineales, filtros 2-D,
transformaciones, ROI (Region-of-Interest), operaciones binarias, conversiones de color,
procesado por “neighborhood” y por bloques, etc.

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

TOOLBOXES DE MATLAB EN EL ÁREA FINANCIERA


Las finanzas es otro campo en el que MATLAB ha desarrollado toolboxes. Los más importantes
son los siguientes:

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.

Financial Time Series Toolbox


Conjunto de herramientas para el análisis de series temporales en mercados financieros:
análisis y transformación de datos, análisis técnico (osciladores, índices, estocásticos,
indicadores), visualización.

Financial Derivatives Toolbox


Permite la creación y gestión de portafolios con diversos instrumentos financieros, así como
calcular sus precios y sensibilidades. Proporciona análisis “hedging”.

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.

SIMULACIÓN DE SISTEMAS CON SIMULINK Y SUS


HERRAMIENTAS ADICIONALES
Otro de los campos tratados especialmente por MATLAB, y de gran aplicación en la ingeniería,
es la automatización del diseño mediante simulación de sistemas dinámicos. Los productos
más importantes en el área de simulación de sistemas son:

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.

Simulink Report Generator


Permite la documentación automática mediante la creación de diversos informes de los
modelos desarrollados en Simulink.

Simulink Performance Tools


Es un conjunto de 4 herramientas que gestionan y optimizan el rendimiento de Simulink en las
simulaciones de modelos de gran escala: Simulink Accelerator, Simulink Model Profiler,
Simulink Model Differencing y Simulink Model Coverage.

Requirements Management Interface


Nos permite coordinar, registrar e implementar los cambios en el diseño de especificaciones a
lo largo del ciclo de desarrollo. Esta herramienta nos permite asociar los requerimientos del
proyecto con modelos de Simulink, diagramas de Stateflow y algoritmos de MATLAB.

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

CDMA Reference Blockset


Conjunto de bloques de Simulink para crear y simular modelos de sistema de comunicaciones
inalámbricos bajo el estándar IS-95A.

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.

Dials & Gauges Blockset


Monitoriza señales y parámetros de simulación mediante elementos gráficos (instrumentos de
aspecto real). Nos permite añadir a los modelos de Simulink estos elementos gráficos y así
visualizar el entorno que estamos modelando.

Nonlinear Control Design Blockset


Proporciona una aproximación al diseño de sistemas de control basada en una optimización
que ajusta los parámetros de acuerdo con unas restricciones en la respuesta transitoria
temporal del sistema fijadas por el usuario.

Power System Blockset


Permite modelar y simular en Simulink sistemas eléctricos de potencia (generación,
transmisión, distribución) y su control (motores, transformadores, tiristores, diodos, etc.)

Sym Mechanics Blockset


Permite modelar y simular de forma sencilla en Simulink los componentes de un sistema
mecánico, ver y animar su movimiento, estudiar su cinemática y dinámica (directa e inversa),
etc.

GENERACIÓN DE CÓDIGO DE SIMULINK


La generación de código en el campo de la simulación es otra de las facetas tratadas por
MATLAB. Entre los generadores de código tenemos:

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.

Real-Time Workshop Embedded Coder


Genera código C en tiempo real optimizado en velocidad de ejecución y con unos mínimos
requerimientos de memoria para usarlo en sistemas “embedded” de tiempo real. Este código
puede ser descargado directamente al procesador target. El código generado es comparable al
código optimizado escrito a mano.

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:

Developer’s Kit for Texas Instruments DSP


Este software facilita el diseño, análisis e implementación de aplicaciones
para DSPs de Texas Instruments al integrar MATLAB, Simulink y Real-Time
Workshop con el software (Code Composer Studio, RTDX) y targets (C5000,
C6000, C6701EVM, DSKs) de Texas Instruments.

Motorola DSP Developer’s Kit.


Este software integra MATLAB y Simulink con el software de Motorola
(Motorola’s Suite 56) para el desarrollo de aplicaciones basadas en DSPs de
Motorola (familias 56300 y 56600).

Xilinx’s FPGA System Generator for Simulink


Este software permite el desarrollo de aplicaciones DSP de alto rendimiento para
los FPGAs de Xilinx (Spartan II y Virtex/E) usando MATLAB y Simulink (Xilinx
Blockset). Entre otras prestaciones genera código VHDL a partir de los modelos de
Simulink.

PROTOTIPAJE
En el campo del prototipaje MATLAB dispone de las siguientes aplicaciones:

Real-Time Windows Target


Permite ejecutar los modelos de Simulink y Stateflow en tiempo real en un PC con Windows.
Durante la ejecución podemos comunicarnos con una amplia variedad de tarjetas I/O (más de
100), lo cual nos permite controlar sensores, actuadores y otros dispositivos para poder
experimentar, desarrollar y testear nuestros sistemas tiempo-real.

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

xPC Target Embedded Option


Esta opción nos permite que el modelo desarrollado se ejecute en el PC que actúa como target
sin necesidad de que esté conectado al PC host. Esta opción es la adecuada cuando nuestro
modelo está finalizado y lo entregamos para su funcionamiento en producción.

ANÁLISIS Y DISEÑO DE SISTEMAS DE CONTROL


El análisis y diseño de los sistemas de control es otro de los campos de la ingeniería que cubre
MATLAB con diversos toolboxes. Entre los más importantes tenemos los siguientes:

Control System Toolbox


Proporciona un entorno interactivo y gráfico para el modelado, análisis y diseño de sistemas
de control, utilizando tanto los métodos clásicos como los modernos: root locus, loop shaping,
pole placement y LQR/LQG regulation. Soporta sistemas LTI, SISO, MIMO y diversos métodos
de conversión.

Fuzzy Logic Toolbox


Herramienta interactiva para el desarrollo de algoritmos de lógica difusa aplicable a
reconocimiento e identificación de imágenes con patrones difusos, procesado de señales y
desarrollo de procesos inteligentes y adaptativos.

Robust Control Toolbox


Herramientas para el diseño y modelado de sistemas de control multivariable mediante
técnicas H∞ donde la robustez del sistema es un factor crítico.

μ-Analysis and Synthesis Toolbox


Algoritmos para μ aplicables al análisis de rendimiento y de robustez en sistemas con
incertidumbres en el modelado y parametrización.

LMI Control Toolbox


Algoritmos de optimización para la resolución de inecuaciones matriciales lineales (LMI)
presentes en control robusto, en control multiobjetivo, etc.

Model Predictive Control Toolbox


Completo conjunto de herramientas para implantar estrategias de control predictivo.

Model-Based Calibration Toolbox


Conjunto de herramientas para la calibración de sistemas motrices complejos. Cubre las tres
fases de la calibración: planificación de la prueba física en el dinamómetro, utilización de los
datos medidos para producir una serie de modelos de respuesta que reflejen el
comportamiento del motor y empleo de estos modelos para calibrar el sistema motriz.

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.

A. Gilat. (2005). Matlab: Una introducción con ejemplos practicos. Ohio.

H. Moore. (2007). MATLAB para ingenieros. México.

G. Borrell i Nogueras. (2008). Introdución informal a Matlab y Octave. Calella.

J. García. (2005). Aprenda Matlab 7.0 como si estuviara en primero. Madrid.

R. Fernández. (2012). MATLAB: Fundamentos y/o aplicaciones. Barcelona.

B. Hunt. (2001). A Guide to MATLAB for Beginners and Experienced Users. Cambridge.

J. Benitez. (2007). Introducción a MATLAB. Valencia.

J. Schmidt. (2011). GNU Octave. Birmingham.

C. Gil; M. Franco. (2005). ANÁLISIS ESTADÍSTICO EN MATLAB. Bogotá.

J. Saenz. (2005). CALCULO DIFERENCIAL. Barquisimeto

J. Saenz. (2009). CALCULO INTEGRAL. Barquisimeto.

J. Saenz. (2013). CALCULO VECTORIAL. Barquisimeto.

J. Stewart. (2006). Cálculo. Sao Paulo.

J. Rodríguez ; M. Rodríguez; I. Huerta. Espacios con producto interno. Barquisimeto.

D. Malik. (2007). Introduction to Abstract Algebra. Creighton.

H. Taha. (2004). INVESTIGACIÓN DE OPERACIONES . México

F. Hillier; G. Lieberman. (1997). INTRODUCCIÓN A LA INVESTIGACIÓN DE OPERACIONES.


México.

R. Thierauf; R. Grosse. (1981). Toma de decisiones por medio de INVESTIGACIÓN DE


OPERACIONES. Méico.

L. Rodríguez. (2007). PROBABILIDAD Y ESTADÍSTICA BÁSICA PARA INGENIEROS. Guayaquil.

D. Wackerly; W. Mendehall; R. Scheaffer. (2002). ESTADÍSTICA MATEMÁTICA CON


APLICACIONES. México.

A. Quarteroni; F. Saleri. (2006). CÁLCULO CIENTÍFICO con MATLAB y Octave. Milano.

INE (Instituto Nacional de Estadística de la República Bolivariana de Venezuela)(2011). XIV


CENSO NACIONAL DE POBLACIÓN Y VIVIENDA: Resultados Básicos. Carácas.

174
Andrés Pérez

INE (Instituto Nacional de Estadística de la República Bolivariana de Venezuela) (2013). XIV


CENSO NACIONAL DE POBLACIÓN Y VIVIENDA: Resultados por Entidad Federal y Municipio
del Estado Lara. Carácas.

INE (Instituto Nacional de Estadística de la República Bolivariana de Venezuela) (2013). XIV


CENSO NACIONAL DE POBLACIÓN Y VIVIENDA: Resultados por Entidad Federal y Municipio
del Estado Miranda. Carácas

INE (Instituto Nacional de Estadística de la República Bolivariana de Venezuela) (2013). XIV


CENSO NACIONAL DE POBLACIÓN Y VIVIENDA: Resultados por Entidad Federal y Municipio
del Estado Carabobo. Carácas

INE (Instituto Nacional de Estadística de la República Bolivariana de Venezuela) (2013). XIV


CENSO NACIONAL DE POBLACIÓN Y VIVIENDA: Resultados por Entidad Federal y Municipio
del Estado Distrito capital. Carácas

INE (Instituto Nacional de Estadística de la República Bolivariana de Venezuela) (2013). XIV


CENSO NACIONAL DE POBLACIÓN Y VIVIENDA: Resultados por Entidad Federal y Municipio
del Estado Aragua. Carácas

175

Vous aimerez peut-être aussi