Documente Academic
Documente Profesional
Documente Cultură
Programa Doctorado:
Economa
Enseanzas de postgrado:
Mster universitario en Economa
Mdulo terico:
Economa financiera cuantitativa y actuarial
Ampliacin de
informtica
ndice
Primera parte: Temas bsicos
Captulo 1: El entorno MATLAB
1.1 Introduccin
1.2 Introduccin de matrices en MATLAB
1.3 lgebra matricial
1.3.1 Operaciones aritmticas elementales con matrices
1.3.2 Operaciones aritmticas elementales con vectores
1.4 Matrices especiales
1.5 Rescate de elementos a partir de una matriz
1.6 Resolucin de sistemas de ecuaciones lineales
Captulo 4: Algoritmos
4.1 Estructuras de programacin: bucles y bifurcaciones
4.1.1 El bucle for
4.1.2 El bucle while
4.1.3 La bifurcacin condicional if
1.1 Introduccin
MATLAB (versin 6.1 o superiores) es un programa de clculo tcnico y
cientfico para el tratamiento de la informacin a travs de matrices
numricas. Una potente herramienta de clculo, til para realizar desde
elementales operaciones aritmticas hasta complejos algoritmos numricos.
Adems, MATLAB posee un sencillo lenguaje de programacin propio, vlido
para
automatizar
la
resolucin
de
un
problema
expresable
problema
requiera
la
combinacin
sucesiva
de
diferentes
Ampliacin de informtica
Acceso al programa
Para acceder al programa bastar pulsar dos veces en el icono de acceso
que aparece en el escritorio. A continuacin, veremos las caractersticas
bsicas del entorno MATLAB donde desarrollaremos nuestro trabajo.
La ventana de trabajo
La ventana de trabajo o escritorio aparecer inmediatamente al
comenzar una sesin con la aplicacin MATLAB. La configuracin elegida a
travs de la disposicin de diferentes barras y ventanas en la pantalla nos
permitir trabajar en un entorno similar a cualquier aplicacin general del
sistema operativo Microsoft Windows XP, donde la informacin general y el
rea de trabajo estn a nuestro alcance de forma intuitiva.
MATLAB
Captulo 1: El entorno
1 2
.
32
(1+sqrt(2))/3*pi^2
ans=
7.9424
1
Existen otras configuraciones posibles que cada usuario podr establecer segn sus propias
necesidades.
Ampliacin de informtica
sqrt(5);
la ventana de comando no muestra ninguna respuesta. Sin embargo se
almacenar el resultado en la variable ans, si ahora usamos el comando
who
aparecer un listado de las variables almacenadas en memoria indicando su
nombre. En este caso el listado se reduce a la variable ans, creada
anteriormente. Si ahora tecleamos
ans
ans=
2.2361
que corresponde a la raz cuadrada de 5.
Observemos que la constante est representada en MATLAB mediante
la variable pi, mientras que la funcin sqrt representa la raz cuadrada de
un nmero.
Asignacin de variables
Comenzaremos ilustrando algunas instrucciones de vital importancia en
el aprendizaje de MATLAB. A pesar de poder trabajar directamente con
expresiones numricas, resulta conveniente asignarlas a variables para
poder utilizarlas a lo largo de cada sesin y poder emplear sobre ellas el
formalismo algebraico. Con el fin de asignar un determinado valor numrico
(o
una
determinada
matriz
como
veremos
posteriormente)
una
MATLAB
Captulo 1: El entorno
especiales propias de MATLAB como son ans, pi, eps, inf, NaN, realmin,
realmax, y un largo etctera, cuyos nombres no podrn ser empleados por
el usuario como nombres de otras variables.
Finalmente, en el caso de que se necesite emplear ms de una
instruccin en la ventana de trabajo, podemos separarlas por medio de
comas (,) o puntos y comas (;) con lo que se ejecutarn todas las
instrucciones escritas en dicha lnea.
Veamos un ejemplo, en el que hemos de hallar el rea de una
circunferencia. En una sola lnea de la ventana de comandos, mediante la
sucesin de instrucciones
radio=2; area=pi*radio^2;
area
el sistema responder con
area
=12.5664
Ampliacin de informtica
MATLAB
Captulo 1: El entorno
whos
ofrece un listado de las variables definidas en el espacio de trabajo que
incluye informacin adicional sobre su nombre, sus dimensiones como
matriz, el tamao que ocupa en nmero de bytes empleados y si su clase,
es decir, el formato en el cual se almacena. Esta informacin est tambin
disponible en todo momento en el espacio de trabajo.
clear
elimina toda la informacin existente en el espacio de trabajo. Si
quisisemos eliminar slo una o varias variables existentes en el espacio de
trabajo, bastar aadirlas en una lista a continuacin, por ejemplo
clc
Ampliacin de informtica
clf
limpia la informacin grfica visualizada en la ventana de figuras activa,
pero no la cierra.
close
cierra la ventana de figuras activa, cuando exista.
MATLAB facilita al usuario la posibilidad de realizar cambios en las
instrucciones previamente introducidas en la ventana de comandos. Por
ello, conviene saber que las teclas de cursor disponibles en cualquier
teclado estndar nos permiten reproducir las instrucciones realizadas
previamente y, nos permite realizar los cambios deseados en la
instruccin actual evitando tener que rescribirla.
Recuperemos la lnea que calculaba el rea de una circunferencia de
radio
radio=2; area=pi*radio^2;
El formato numrico que MATLAB muestra, por defecto, contiene cuatro
cifras decimales. Existen otros formatos numricos disponibles. El ms
importante es el formato numrico de catorce cifras decimales que es el
utilizado internamente por MATLAB para realizar las operaciones de clculo.
Para acceder a este formato es suficiente teclear en la ventana de
instrucciones:
format long
area
area =
12.56637061435917
si volvemos a teclear la siguiente expresin, regresaremos al formato
habitual
format short
MATLAB
Captulo 1: El entorno
Una combinacin de teclas que resulta muy til es Ctrl+C. Estas dos
teclas pulsadas simultneamente interrumpe la ejecucin de cualquier tarea
que MATLAB est realizando en ese momento.
load datos
recuperaremos, en el formato con que se guard, las variables contenidas
en
Ampliacin de informtica
save matrices A B C
guarda las matrices A, B y C, en un archivo denominado matrices.mat.
Tambin pueden combinarse en dicha lista ambos tipos de variables
numricas, escalares y matrices, para guardarse en un mismo archivo, en
formato .mat. En cualquier caso sern consideradas matrices de orden
nxm .
Por ejemplo, si eliminamos las variables contenidas en el espacio de
trabajo con la instruccin clear, y a continuacin recuperamos la lnea
guardar
todo
el
espacio
de
trabajo
con
el
nombre
de
save sesion1
Obsrvese que para guardar con esta instruccin realmente todo el
espacio de trabajo, es deseable que ninguna de las variables que figuren en
l tenga, precisamente, el nombre sesion1. En tal caso podran crearse
conflictos nada agradables.
Es posible, opcionalmente, guardar archivos en formato ASCII y en doble
precisin aadiendo ciertas variantes.
10
MATLAB
Captulo 1: El entorno
cd datos_numericos
direcciona al directorio datos_numericos del directorio raz donde se inici
MATLAB, que previamente habramos creado con el Explorador .
Sistema de ayudas
Para finalizar este sencillo recorrido por las caractersticas bsicas del
entorno MATLAB vamos a dar un pequeo resumen de su sistema de
ayudas. MATLAB cuenta con un sistema de ayudas de fcil acceso que
puede ser requerido en cualquier momento por el usuario para consultar
cualquier cuestin sobre sus caractersticas y su funcionamiento.
Existen dos formas alternativas de pedir ayuda en MATLAB. La primera
de ellas consiste en abrir la opcin Help que figura en la barra de men de
la ventana de trabajo. Esta operacin presentar un men de ayudas que el
usuario deber explorar. Otro sistema alternativo para pedir ayuda consiste
11
Ampliacin de informtica
help
MATLAB proporcionar ayuda en lnea en la ventana de trabajo.
Es conveniente emplear esta instruccin cuando nos surjan dudas sobre
la utilizacin o no de ciertas instrucciones, variables, funciones, etc.
Supongamos que desconocemos la sintaxis que debemos emplear para
pedir ayudas especficas, en tal caso acudiremos al comando help que nos
mostrar los diferentes tpicos de ayudas.
Por ejemplo, si deseamos recibir informacin sobre la funcin propia de
MATLAB llamada sin, bastar escribir en la ventana de comandos
help sin
Igualmente aparece un texto explicativo acerca del sistema de ayudas
escribiendo
help help
Volveremos reiteradamente sobre la instruccin help. Finalmente cabra
sealar que la instruccin
demo
permite realizar una amplia demostracin acerca de las capacidades del
programa MATLAB. Tambin podemos acceder a ella a travs de la barra de
men, opcin Demos.
12
Captulo 1: El entorno
MATLAB
a12
a13
a21
a
31
a22
a23 L
a32
a33 L
a11
A aij
i1,2,...,m
j 1,2,...,n
M M
M
M
M M
am1 am2 am3
O
L
L
L
a1n
a2j L a2n
a3j L a3n
M M M
aij L
ain
M L
M
amj L amn
a1j
fila i-sima
mxn
a11
a
21
A a31
M
am1
mx1
13
Ampliacin de informtica
a1n
1xn
A a11
1x1
a.
A=[]
3 1 1
Una matriz A 1 3 1
1 1 3
A=[3 1 1; 1 -3 1; 1 1 -3]
o bien
B 2 1 2 , C
, d 2 3 9 1 , e 0.1
2 4
2 4 3
4
14
Captulo 1: El entorno
MATLAB
2
valor de la expresin: 1 e 5 20 23 1 .
3
e
Existen
dos
alternativas
vlidas
para
realizar
estas
operaciones
elementales:
a=(1+exp(2)/pi)^2/5-(20/3+sqrt(23))*1/exp(1)
o bien
a=((1+(exp(2)/pi))^(2/5))-((20/3)+sqrt(23))*(1/exp(1))
A pesar del desconocimiento inicial de alguna de estas expresiones,
recordemos una vez ms que podemos emplear la instruccin help para
pedir ayuda. Fijmonos bien en que el uso del parntesis elimina posibles
confusiones y resultados no deseados. As, podramos escribir help exp o
help sqrt.
15
Ampliacin de informtica
A+B
suma de matrices.
A*B
producto de matrices.
A^n
potencia n-sima de una matriz cuadrada.
A+k
suma un escalar k a todos los elementos de una matriz.
k*A
multiplica un escalar k por los elementos de una matriz.
A
traspuesta de una matriz.
det(A)
determinante de una matriz cuadrada.
inv(A)
inversa de una matriz cuadrada.
rank(A)
rango de una matriz de orden mxn.
A\B
divisin izquierda (similar a inv(A)*B).
B/A
divisin derecha (similar a B*inv(A)).
A.*B
producto, elemento a elemento, de dos matrices.
A./B
cociente, elemento a elemento, de dos matrices.
16
MATLAB
Captulo 1: El entorno
A.^n
potencia n-sima de los elementos de una matriz.
A.^B
potencia de los elementos de una matriz A cuyos exponentes son, elemento
a elemento, los exponentes dados por B.
size(A)
calcula el orden de una matriz.
[m, n]=size(A)
proporciona el orden en las variables escalares m y n, nmero de filas y
columnas, respectivamente, de una matriz A. Observemos que la funcin
[m, n]=size(A) permite extraer ms de una variable de salida tras su
aplicacin.
Cuando se trata de vectores, proporciona el valor max{m,n} de las filas
y columnas
length(e)
eig(A)
devuelve los valores propios o autovalores de una matriz cuadrada. La
instruccin
[V, D]=eig(A)
tiene doble argumento dando lugar a una matriz diagonal D formada por los
autovalores de la matriz A y a una matriz V cuyas columnas son sus
autovectores, de modo que se verifica la expresin V-1AV=D. Observemos
nuevamente la asignacin mltiple en la que en V se almacena una matriz
de autovectores y en D una matriz diagonal de autovalores.
diag(A)
proporciona un vector columna cuyos elementos son los pertenecientes a la
diagonal principal de una matriz A.
diag(A, k)
proporciona un vector columna formado por los elementos de la k-sima
diagonal de la matriz A (k es un entero positivo o negativo).
diag(v)
17
Ampliacin de informtica
escribe una matriz cuadrada cuya diagonal principal son los elementos del
vector v, el resto de sus elementos son ceros.
diag(diag(A))
obtiene una matriz cuadrada cuya diagonal coincide con la de una matriz
dada A.
diag(v, k)
es la matriz cuadrada de orden n+abs(k) donde los elementos del vector v
de n componentes que se sitan en la k-sima diagonal, siendo k un
nmero entero.
tril(A)
matriz triangular inferior que proporciona los elementos debajo de la
diagonal inferior de A.
tril(A, k)
matriz triangular inferior que proporciona los elementos por encima de la ksima diagonal inferior de A.
Estas dos ltimas instrucciones admiten una versin relativa a los
elementos de la diagonal superior que son
triu(A)
triu(A, k)
Ejemplo:
Calcular
los
autovalores
autovectores
de
la
matriz
2 1 1
2 3 4
1 1 2
eig(A)
ans =
-1.0000
3.0000
1.0000
son los autovalores de A, para obtener los autovectores guardando las
salidas de eig(A) en dos nuevas matrices V y D procedemos de la forma:
[V, D]=eig(A)
18
Captulo 1: El entorno
MATLAB
V=
-0.8018
-0.1543
0.5774
0.2673
0.7715
0.5774
0.5345
-0.6172
0.5774
D=
-4.0000
-4.0000
-1.0000
2 , B=
de las matrices: A= 0
, C= 1 3 y D= 2 1 .
1
3
0
2 1
1
a) DB2 .
b) BCt .
c) (CB)Dt .
d) det(ACt ) .
e) (AtC) 1 .
1 3 2
3 1 1
A 0 1 4 , B 1 2 0
1 2 0
2 1 1
bij .
19
Ampliacin de informtica
A y B,
/ bij .
2
2
a elemento, es decir cij aij bij .
cij aijbij .
1.3.2 Operaciones aritmticas elementales con vectores
Aunque los vectores constituyen un caso particular de las matrices,
veamos algunas operaciones elementales donde los vectores estn
especialmente involucrados. Si x xi i1,2,...,n e y yi i1,2,...,n son vectores
del mismo orden, pueden definirse de forma especfica, las siguientes
operaciones aritmticas entre vectores:
Producto escalar:
20
Producto de Kroneker:
Ejercicio.
x1
x1y1 .... x1y
n
n
xny1 .... xnyn
MATLAB
Captulo 1: El entorno
A1=1:20
nmeros enteros entre 1 y 20, en fila. Hemos utilizado el operador dos
puntos (:) que nos permite establecer un rango, en nuestro caso, de valores
enteros entre el 1 y el 20 con incrementos, por defecto, de una unidad.
A2=(1:2:200)
nmeros enteros entre 1 y 200, en columna. En este caso, de valores
enteros entre el 1 y el 20 con incrementos de dos unidades.
A3=(1:0.1:5)
nmeros reales entre 1 y 5 tomados en incrementos de 0.1 unidades, en
fila.
A4=(1:-0.1:0)
nmeros reales entre 1 y 0 tomados en decrementos de 0.1 unidades, en
fila.
A5=randn(3,4)
matriz 3x4 de nmeros reales aleatorios con distribucin gaussiana.
A6=rand(2,10)
matriz 2x10 de nmeros reales aleatorios con distribucin uniforme.
A7=eye(4)
matriz identidad 4x4.
A8=zeros(3)
matriz de ceros 3x3.
A9=zeros(3,4)
matriz de ceros de orden 3x4.
A10=ones(4)
matriz de unos de orden 4x4.
A11=ones(4,2)
matriz de unos de orden 4x2.
21
Ampliacin de informtica
2 1 1
2 3 4 , MATLAB es capaz
1 1 2
A12=randn(size(A))
matriz de nmeros reales aleatorios gaussianos de las mismas dimensiones
que A.
A13=rand(size(A))
matriz de nmeros reales aleatorios distribuidos uniformemente de las
mismas dimensiones que A.
A14=eye(size(A))
matriz identidad de las mismas dimensiones que A.
A15=ones(size(A))
matriz de unos de las mismas dimensiones que A.
A16=zeros(size(A))
matriz de ceros de las mismas dimensiones que A.
hist(x, k)
Histograma donde los elementos del vector x estn distribuidos en k
barras equiespaciadas que corresponden a otros tantos intervalos de clase.
22
Captulo 1: El entorno
MATLAB
A (aij )i1,2,...,m
j1,2,...,n
A(i, j)
proporciona el elemento aij de la matriz A.
A(i, :)
proporciona la fila i-sima de la matriz A.
A(:, j)
proporciona la columna j-sima de la matriz A.
2 1 1
2 3 4
1 1 2
A(1, 3)=0.5
indica que el elemento a13 de la matriz tomar el valor 0.5.
23
Ampliacin de informtica
y=x(x<1)
proporciona un vector y formado con los elementos menores que uno del
vector x.
x(x<0)=[]
hace desaparecer los elementos negativos del vector x.
Existen unos operadores con los que MATLAB permite establecer
relaciones
entre
matrices
del
mismo
orden,
son
los
denominados
x=randn(1,10);
La instruccin
y=x<1
24
Captulo 1: El entorno
MATLAB
otros
subconjuntos
de
operadores
elementos
relacionales
de
una
muy
matriz.
tiles
Su
para
significado
rescatar
queda
implcitamente descrito por su sencilla lectura: <, <=, >, >=, ==, ~=. Tan
slo el ltimo3 puede plantear algn problema, subsanable, si pensamos en
la necesidad de expresar de algn modo la desigualdad.
A medida que avancemos en el presente manual aparecern otros
operadores, denominados operadores lgicos, necesarios en la construccin
de relaciones ms complejas.
a) A>=B, A<B.
b) Cambiar la primera fila de A por un vector de nmeros reales
aleatorios uniformes y la segunda fila de B por un vector de
nmeros reales aleatorios gaussianos.
c) Cambiar la tercera columna de A por el doble de la tercera
columna de B, y efectuar las evaluaciones relacionales:
A==2*B, (A-0.5597)==B, A<=(B+0.5).
25
Ampliacin de informtica
nx1,
la
solucin
puede
obtenerse
de
dos
formas
alternativas:
1.1
x A1 b.
1.2
Empleando
un
mtodo
ms
eficiente,
de
x b A1 .
2.2
Empleando
un
mtodo
ms
eficiente,
de
A x b y
26
MATLAB
Captulo 1: El entorno
27