49
Aplicaciones Numéricas en Investigación de Operaciones 3 Prof. Gonzalo Müller [email protected] Postgrado de Investigación de Operaciones Facultad de Ingeniería Universidad Central de Venezuela

Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 1: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

Aplicaciones Numéricas en Investigación de Operaciones3

Prof. Gonzalo Müller

[email protected]

Postgrado de Investigación de Operaciones

Facultad de Ingeniería

Universidad Central de Venezuela

Page 2: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 3: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

Clase anteriorClase anterior

� Limitaciones computacionales

� Overflow Error

� Underflow Error

� Errores

� de redondeo

� de truncamiento(discretización de un problema real)

� Números en Matlab

Page 4: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 5: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

... ...

...

Page 6: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 7: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 8: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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}

Page 9: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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}

Page 10: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 11: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 12: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 13: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 14: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 15: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 16: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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’

?

Page 17: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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.

Page 18: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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 %

Page 19: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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 %

Page 20: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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 %

Page 21: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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.

Page 22: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 23: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 24: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 25: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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.

Page 26: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 27: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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.

Page 28: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 29: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 30: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 31: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 32: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

� 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

Page 33: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 34: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 35: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

� 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

Page 36: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

� 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

Page 37: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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)

Page 38: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 39: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 40: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 41: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 42: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

� 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

Page 43: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

� 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

Page 44: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 45: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

� 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

Page 46: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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

Page 47: Clase 3 Aplicaciones Numéricas en Investigación de 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.

Page 48: Clase 3 Aplicaciones Numéricas en Investigación de 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.

Page 49: Clase 3 Aplicaciones Numéricas en Investigación de Operaciones

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