Sie sind auf Seite 1von 23

[ 2003/2005 ]

Programa Doctorado:
Economía

Enseñanzas de postgrado:
Máster universitario en Economía

Módulo teórico:
Economía financiera cuantitativa y actuarial

Ampliación de informática
Índice

Primera parte: Temas básicos

Capítulo 1: El entorno MATLAB


1.1 Introducción
1.2 Introducción de matrices en MATLAB
1.3 Álgebra matricial
1.3.1 Operaciones aritméticas elementales con matrices
1.3.2 Operaciones aritméticas elementales con vectores
1.4 Matrices especiales
1.5 Rescate de elementos a partir de una matriz
1.6 Resolución de sistemas de ecuaciones lineales

Capítulo 2: Funciones en MATLAB


2.1 Funciones matemáticas elementales
2.2 Funciones estadísticas elementales
2.3 La función gráfica plot

Capítulo 3: Creación de M-archivos


3.1 M-archivos script
3.2 M-archivos function

Capítulo 4: Algoritmos
4.1 Estructuras de programación: bucles y bifurcaciones
4.1.1 El bucle for
4.1.2 El bucle while
4.1.3 La bifurcación condicional if
Segunda parte: Aplicación a Economía y Finanzas
Capítulo 1: El entorno MATLAB

1.1 Introducción

MATLAB (versión 6.1 o superiores) es un programa de cálculo técnico y científico para


el tratamiento de la información a través de matrices numéricas. Una potente
herramienta de cálculo, útil para realizar desde elementales operaciones aritméticas
hasta complejos algoritmos numéricos. Además, MATLAB posee un sencillo lenguaje de
programación propio, válido para automatizar la resolución de un problema expresable
matemáticamente. Como caso particular, puede también trabajar con números
escalares, con cadenas de caracteres y con otras estructuras de información más
complejas.

MATLAB facilita un código básico, al que se hará referencia en este manual, y un


conjunto de librerías especializadas -toolboxes-. Además, proporciona una relación
interactiva con el usuario a través de tres tipos de ventanas: ventana de trabajo o
escritorio (donde teclearemos las instrucciones para el funcionamiento del programa),
ventana de figuras (donde haremos las representaciones gráficas en dos y tres
dimensiones) y ventana de edición (que situaremos en el editor propio que nos facilita
el mismo). Asimilar el uso de cada una de estas ventanas nos facilitará la tarea del
aprendizaje del programa científico MATLAB. Así, en la ventana de comandos,
integrada en la ventana de trabajo, ejecutaremos sencillas instrucciones que nos
permitan manejar datos de entrada para generar resultados de salida. En la ventana
de figuras visualizaremos gráficas correspondientes a estudios de interés. Finalmente,
cuando la resolución de nuestro problema requiera la combinación sucesiva de
diferentes instrucciones para crear estructuras lógicas más complejas, precisaremos
diseñar algoritmos a través de M-archivos en la ventana de edición, que estará
constituida por un procesador de textos integrado en MATLAB.
Ampliación de informática

Acceso al programa
Para acceder al programa bastará pulsar dos veces en el icono de acceso que
aparece en el escritorio. A continuación, veremos las características básicas del entorno
MATLAB donde desarrollaremos nuestro trabajo.

2
Capítulo 1: El entorno MATLAB

3
Ampliación de informática

1.2 Introducción de matrices en MATLAB

Las estructuras básicas que utiliza MATLAB para manejar la información son las
matrices2. Una matriz es una disposición rectangular de elementos ordenados, en filas
y columnas, y encerrados entre corchetes, que podemos representar como sigue:
columna j-ésima 

�a11 a12 a13 L a1j L a1n �


� �
�a21 a22 a23 L a2 j L a2n �
�a31 a32 a33 L a3 j L a3n �
� �
( )
A = aij i =1,2 ,...,m
= �M M

M O M M M�

ain �  fila i-ésima
j =1,2,...,n

�ai1 ai2 ai3 L aij L


� �
�M M M L M L M�
�am1 am2 am3 L amj L amn �
� �
mxn

donde un elemento a ij ocupa la fila i-ésima y la columna j-ésima dentro de la matriz.


La identificación de los elementos por medio de los subíndices que los caracterizan
tiene importancia capital para su manejo. Fijémonos que la matriz A posee m filas y n
columnas, y nos permite almacenar mxn datos que pueden ser reales o complejos, de
esta forma diremos que dicha matriz tiene orden o dimensión mxn.

A partir de la definición de matriz, los vectores y escalares se definen jugando con


el número de filas y columnas. Así, un vector columna vendrá determinado por m > 1
filas y n = 1 columna, con lo cual

�a11 �
�a21 �
� �
A=�a31 �
� �
�M �

am1 �
� �
mx1

Un vector fila vendrá determinado por m = 1 fila y n > 1 columnas, cuya


expresión será

A =�
a11
� a12 a13 K a1n �
1xn .

2
De hecho, el término MATLAB proviene de MATrix LABoratory.

4
Capítulo 1: El entorno MATLAB

Como caso particular trabajaremos con escalares que son matrices de orden 1 x1,
es decir,

A =�
a11 �
� �
1x1
= a.

Para facilitar la distinción entre vectores y matrices, utilizaremos a lo largo de este


manual letras minúsculas para denotar los vectores, y mayúsculas para las matrices.
Veamos cómo introducir matrices en MATLAB.

MATLAB considera una matriz definida sin ningún elemento entre corchetes como
una matriz de dimensión cero, es decir, vacía, aunque aparecerá declarada y
almacenada en el espacio de trabajo. De esta forma nos aseguraremos su declaración
vacía sin más que introducir
» A=[]

�-3 1 1 �
� �
Una matriz A = �1 -3 1 �puede ser introducida en MATLAB de cualquiera de
�1 1 -3 �
� �
las formas alternativas siguientes:
» A=[3 1 1; 1 -3 1; 1 1 -3]
o bien
» A=[-3, 1, 1; 1, -3, 1; 1, 1, -3];

Observemos que con la introducción de punto y coma al final de una variable


matricial, la matriz quedará guardada en la memoria de trabajo pero no aparecerá
explícitamente en la pantalla.

Ejercicio. Introducir las siguientes matrices y vectores


0 -1 3 �
� �3 �
� � 1 3�
� � �
B=�
2 -1 2 �, C = � �, d = ( 2 3 9 -1 ) , e = �0.1 �
� � 2 4�
� � 4 �
2 4 3�
� �- 3 �

5
Ampliación de informática

1.3 Álgebra matricial

Una vez introducidas las matrices en el espacio de trabajo es posible realizar


operaciones aritméticas elementales entre ellas, siempre que se verifiquen las
condiciones de dimensionalidad adecuadas. Estas operaciones pueden ser aplicadas
sobre escalares como caso particular.

Es evidente que de la misma forma que cuando evaluamos una expresión


seguimos un orden de precedencia operacional, MATLAB posee su propio orden
implícito. Las operaciones aritméticas se evaluarán de izquierda a derecha; aquellas
encerradas entre paréntesis en primer lugar, siempre desde el interior hacia el exterior
y, a continuación, se recorre dicha expresión realizando las operaciones existentes en

la secuencia siguiente: exponencial  multiplicación y división  suma y resta

Sirva el próximo ejemplo, en el que deseamos asignar a la variable a el valor de la

2
expresión: �


2 5
1 + ep �

20
(1.
� - 3 + 23 �
e )
Existen dos alternativas válidas 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 más que podemos emplear la instrucción help para pedir ayuda. Fijémonos
bien en que el uso del paréntesis elimina posibles confusiones y resultados no
deseados. Así, podríamos escribir help exp o help sqrt.

6
Capítulo 1: El entorno MATLAB

1.3.1 Operaciones aritméticas elementales con matrices

A continuación mostramos las principales operaciones aritméticas elementales


entre matrices considerando adecuadas las dimensiones de las mismas:
» 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
división izquierda (similar a inv(A)*B).
» B/A
división derecha (similar a B*inv(A)).
» A.*B
producto, elemento a elemento, de dos matrices.
» A./B
cociente, elemento a elemento, de dos matrices.
» A.^n

7
Ampliación de informática

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, número de filas y columnas,
respectivamente, de una matriz A. Observemos que la función [m, n]=size(A)
permite extraer más de una variable de salida tras su aplicación.

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 instrucción
» [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 expresión V-1AV=D. Observemos nuevamente la asignación
múltiple 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)
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.

8
Capítulo 1: El entorno MATLAB

» diag(v, k)
es la matriz cuadrada de orden n+abs(k) donde los elementos del vector v de n
componentes que se sitúan en la k-ésima diagonal, siendo k un número 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 k-ésima
diagonal inferior de A.
Estas dos últimas instrucciones admiten una versión relativa a los elementos de la
diagonal superior que son
» triu(A)
» triu(A, k)
�2 1 1 �
� �
Ejemplo: Calcular los autovalores y autovectores de la matriz A = �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)
V=
-0.8018 -0.1543 0.5774
0.2673 0.7715 0.5774
0.5345 -0.6172 0.5774
D=
-4.0000 0 0
0 -4.0000 0

9
Ampliación de informática

0 0 -1.0000
Ejercicio. Calcular las matrices que se especifican a continuación a partir de las

�3 1 � �2 -1 �
� � � 2 -2 � � �
matrices: A= �0 2 �, B= � �, C= �-1 3 �y D= ( 2 1) .
� �1 3 � �0 1 �
�2 -1 �
� � �

a) DB 2 .

b) BC t .

c) (CB)D t .

d) det(AC t ) .

e) (A t C) -1 .

Ejercicio. Dadas las matrices A y B calcular las matrices que se especifican en los
diferentes apartados

�1 3 2� �3 1 1�
� � � �
A=�
0 1 4 �, B = �1 -2 0 �
�1 -2 0 � �2 1 1�
� � � �

a) A + B t , A tB, det(A 2 + B -1 ) .

b) 2A + (A + B)2

c) A -1 + 3I3 + B -1

d) Autovalores de A + B .
e) Autovectores de B .
f) Matriz cuyos elementos se obtienen multiplicando los de A y B , elemento a

( ) (
elemento, es decir, cij = aij )
bij .

g) Matriz cuyos elementos se obtienen dividiendo los de A y B , elemento a

( ) (
elemento, es decir, cij = aij )
/ bij .

h) Matriz cuyos elementos se obtienen multiplicando los cuadrados de los


elementos A por los cuadrados de los elementos de B , elemento a elemento,

( ) (
es decir cij = aij
2
)
bij2 .

10
Capítulo 1: El entorno MATLAB

i) Matriz cuyos elementos se obtienen elevando los elementos de A a los

exponentes de la matriz B , elemento a elemento, es decir cij = aij


bij
( )
. ( )
1.3.2 Operaciones aritméticas elementales con vectores

Aunque los vectores constituyen un caso particular de las matrices, veamos


algunas operaciones elementales donde los vectores están especialmente involucrados.

Si x = ( x i ) i =1,2,...,n e y = ( y i ) i =1,2,...,n son vectores del mismo orden, pueden definirse

de forma específica, las siguientes operaciones aritméticas entre vectores:

 Producto elemento a elemento: x. * y = �


x1 y1 x 2 y 2 K xn yn �
� �
 Producto escalar: x * y ' = x1y1 + x 2 y 2 + ....... + x n y n

�x1 � �x1 y1 .... x1 y n �


� �
 Producto de Kroneker: x '* y = � ( y1 .... yn ) = �
.... �� �... .... ... �

�x � �x y .... x y �
�n � �n 1 n n�

Ejercicio.

11
Ampliación de informática

1.4 Matrices especiales

MATLAB es capaz de generar numerosas matrices especiales de gran utilidad


práctica, como se muestra a continuación:

» A1=1:20
números 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)’
números 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)
números reales entre 1 y 5 tomados en incrementos de 0.1 unidades, en fila.
» A4=(1:-0.1:0)
números reales entre 1 y 0 tomados en decrementos de 0.1 unidades, en fila.
» A5=randn(3,4)
matriz 3x4 de números reales aleatorios con distribución gaussiana.
» A6=rand(2,10)
matriz 2x10 de números reales aleatorios con distribución 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.

12
Capítulo 1: El entorno MATLAB

�2 1 1 �
� �
Igualmente, recuperando la matriz A = �2 3 4 �, MATLAB es capaz de
�-1 -1 -2 �
� �
generar otras matrices del tamaño de la matriz A en cualquiera de las siguientes
formas:
» A12=randn(size(A))
matriz de números reales aleatorios gaussianos de las mismas dimensiones que A.
» A13=rand(size(A))
matriz de números 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.

Ejercicio. Construir una sucesión de 1000 números reales en los intervalos que se
citan a continuación.
a) Números reales aleatorios uniformes entre –2 y 2.
b) Números reales aleatorios uniformes 0 y 5.
c) Números reales aleatorios gaussianos con media 2 y varianza 3.
d) Números reales aleatorios gaussianos con media 1 y varianza 0.1.
e) Hallar sus correspondientes histogramas mediante la instrucción:
» hist(x, k)
Histograma donde los elementos del vector x están distribuidos en k barras
equiespaciadas que corresponden a otros tantos intervalos de clase.

13
Ampliación de informática

1.5 Rescate de los elementos a partir de una matriz

A = (aij )i=1,2,...,m
Dada una determinada matriz es posible obtener de forma
j=1,2,...,n

sistemática numerosos subconjuntos de sus elementos con el fin de facilitar


determinadas operaciones:
» 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.

Ejemplo. Veamos cómo es posible cambiar el valor de determinados elementos de


una matriz. Consideremos la matriz

�2 1 1 �
� �
A = �2 3 4 �
�-1 -1 -2 �
� �
» A(1, 3)=0.5
indica que el elemento a13 de la matriz tomará el valor 0.5.

» A(:, 3)=[2 3 -1]'


2�

��
3 �.
sustituye la tercera columna de la matriz A por �

1�
� �
» A(1,:)=[1 0 1]

sustituye la primera fila de la matriz A por ( 1 0 1) .

14
Capítulo 1: El entorno MATLAB

Si x = ( x i ) i =1,2,...,n es un determinado vector y t un conjunto de índices:

» x=[ 4 2 7 3 6 4 9]; t=[2 5 7]; x(t)


» ans=
2 6 9
proporciona un nuevo vector que contiene los elementos del vector x,
correspondientes a los índices t.

Ejemplo. Comprobar que la siguiente instrucción:


» x=randn(1,30), t=(5:2:20), x(t)
proporciona los elementos del vector x, comprendidos entre 5 y 20, tomados de dos
en dos.
Igualmente pueden considerarse subconjuntos de elementos de un vector x que
verifiquen alguna relación de desigualdad. Por ejemplo,
» 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 operadores relacionales. Estos
operadores generan matrices del mismo orden que las iniciales asignando respuestas
binarias, 0/1 (falso/verdadero), al resultado de la comparación elemento a elemento.
Estos operadores también son válidos para comparar elementos de una matriz con
escalares. A modo de ejemplo, sea
» x=randn(1,10);

La instrucción
» y=x<1
proporciona un vector 1x10 cuyos elementos binarios se corresponden con un cero si
x(i) es mayor o igual que uno y, con un uno si x(i) es menor que uno, es decir, donde
la relación evaluada, elemento a elemento, es verdadera.

15
Ampliación de informática

Existen otros operadores relacionales muy útiles para rescatar subconjuntos de


elementos de una matriz. Su significado queda implícitamente descrito por su sencilla
lectura: <, <=, >, >=, ==, ~=. Tan sólo el último 3 puede plantear algún
problema, subsanable, si pensamos en la necesidad de expresar de algún modo la
desigualdad.

A medida que avancemos en el presente manual aparecerán otros operadores,


denominados operadores lógicos, necesarios en la construcción de relaciones más
complejas.

Ejercicio. Introducir las siguientes matrices y vectores, anticipándose en las


respuestas a las expresiones relacionales indicadas :

�-0.1867 0.7258 -0.5883 � �0.2944 1.3362 -0.6918 �


� � � �
A = � 2.1832 -0.1364 1.0668 �, B = �0.8580 -1.5937 -1.4410 �
�0.0114 -0.8323 0.0539 � �0.5711 0.7119 1.2902 �
� � � �

a) A>=B, A<B.
b) Cambiar la primera fila de A por un vector de números reales aleatorios
uniformes y la segunda fila de B por un vector de números 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).

3
El carácter ASCII ~ se logra con la combinación de teclas Alt+126, en el teclado numérico.

16
Capítulo 1: El entorno MATLAB

1.6 Resolución de sistemas de ecuaciones lineales

Un sistema de ecuaciones lineales puede ser resuelto con MATLAB de varias


formas.
x = b , donde A es una
1. Si escribimos el sistema en la forma matricial A �

matriz de orden nxn y x y b son vectores columna de orden nx1, la


solución puede obtenerse de dos formas alternativas:

1.1 Empleando la matriz inversa de A, si existe: x = A -1 �


b.
1.2 Empleando un método más eficiente, de eliminación

gaussiana, por medio de la división izquierda: x = A \ b .


A = b , donde A es una
2. Si escribimos el sistema en la forma matricial x �

matriz de orden nxn y x y b representan ahora vectores fila 1xn, la


solución puede obtenerse de dos formas alternativas:

A -1 .
2.1 Empleando la matriz inversa de A, si existe: x = b �

2.2 Empleando un método más eficiente, de eliminación

gaussiana, por medio de la división derecha : x = b / A .

Ejercicio. Hallar las soluciones de los siguientes conjuntos de ecuaciones lineales.


x =b y
Describir cada uno empleando las dos formas de notación matricial A �
Comparar los resultados obtenidos según empleemos en el método de resolución la
matriz inversa, la división izquierda o la división derecha.

a) x+3y=1, 2x-y=3.
b) 3x+2y-z=10, -x+3y+2z=5, x-y-z=-1.
c) x+y+z+t=4, 2x-y+t=2, x-2y-z-t=2, x-2y-3z+t=-3.
d) x-2y+z+t=3, x+z=t, 2y-z=t, x+4y+2z-t=1.

En el capítulo 6 de la segunda parte del manual consideraremos aspectos


numéricos más profundos sobre la resolución de sistemas de ecuaciones lineales y no
lineales.

17

Das könnte Ihnen auch gefallen