Upload
gmullerb
View
728
Download
1
Embed Size (px)
DESCRIPTION
Clase 3 de Aplicaciones Numéricas en Investigación de Operaciones, Prof. Gonzalo Müller, [email protected], Facultad de Ingeniería, UCV
Citation preview
Aplicaciones Numéricas en Investigación de Operaciones3
Prof. Gonzalo Müller
Postgrado de Investigación de Operaciones
Facultad de Ingeniería
Universidad Central de Venezuela
Clase anteriorClase anterior
� Bits y Bytes
� Sistemas de Numeración
� Sistema Binario de Numeración
� Números:
� Punto Fijo.
� Punto flotante
� Precisión Sencilla
� Precisión Doble
� Redondeo
Clase anteriorClase anterior
� Limitaciones computacionales
� Overflow Error
� Underflow Error
� Errores
� de redondeo
� de truncamiento(discretización de un problema real)
� Números en Matlab
Clase anteriorClase anterior
� Gráficas de Línea: plot, plot3
� Gráficas 3D: surf, mesh, meshgrid
� Ajustando la gráfica: axis, grid.
� Documentando la gráfica: *label, title, legend.
�� Otras gráficas: scatter, hist, stem, stairs, bar, pie,
scatter3
� Gráficas Múltiples: subplot
� Gráfica de una función: fplot
� Apuntador a función: function_handle
Otros tipos de datos en Otros tipos de datos en MatlabMatlab
� Arreglo de celdas (Cell arrays): constituyen un arreglo donde cada elemento del arreglo es un arreglo.
...
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 5
... ...
...
Otros tipos de datos en Otros tipos de datos en MatlabMatlab
� Para construir un arreglo de celdas:
� Se coloca la colección entre llaves, {}.
variable = {arreglo1 arreglo2; ...}
� Se utiliza la función cell:
variable = cell(tamaño1, tamaño2, ...)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 6
variable = cell(tamaño1, tamaño2, ...)
� Para acceder a un elemento del arreglo de celdas se
debe utilizar las llaves
variable{indice1, indice2, ...}
Otros tipos de datos en Otros tipos de datos en MatlabMatlab
Ejemplo:
A = [2 1; 3 5; 6 2]
B = [3 4; 1 5]
C = [2.5; 3.1; 2.4]
D = 2.5
3 4
1 5
2 1
3 5
6 2
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 7
D = 2.5
E = {A B; C D}
J = E{1,1} * E{1,2}
2.5
3.1
2.4
2.5
Crea arreglo de celdas
Accede a arreglo de
celdas
Otros tipos de datos en Otros tipos de datos en MatlabMatlab
� Estructuras: vector de celdas donde cada elemento se
accede a través de un nombre (y no un número):
…
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 8
{1} {N}
…
Otros tipos de datos en Otros tipos de datos en MatlabMatlab
� Estructuras: vector de celdas donde cada elemento se
accede a través de un nombre (y no un número):
…
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 9
…
Cada elemento de la estructura se le llama campo
Nombre1 NombreN{1} {N}
Otros tipos de datos en Otros tipos de datos en MatlabMatlab
� Para construir una estructura:
� A cada campo se le da un nombre y se asigna un
valor:
variable.campo1 = valor1
variable.campo2 = valor2
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 10
variable.campo2 = valor2
…
variable.campoN = valorN
Otros tipos de datos en Otros tipos de datos en MatlabMatlab
� Se utiliza la función struct:
variable = struct(campo1, valor1,
campo2, valor3 ..., campoN, valorN)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 11
campo2, valor3 ..., campoN, valorN)
� Para acceder a un campo de la estructura se debe
utilizar el nombre del campo:
variable.campoK
Otros tipos de datos en Otros tipos de datos en MatlabMatlab
Ejemplo:
3 4
1 5
2 1
3 5
6 2
2.5
3.1
2.4
2.5
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 12
F.matriz1 = [2 1; 3 5; 6 2]
F.matriz2 = [3 4; 1 5]
F.vector1 = [2.5; 3.1; 2.4]
F.valor1 = 2.5
H = F.matriz1* F.matriz2
Crea estructura
Accede a la estructura
Otros tipos de datos en Otros tipos de datos en MatlabMatlab
� Texto: vector fila donde cada elemento es un carácter.
MATLAB
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 13
Otros tipos de datos en Otros tipos de datos en MatlabMatlab
� Texto: vector fila donde cada elemento es un carácter.
MATLAB
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 14
M A T L A B
Otros tipos de datos en Otros tipos de datos en MatlabMatlab
� Texto: vector fila donde cada elemento es un carácter.
MATLAB
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 15
Ejemplo:
Text1 = ‘MATLAB’
Text2 = [‘M’ ‘A’ ‘T’ ‘L’ ‘A’ ‘B’]
M A T L A B
Otros tipos de datos en Otros tipos de datos en MatlabMatlab
� Como sería un arreglo de textos?
‘MATLAB’
‘LINUX’ ?
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 16
‘LINUX’
‘C++’
‘2009’
?
Archivos en Archivos en MatlabMatlab
� Matlab trabaja básicamente con dos tipos de archivos:
� Archivo de variables Matlab.
� Permite almacenar múltiples variables.
� La extensión mat le indica a Matlab que es unarchivo de variables (no es de texto).
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 17
archivo de variables (no es de texto).
� Archivo de texto.
� Solo se puede almacenar una matriz.
� La extensión del archivo puede ser cualquiera menosmat.
Archivos en Archivos en MatlabMatlab
� El archivo de texto de matrices debe tener el siguienteformato:
� Espacios en blancos separan los elementos de cada fila.
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 18
A11 A22 ... A1n
A12 ... A2n
...
Am1 Am2 ... Amn
El archivo puede contener cometarios comenzando con el carácter %
Archivos en Archivos en MatlabMatlab
� El archivo de texto de matrices debe tener el siguienteformato:
� Espacios en blancos separan los elementos de cada fila.
� Cada línea representa una fila.
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 19
A11 A22 ... A1n
A12 ... A2n
...
Am1 Am2 ... Amn
El archivo puede contener cometarios comenzando con el carácter %
Archivos en Archivos en MatlabMatlab
� El archivo de texto de matrices debe tener el siguienteformato:
� Espacios en blancos separan los elementos de cada fila.
� Cada línea representa una fila.
� Cada fila debe tener la misma cantidad de elementos
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 20
A11 A22 ... A1n
A12 ... A2n
...
Am1 Am2 ... Amn
El archivo puede contener cometarios comenzando con el carácter %
Archivos en Archivos en MatlabMatlab
� Las principales funciones para manejar archivos:
� Escritura:
� save.
� dlmwrite.
� Lectura:
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 21
� Lectura:
� load.
� dlmread.
Escritura de archivos en Escritura de archivos en MatlabMatlab
� save: guarda los valores de las variables indicadas enun archivo de variables Matlab.
save(‘archivo.mat’, ‘variable1’, ...,
‘variableN’)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 22
� Si no se indican variables se almacena todas lasvariables de trabajo existentes.
whos –file archivo lista las variables definidas, sus tipos y sus tamaños en el archivo indicado
Escritura de archivos en Escritura de archivos en MatlabMatlab
� dlmwrite: guarda una matriz en un archivo de texto.
dlmwrite(‘archivo’,variable)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 23
Escritura de archivos en Escritura de archivos en MatlabMatlab
� dlmwrite: guarda una matriz en un archivo de texto.
dlmwrite(‘archivo’,variable)
Se puede guarda una matriz en un archivo de texto
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 24
Se puede guarda una matriz en un archivo de texto con un delimitador específico:
dlmwrite(‘archivo’,variable,
‘delimitador’)
la coma , es el carácter por defecto en dlmwrite
Lectura de archivos en Lectura de archivos en MatlabMatlab
� load: cargar matrices o variables desde un archivo de variables Matlab.
load(‘archivo.mat’)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 25
� Cada variable almacenada es restaurada en memoriacon el nombre que fue almacenada.
� Si la variable existe en memoria, se sobrescribe.
Lectura de archivos en Lectura de archivos en MatlabMatlab
� load: cargar matrices o variables desde un archivo de variables Matlab.
load(‘archivo.mat’)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 26
� Cada variable almacenada es restaurada en memoriacon el nombre que fue almacenada.
� Si la variable existe en memoria, se sobrescribe.
Se puede indicar cuales variables cargar del archivo:
load(‘archivo.mat’,’var1’,…,’varN’)
Lectura de archivos en Lectura de archivos en MatlabMatlab
� Si se desea se puede almacenar las variables contenidas en una archivo de datos Matlab en una variable:
variable = load(‘archivo.mat’,…,’varN’)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 27
La variable resultante es una estructura donde cadacampo corresponde con una variable del archivo conel mismo nombre con el que fue almacenada.
Lectura de archivos en Lectura de archivos en MatlabMatlab
� dlmread : Carga la matriz contenida en un archivo de texto en una variable especifica:
variable = dlmread( ‘archivo.ext’)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 28
Lectura de archivos en Lectura de archivos en MatlabMatlab
� dlmread : Carga la matriz contenida en un archivo de texto en una variable especifica:
variable = dlmread( ‘archivo.ext’)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 29
Si el archivo de texto está delimitado con un carácter específico se debe emplear:
variable = dlmread(
‘archivo.ext’,’delimita’)
Lectura de archivos en Lectura de archivos en MatlabMatlab
Es posible cargar un rango de la matriz almacenada:
variable = dlmread(
‘archivo.ext’,’delimita’, ‘rango’)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 30
rango:
� vector:[FilaSup ColumnaIzq FilaInf ColumnaDer]
Ejemplo: [0 1 1 2]
� rango notación hoja de calculo A1..Z9
la función importdata permite leer data con
encabezados y colocarlo en un estructura
Archivos en Archivos en MatlabMatlab
� Las matrices pueden ser definidas en otrosprogramas siempre que se exporte correctamente lainformación.
� Excel, Access, etc.
� Las funciones xlsread y xlswrite permite trabajar conarchivos Excel directamente.
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 31
archivos Excel directamente.
Es posible importar archivos de otros
formatos utilizando el Import Wizard
Existen otras funciones para el manejo de archivo que
permiten establecer un mayor detalle o trabajar a bajo nivel
� Construir una función en Matlab que dado el nombre
del archivo retorne un vector con:
� el número del expediente con la máxima oferta
(utilizar la función max).
� el número del expediente con la mínima oferta� el número del expediente con la mínima oferta
(utilizar la función min).
El archivo tiene el siguiente formato:
#expediente1 oferta1
… …
#expedienteN ofertaN
Archivos en Archivos en MatlabMatlab
� print: almacena en un archivo la última imagen generada:
print(‘archivo.ext’,’-dFormato’)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 33
Los principales formatos: Formato -dFormato
BMP mono -dbmpmono
BMP 24 bit -dbmp
JPEG -djpeg
PDF -dpdf
PGM -dpgm
PNG -dpng
PPM -dppm
TIFF -dtiff
Archivos en Archivos en MatlabMatlab
� La función print también sirve para imprimir el gráfico
print()
Imprime un gráfico en la impresora por defecto.
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 34
Imprime un gráfico en la impresora por defecto.
� Si es necesario imprimir en un impresora especificase debe indicar su nombre:
print(‘-Pnombre’)
� Construir una función en Matlab que dado el nombre
del archivo de origen y del archivo de salida:
� realice un histograma con las ofertas.
� guarde la imagen en el archivo de salida.
� retorne la media de las ofertas (utilizar la función� retorne la media de las ofertas (utilizar la función
mean)
El archivo de origen tiene el siguiente formato:
#expediente1 oferta1
… …
#expedienteN ofertaN
� El manejo de archivos es de gran utilidad.
� Persistencia de dato.
� Interconexión de procesos.
� ...
Archivos en Archivos en MatlabMatlab
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 36
Proceso 1
Herramienta 1
Datos
Entrada
Datos
SalidaProceso 2
Herramienta 2Resultado
Salida en Salida en MatlabMatlab
� disp: presenta información en la ventana de comandos
disp(‘texto’)
disp(variable)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 37
disp(variable)
Ejemplo:
disp(‘MATLAB’)
disp(Text1)
disp(A)
disp(F)
Salida en Salida en MatlabMatlab
� Si se requiere concatenar texto y el valor de variables
es necesario utilizar las instrucciones:
� num2str: convierte número a string
� int2str: convierte entero a string
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 38
disp([‘texto’ num2str(variable)])
Ejemplo:
disp([‘Resultado: ’ num2str(H)])
Entrada en Entrada en MatlabMatlab
� input: solicita un dato de entrada del usuario.
variable = input(‘texto’)
Ejemplo:
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 39
Ejemplo:
k = input(‘Valor inicial:’)
Entrada en Entrada en MatlabMatlab
� Si el dato de entrada del usuario es un string es
necesario incluir un parámetro adicional:
variable = input(‘texto’, ‘s’)
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 40
Ejemplo:
arc = input(‘Nombre del archivo:’, ‘s’)
FuncionesFunciones
� Una función puede devolver más de un valor:
function [salida1,salida2,...] =
nombre(parámetro1, parámetro2, ... )
...
salida = ...
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 41
� Llamada:[variable1,variable2,…]=nombre(argumento1,…
...
salida2 = ...
...
nombre.m
� Construir una función en Matlab que dado el nombre
del archivo:
� retorne el número del expediente con la máxima
oferta (utilizar la función max).
� retorne el número del expediente con la mínima� retorne el número del expediente con la mínima
oferta (utilizar la función min).
� colocar textos sobre el progreso de las operaciones.
El archivo tiene el siguiente formato:#expediente1 oferta1
… …
#expedienteN ofertaN
� Construir una función en Matlab que retorne el
máximo, el mínimo y la media aritmética de los
elementos de un vector de entrada:
� Máximo
� Mínimo
oferta1
…
� Utilizar las funciones matemáticas que ofrece
Matlab: mean, max y min.
� Colocar textos sobre el progreso de las operaciones.
� Mínimo
� Media
…
ofertaN
FuncionesFunciones
� Una función puede no devolver ningún valor:
function nombre(parámetro1, parámetro2, ... )
...
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 44
nombre.m
� Construir una función en Matlab que dado el nombre
del archivo de origen y del archivo de salida:
� realice un histograma con las ofertas.
� guarde la imagen en el archivo de salida.
� colocar textos sobre el progreso de las operaciones.� colocar textos sobre el progreso de las operaciones.
El archivo de origen tiene el siguiente formato:
#expediente1 oferta1
… …
#expedienteN ofertaN
� Construir una función en Matlab para evaluar:
y = x3*sen(x) – 1/x
� Construir una función para graficar un función en R,
esta debe aceptar como parámetros de entrada:
� Función, x mínima, x máxima.� Función, x mínima, x máxima.
� Título.
� Archivo de salida del gráfico.
� Probar con la función definida en la primera parte
� Colocar textos sobre el progreso de las operaciones.
� Construir una función en Matlab que dado:
� nombre de archivo 0 (entrada).
� nombre de archivo 1 (salida).
� nombre de archivo 2 (salida).
� Calcule y almacene en el archivo 1 (.mat) elArchivos
� Calcule y almacene en el archivo 1 (.mat) el
máximo, el mínimo y la media aritmética de los
elementos de la matriz (n x 2) del archivo 0.
� Realice un grafico scatter y guarde en el archivo 2.
� La función debe colocar textos sobre el progreso de las
operaciones.
ResumenResumen
� Otros tipos de datos en Matlab
� Arreglo de celdas
� Estructuras
� Texto
� Archivos en Matlab
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 48
� Archivos en Matlab
� Archivos Matlab (.mat)
� Archivo de texto
� Escritura:
� save.
� dlmwrite.
ResumenResumen
� Lectura:
� load.
� dlmread.
� Archivo de gráfico: print
� Salida en Matlab: disp
Aplicaciones Numéricas en Investigación de Operaciones – Prof. Gonzalo Müller – Clase 3 – GM – 49
� Salida en Matlab: disp
� Entrada en Matlab: input
� Funciones
� más de un retorno: function [salida1,salida2,...] = …
� sin retorno: function nombre(parámetro1,…