Sei sulla pagina 1di 12

PROGRAMACIN LINEAL

DIANA MILENA ESPITIA PARDO


MAGDA SIRLEY GOMEZ CABALLERO
JOHANA PRADA RIAO
LUISA FERNADA RAMIREZ CAMPUZANO

MIGUEL ANGEL RINCON


DOCENTE

FUNDACIN UNIVERSITARIA PANAMERICANA


ADMINISTRACIN DE EMPRESAS
2009

TALLER DE PROGRAMACIN LINEAL


1. Qu es MATLAB?

MATLAB (abreviatura de MATrix LABoratory, "laboratorio de matrices") es un


software matemtico que ofrece un entorno de desarrollo integrado (IDE) con
un lenguaje de programacin propio (lenguaje M). Est disponible para las
plataformas Unix, Windows y Apple Mac OS X. Tiene como objetivo la
manipulacin de matrices, la representacin de datos y funciones, la
implementacin de algoritmos, la creacin de interfaces de usuario (GUI) y la
comunicacin con programas en otros lenguajes y con otros dispositivos
hardware. El paquete MATLAB dispone de dos herramientas adicionales que
expanden sus prestaciones, a saber, Simulink (plataforma de simulacin
multidominio) y GUIDE (editor de interfaces de usuario - GUI). Adems, se
pueden ampliar las capacidades de MATLAB con las cajas de herramientas
(toolboxes); y las de Simulink con los paquetes de bloques (blocksets).Es un
software muy usado en universidades y centros de investigacin y desarrollo.
2. Principales funciones internas de MATLAB?

Funciones matemticas
Funcionales especiales y elementales

Funciones gamma, beta y elpticas.


Transformacin de sistemas de coordenadas.
Matriz identidad y otras matrices elementales.
Matrices de Hilbert, Toeplitz, Vandermonde, Hadamard, etc.
Partes reales, imaginarias y complejas conjugadas.
Funciones trigonomtricas y de potencias.

Algebra lineal numrica

Valores propios y descomposicin de matrices.


Funciones generales de evaluacin de matrices.
Determinantes, normas, rangos, etc.
Matrices inversas y factorizacin de matrices.
Matriz exponencial, logartmica y races cuadradas.

Polinomios e interpolacin

Interpolacin 1-D y 2-D.


Construccin polinomial.
Interpolacin por splines cbicos.
Diferenciacin de polinomios.
Evaluacin de polinomios.
Multiplicacin y divisin de polinomios.
Residuos de polinomios y residuos.

Mtodos numricos no lineales

Bsqueda de ceros en funciones de una nica variable.


Minimizacin de funciones de una o ms variables.
Resolucin numrica de integrales.
Solucin numrica de ecuaciones diferenciales ordinarias.

Estadstica y anlisis de Fourier

Convolucin 1-D y 2-D.


Filtros digitales 1-D y 2-D.
Transformadas de Fourier 1-D y 2-D y su inversa.
Coeficientes de correlacin y matrices de covarianza.
Deconvolucin.
Magnitudes y ngulos de fase.
Funciones max, min, sum, mean y otras funciones de estadstica bsica.

Operaciones algebricas y lgicas

Suma, resta, multiplicacin, divisin y potencias de matrices.


Matrix traspuesta.
Operadores lgicos AND, OR, NOT y XOR.

Utilidades

Gestin y mantenimiento de errores.


Conversin de tipos de datos Fortran.
Funciones de fecha y hora.
Clasificacin de matrices.

EJEMPLO DE ESCRITURA EN EL LENGUAJE DE MATLAB


PRINCIPALES FUNCIONES MATEMTICAS
FUNCIONES
DESCRIPCIN
EJEMPLO
sin, cos, tan
Funciones
sin(pi/2)
trigonomtricas
asin, acos, atan
Funciones
acos(1)
trigonomtricas
inversas
sinh, cosh, tanh
Funciones
tanh(2)
hiperblicas
asinh, acosh,
Funciones
asin(1)
atanh
hiperblicas inversas
log
Logaritmo natural
log(2.7183)
log2
Logaritmo en base
log2(16)
log10
dos
log10(100)
Logaritmo en base

SOLUCIN
1
0
0.9640
1.5708
1
4
2

exp
inv
sqrt
abs
imag, real

diez
Funcin exponencial
Inverso multiplicativo
Raizcuadrada
Valor absoluto
Parte Real, Parte
Imaginaria

exp(1)
inv(0.2)
sqrt(4)
abs(-1)
imag(i), real
(1)

2.71783
5
2
1
1, 1

3. Como es la manipulacin de matrices en MATLAB? Descripcin.

En Matlab no hay sentencias de dimensin ni de declaracin de tipos, la


memoria se gestiona de forma automtica. Una de las formas de
introducir una matriz es por listado explcito de sus elementos. Los
elementos de una misma fila se separan por espacios blancos o por
comas y las distintas columnas se separan por punto y coma. La matriz
queda delimitada por corchetes:

A = [2 1 0 ; 1 2 1 ; 0 1 2].

Con la orden A(i : j , k : m) extraemos la submatriz de A formada por


las filas desde la i hasta la j, y columnas desde la k hasta la m. Probar
con

A(1 : 2 , 1 : 2), A(3 , :) A(: , 2 : 3) A(: , [1 3]) y A( : ).

La expresin 1 : 4 representa el vector fila [1 2 3 4]. Los nmeros no


tienen que ser necesariamente enteros ni el incremento siempre igual
a uno. Probar por ejemplo con:

0.2 : 0.2 : 1.3 y 5 : 1 : 1.

Las matrices grandes pueden construirse a partir de otras ms


pequeas. Si quisiera aadir la fila b = [5 : 1 : 3] a la ltima fila de A
escribira [A; b]. Si quisiera aadir b a la ultima columna debera
escribir [A b0] ya que las matrices que se vayan pegando han de
tener dimensiones coherentes.

4. Algebra Matricial con MATLAB, operaciones y funciones con matrices,


soluciones de ecuaciones lineales.

Operaciones con matrices

Las operaciones entre matrices son las habituales, y solamente habr que
cuidar las dimensiones.
suma
A+B

resta
AB

multiplicacin divisin potencia traspuesta


A_B
A\B
A ^n
A0

Si b es un vector columna
A\b resuelve el sistema Ax = b.

La divisin A\B es equivalente en cuanto a resultado a inv (A)_B, pero no en


cuanto al nmero de operaciones por ser distintos procesos.

Funciones de Matrices
MATLAB posee una gran cantidad de funciones matriciales. De las ms
comunes tenemos:

min(A), max(A) - dan el mnimo y mximo respectivamente por columnas


de A
sum(A), prod(A) - producen la suma y producto respectivamente por
columnas de A
norm(A,p) - norma p de la matriz A donde p=1,2, inf
eig(A) - vector cuyos componentes son los valores propios de A
det(A) - el determinante de A
inv(A) - la matriz inversa de A

En MATLAB: Si queremos resolver un sistema de ecuaciones lineales, lo


primero que debemos hacer es escribirlo en la forma matricial Ax = b. Por
ejemplo consideremos el sistema de ecuaciones:
2x y z = 2
2x + 3y z = 6
x + 2y + 3z = 15
Para resolverlo en MATLAB, primero definimos la matriz A y el vector b, as:
>> A=[2 -1 -1; 2 3 -1; 1 2 3]
>> b=[2 6 15]
(donde el smbolo indica que queremos la transpuesta de este vector,
para que sea un vector columna)
Ya habiendo definido la matriz A y el vector b, slo resta usar una de las
rutinas de MATLAB.
Segn nuestros conocimientos, si queremos encontrar un vector x tal que
Ax = b, entonces ese vector debe ser x = A1b. Esto puede ser hecho en
MATLAB as.
>> x = inv(A)*b
Con lo cual obtenemos:
x=
3.1429e+000
1.0000e+000
3.2857e+000
Otra manera de llegar a esta solucin es escribiendo A(1) en lugar de
inv(A); sin embargo la manera ms sencilla de hacerlo en MATLAB es
escribiendo:
>> x = A\b

Donde el smbolo \ (divisin a izquierda), se usa en MATLAB para obtener la


solucin del problema Ax = b.
De los varios mtodos explicados hasta aqu para la solucin de sistemas
lineales usando MATLAB, el que ms se usa es el ltimo, principalmente
porque llega a la solucin sin necesidad de hallar la inversa de la matriz A
(en realidad se usa factorizacin QR), lo que desde el punto de vista
computacional es bastante ventajoso. Se puede observar que el uso de este
ltimo mtodo procedimiento mejora la velocidad de clculo de MATLAB en
cerca de un 50%.
Por ltimo slo resta decir que en el caso de trabajar con matrices y
vectores de componentes enteras o racionales, es conveniente expresar los
resultados de esta misma manera para evitar la prdida de cifras
significativas. En MATLAB esto se puede hacer con la instruccin format rat,
con la que se aproximan todos los resultados a la fraccin ms cercana. Para
nuestro
ejemplo:
>> format rat
>> x = A\b
Produce el resultado:
x=
22/7
1
23/7
Que es la solucin exacta del sistema lineal.
5. Tipos de Arreglos:

Arreglos (Arrays)
Si se desea calcular el seno de " 0 a 1 " con incrementos de 0.25, se pueden
capturar los valores y despus mandar llamar el seno de la funcin.
Seno de 0 a 1 con incrementos de 0.25
x

= [ 0, 0.25, 0.5, 0.75, 1 ]

Se pueden omitir las comas cuando se capturan los nmeros.


Con los nmeros capturados, se obtiene el seno de la variable x escribiendo
simplemente :
sin (x)
MATLAB opera en radianes, donde 2 = 360 grados.
Ahora se requiere obtener el coseno de cero a uno con incrementos de 0.01; lo
que equivale a capturar 101 elementos.

Para evitar capturarlos a mano, MATLAB nos permite crear un vector de


la siguiente manera :
Variable = ( Valor inicial : Con incrementos de : Valor final )
R = (0 : 0.01 : 1)
COS ( R )

Ahora se puede obtener el coseno de la variable R.

Hagamos el siguiente vector :


Y = ( 0 : 1 : 10)
Si queremos saber cual es el cuarto elemento del vector ponemos :
Y (4)
Si nos interesan los elementos 5 al 10 :
Y( 5 : 10 )
Otras opciones son :
Y( 1 : 2 : 9) Toma los elementos del 1 al 9 con incrementos de 2
Y([ 1, 3, 7,10]) Toma los elementos 1, 3, 7 y 10 del array
MODIFICACIONES DE LOS ARREGLOS
Si el noveno elemento del array debi ser el nmero 20 en vez de 8,
corregimos de la siguiente manera :
Y(9) = 20
Otra forma de hacer arreglos, es con linspace :
Linspace ( Valor inicial , Valor final , Nmero de elementos )
Regresando al ejemplo del coseno de 0 a 1 con incremento de 0.01
escribimos :
Note el uso de comas (#, #, #)
Z = linspace(0 , 10, 101)
Linspace describe una relacin lineal de espaciado entre sus elementos.
Logspace describe una relacin de espaciado " logartmica ".

Logspace ( Primer exponente , ltimo exponente , Cantidad de


valores )
Logspace (0 , 2 , 10 )
Hemos creamos un arreglo que comienza en 10 0 y termina en 10 2,
conteniendo 10 valores.

Otra forma de crear arreglos es :


x1 = 1 : 5
con incremento de 1

Arreglo de 1 a 5,

x2 = 10 : 5 : 100

Arreglo de 10 a 100, con incrementos de 5.

Si se quiere concatenar x1 y x2
C = [ x1 x2 ]
M ATE M TI C AS

C O N AR R E G L O S .

a=1:6

Define un vector de seis elementos con incrementos

de 1
b=1:2:

12

Vector de seis elementos con incremento de 2


Arreglos con escalares

Se le puede sumar o multiplicar un nmero a todo el arreglo, por ejemplo


a + 10

Suma de un escalar con un arreglo

a * 10

Multiplicacin de un escalar con un arreglo


Operaciones con arreglos

Para hacer la suma de los arreglos a y b, solamente escribimos :


a+b

La respuesta se guarda en ans :

Se pueden hacer operaciones como :


Z = 100 - 2 * a + b

La multiplicacin de arreglos se hace con ( . * ), ya que cuando se


utiliza el asterisco sin punto indica multiplicacin matricial, y adems
provoca un error.
Z = a .* b

La divisin tambin lleva un punto antes del signo, porque sino se utiliza
el punto nos referimos a la divisin matricial que es muy diferente.
Z = a ./ b
La siguiente operacin obtiene el cuadrado del arreglo " a ".
Z = a .^ 2

O RI E NTAC I N

D E AR R E G L O S

Si separamos cada elemento del arreglo con punto y coma tenemos un


arreglo de una sola columna :
a = [ 1; 2; 3; 4; 5; 6

Es necesario usar los corchetes, porque si no los usamos obtenemos el


ltimo valor que capturamos :
d = 1 ; 2; 30 ; 40 ; 50 ; 600 ; 1000
Para crear una columna con 20 elementos hacemos lo siguiente :
d = ( 1 : 1 : 20 )
y trasponemos el rengln a columna, es decir buscamos la transpuesta. (
')
e = d'
Que pasa si hacemos lo siguiente : ?
e'
Arreglos multidimensionales

En C, podemos crear arreglos de dos o ms dimensiones el lmite de


dimensiones, viene dado por el compilador. Su forma general de
declaracin es
tipo_dato variable [long ind 1][longindice 2]...[long indice N] donde
tipo_dato es el tipo de dato de los elementos del arreglo y long ind 1,
long ind 2...long ind N es la longitud de cada dimensin del arreglo.
Este tipo de arreglos no se utiliza muy frecuentemente debido a el
gran espacio en memoria que ocupan. Otra desventaja es que el
acceso a un arreglo multidimensional dura ms tiempo que el
requerido por uno del tipo unidimensional.

Cuando se pasan arreglos multidimensionales a funciones, se tiene


que declarar
todo excepto la primera dimensin. Por ejemplo:
#include<stdio.h>
funcion1(int multiarreglo[][3][[4][5])
{
.
}
main()
{
int m[2][3][4][5];
funcion(m[][3][4][5]);
{.
.
}
Claro que si se desea, se puede especificar tambin la longitud de la
primera
dimensin.
Inicializacin de arreglos con tamao
En C, podemos inicializar (dar un valor determinado a la variable
antes de usarla) arreglos globales y arreglos estticos locales en el
momento de declararlos. No es posible inicializar arreglos globales no
estticos.
Su forma general de inicializacin es tipo_dato variable [tamao 1]
[tamao2]...[tamao] = {lista de valores}; Lista de valores es un
conjunto de constantes, separadas comas, cuyo tipo es compatible
con tipo_dato. La primera constante se coloca en la primera posicin
del arreglo, la segunda constante en la segunda posicin, y as
sucesivamente.
Fjese que un punto y coma sigue a }.
A continuacin tenemos la inicializacin de un arreglo unidimensional:

int dgitos[5]={'0','1','2','3','4','5','6','7','8','9'};
En el caso de los arreglos unidimensionales de caracteres podemos
inicializarlos
abreviadamente con la forma:
char variable [tamao]="cadena";
6. Como se soluciona un sistema de Ecuacin lineal (Gauss Jordan) en

MATLAB.

Sistema de ecuaciones lineales


1.2 Mtodo de triangulacin de Gauss-Jordan con MatLab.
Ejemplo
Consideremos un sistema de ecuaciones en su forma matricial

la matriz aumentada del sistema de ecuaciones es:

Por comodidad se escriben en el Editor del MATLAB la matriz B


B=[0 3 1 4 2;
2 2 3 4 3;
4 2 4 5 1;
6.

1 0 1 0];

Esto significa que B=[B(i,j)] es una matriz de 4x5 . Por ejemplo B(1,1)=0,
B(4,1)=6
Para intercambiar las dos primeras filas de B se emplea la matriz elemental
E1

E1=[0 1 0 0;
1 0 0 0;
0 0 1 0;
0 0 0 1];
Se copia B y E1 en el MMATLAB y luego se hace
B1=E1*B ( ) Enter
B1 =
22343
03142
42451
61010

El pivot es B1(1,1)=2. Los ceros se consiguen con la matriz elemental E2, que
se contruye siguiendo el algoritmo de Gauss:
E2=[1 0 0 0;
0 1 0 0;
-2 0 1 0;
-3 0 0 1];
En efecto E2 es la matriz identidad, excepto
E2(3,1)= -B1(3,1)/B1(1,1) =-2
E2(4,1)= -B1(4,1)/B1(1,1)=-3
Se copia E2 en el MatLab y luego se hace
B2=E2*B1 ( ) Enter
B2 =
22343
03142
0 -2 -2 -3 -5
0 -5 -9 -11 -9
Por comodidad copiamos B2 al editor.
B2=[ 2 2 3 4 3;
0 3 1 4 2;
0 -2 -2 -3 -5;
0 -5 -9 -11 -9]

Potrebbero piacerti anche