Sunteți pe pagina 1din 33

[ 2003/2005 ]

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 2: Funciones en MATLAB


2.1 Funciones matemticas elementales
2.2 Funciones estadsticas elementales
2.3 La funcin grfica plot

Captulo 3: Creacin de M-archivos


3.1 M-archivos script
3.2 M-archivos function

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

Segunda parte: Aplicacin a Economa y Finanzas

Captulo 1: El entorno MATLAB

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

matemticamente. Como caso particular, puede tambin trabajar con


nmeros escalares, con cadenas de caracteres y con otras estructuras de
informacin ms complejas.
MATLAB facilita un cdigo bsico, al que se har referencia en este
manual, y un

conjunto de libreras especializadas -toolboxes-. Adems,

proporciona una relacin interactiva con el usuario a travs 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 grficas en dos y tres dimensiones) y
ventana de edicin (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 cientfico 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 grficas
correspondientes a estudios de inters. Finalmente, cuando la resolucin de
nuestro

problema

requiera

la

combinacin

sucesiva

de

diferentes

instrucciones para crear estructuras lgicas ms complejas, precisaremos

Ampliacin de informtica

disear algoritmos a travs de M-archivos en la ventana de edicin, que


estar constituida por un procesador de textos integrado en MATLAB.

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.

Icono 1: Acceso directo

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

Figura 1: Ventana de trabajo1


En la ventana de trabajo (ver Figura 1), destacan de arriba hacia abajo,
los siguientes elementos invariantes: barra de ttulos, con el nombre del
programa; barra de men, con todas las opciones del men general;
barra de herramientas, formada por varios iconos de acceso rpido a las
opciones ms utilizadas del submen de ficheros y de edicin, muchos de
ellos inactivos. Incluye adems, diferentes ventanas propias como la
ventana de comandos (Command Window), donde teclearemos las
diferentes instrucciones con que daremos rdenes al sistema, y dos
ventanas, superior e inferior, que contienen las pestaas que nos muestran
nuestro entorno. En la ventana superior el espacio de trabajo (Workspace)
donde se almacenarn las variables y resultados presentes en memoria y un
listado de los componentes instalados (Launch Pad). La ventana inferior
permite disponer de informacin acerca del directorio actual (Current
Directory) sobre el que trabajamos y un listado histrico de las ltimas
instrucciones ejecutadas (Command History).
En la ventana de comandos cada instruccin debe ser escrita a
continuacin del inductor del entorno prompt- (), que es el indicador de
que MATLAB est preparado para recibir rdenes. Una vez escrita alguna
instruccin siempre es necesario pulsar la tecla enter () para que MATLAB
la ejecute. Tras realizar determinada operacin numrica el sistema
responder creando, en el espacio de trabajo, una variable de sistema
llamada ans en la que almacena el valor numrico obtenido, siempre que
nosotros no hubisemos creado alguna otra variable para almacenarlo.
Por ejemplo, vamos a efectuar la sencilla operacin aritmtica

1 2
.
32

Para ello habremos de teclear en la ventana de comandos

(1+sqrt(2))/3*pi^2

MATLAB proporcionar la respuesta

ans=
7.9424
1

Existen otras configuraciones posibles que cada usuario podr establecer segn sus propias

necesidades.

Ampliacin de informtica

Es importante observar que si tras una determinada instruccin


hubisemos escrito un punto y coma (;) la variable ans no aparecera en
pantalla. As, por ejemplo, si escribimos

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

determinada variable, bastar emplear el operador de asignacin (=), tal y


como lo haramos en un ejercicio manual, con lpiz y papel. Las nicas
restricciones sobre dicha asignacin se refieren a la extensin de los
nombres de variables empleados que no deben exceder de diecinueve
caracteres, sin espacios intermedios ni caracteres del tipo +, -, *, /, ^,
siendo necesariamente el primero de ellos una letra. Igualmente ha de
tenerse en cuenta la sensibilidad de MATLAB ante el uso de maysculas y
minsculas en la definicin de variables, y la existencia de variables

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;

se crearn dos variables almacenadas en el espacio de trabajo; una tendr


como nombre radio y otra area, aunque como se encuentran precedidas
por un punto y coma (;) no aparecern reflejadas en la ventana de
comandos, ejecutndose ambas simultneamente. Si miramos al espacio de
trabajo, podremos detectar su presencia en la memoria (ver Figura 2).
Adems, si escribimos su nombre en la ventana de trabajo, el sistema
devolver su valor. Por ejemplo,

area
el sistema responder con

area
=12.5664

Ampliacin de informtica

Figura 2: Ventana de comandos


Debe aadirse que, si ocasionalmente la longitud de una lnea de
instrucciones supera la extensin permitida para su visualizacin en la
ventana, podemos utilizar puntos suspensivos (...) al final de la lnea en
curso y continuar en la siguiente lnea.

Interacciones del usuario con el espacio de trabajo


Segn hemos sealado, la informacin proporcionada a MATLAB desde la
ventana de trabajo es almacenada en una memoria que denominamos
genricamente espacio de trabajo, gestionada por el propio programa y del
que no tenemos que preocuparnos. Si deseamos indagar sobre la
informacin almacenada en el espacio de trabajo bastar echar un vistazo a
dicha ventana en la Figura 3, o bien utilizar una serie de sencillas
instrucciones, algunas de las cuales presentamos a continuacin.
La instruccin who ya hemos visto que ofrece un listado de las variables
definidas en el espacio de trabajo (en nuestro caso aparecern las variables
radio y area que acabamos de crear). Esta informacin est tambin
disponible de forma visual, en todo momento, en el espacio de trabajo.

MATLAB

Captulo 1: El entorno

Figura 3: Espacio de trabajo

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

clear area radio


Si tras aplicar este comando a la variable area volvisemos a aplicar el
comando who observaramos que dicha variable ha desaparecido del
espacio de trabajo.
Tambin podramos haber marcado una, varias o todas las variables en
el espacio de trabajo y a travs del men que se despliega habiendo clic
con el botn derecho de nuestro ratn haber eliminado las mismas. Es
conveniente jugar con las diferentes opciones que contiene este men,
desde salvar todo el espacio de trabajo hasta salvar o importar variables.
Otras instrucciones de inters,

clc

Ampliacin de informtica

limpia la informacin en la ventana de comandos aunque, no la informacin


almacenada en el espacio de trabajo.

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.

Cmo salvar y recuperar


Veamos cmo salvar y recuperar todo el espacio de trabajo o algunas de
las variables creadas en el mismo. Por su sencillez, bastar emplear dos
instrucciones primordiales para realizar esta tarea: save permite salvar el
espacio de trabajo en un archivo (con diversas variantes) y, load permite
recuperar el espacio de trabajo, previamente salvado, en un archivo (con
diversas variantes).
Por ejemplo, si area es la variable numrica creadas anteriormente en el
ejemplo del clculo del rea de una circunferencia, o una matriz de datos
numricos como veremos posteriormente, entonces

save datos area


guarda en el directorio desde donde ha sido iniciado MATLAB la variable
area en un fichero denominado datos.mat (utilizando formato binario
nicamente comprensible por el entorno MATLAB). Este archivo se guardar
en el directorio hacia donde MATLAB est direccionado en ese momento. Al
final de este apartado veremos como direccionar MATLAB.

save datos radio -append


guarda la variable radio a continuacin de la informacin existente sin
borrarla- en el archivo datos.mat. Esta variante slo es aplicable a ficheros
con dicha extensin.
Con la instruccin clear se eliminarn todas las variables contenidas en
el espacio de trabajo, y a continuacin con

load datos
recuperaremos, en el formato con que se guard, las variables contenidas
en

datos, en nuestro caso, radio y area (siempre que MATLAB se

encuentre direccionado hacia el directorio donde se guard).

Ampliacin de informtica

Si se desea es posible guardar nicamente ciertas variables de un


conjunto ms amplio, previamente contenido en el espacio de trabajo, en
archivos especficamente denominados, por ejemplo

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

base=5; altura=8; area=base*altura/2


podemos

guardar

todo

el

espacio

de

trabajo

con

el

nombre

de

sesion1.mat. Para ello, bastar con escribir en la ventana de trabajo

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.

save areatriangulo.dat area -ascii double


guarda la variable area, en formato ASCII y con doble precisin de catorce
cifras decimales, en un archivo con el nombre areatriangulo.dat.

load areatriangulo.dat ascii


recupera la informacin contenida en el archivo datos.dat, forzando a que
se reproduzca en este formato.
Cuando se desee aplicar las instrucciones load y save sobre una
determinada variable, es esencial direccionar MATLAB hacia un determinado
directorio en el que se encuentre o en el que deseemos guardar la variable.

10

MATLAB

Captulo 1: El entorno

Existen varias formas de direccionar MATLAB hacia un directorio. Una de


ellas es usar el comando cd del sistema operativo MS-DOS:

cd datos_numericos
direcciona al directorio datos_numericos del directorio raz donde se inici
MATLAB, que previamente habramos creado con el Explorador .

Otra forma de direccionar es, obviamente, utilizar la instruccin File, que


aparece en la parte superior izquierda de la ventana de comandos, y
seleccionar la opcin Open File. No obstante, la ms sencilla consiste en
utilizar las opciones contenidas en la ventana del directorio actual que nos
permitirn buscar, crear directorios.

Figura 4: Directorio actual

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

en utilizar el comando help en la propia ventana de trabajo. As cuando


tecleamos

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.

Ejercicio. Proponemos al lector que explore las instrucciones help save,


help load y help format.

12

Captulo 1: El entorno

MATLAB

1.2 Introduccin de matrices en MATLAB


Las estructuras bsicas que utiliza MATLAB para manejar la informacin
son las matrices2. Una matriz es una disposicin rectangular de elementos
ordenados, en filas y columnas, y encerrados entre corchetes, que podemos
representar como sigue:
columna j-sima

a12

a13

a21
a
31

a22

a23 L

a32

a33 L

a11

A aij

i1,2,...,m
j 1,2,...,n

M M
M

ai1 ai2 ai3

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

donde un elemento aij ocupa la fila i-sima y la columna j-sima dentro de


la matriz. La identificacin de los elementos por medio de los subndices que
los caracterizan tiene importancia capital para su manejo. Fijmonos 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 dimensin mxn.
A partir de la definicin de matriz, los vectores y escalares se definen
jugando con el nmero de filas y columnas. As, un vector columna vendr
determinado por m 1 filas y n 1 columna, con lo cual

a11
a
21
A a31

M
am1

mx1

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


expresin ser

De hecho, el trmino MATLAB proviene de MATrix LABoratory.

13

Ampliacin de informtica

A a11 a12 a13 K

a1n

1xn

Como caso particular trabajaremos con escalares que son matrices de


orden 1x1, es decir,

A a11

1x1

a.

Para facilitar la distincin entre vectores y matrices, utilizaremos a lo


largo de este manual letras minsculas para denotar los vectores, y
maysculas para las matrices. Veamos cmo introducir matrices en MATLAB.
MATLAB considera una matriz definida sin ningn elemento entre
corchetes como una matriz de dimensin cero, es decir, vaca, aunque
aparecer declarada y almacenada en el espacio de trabajo. De esta forma
nos aseguraremos su declaracin vaca sin ms que introducir

A=[]
3 1 1

Una matriz A 1 3 1
1 1 3

puede ser introducida en MATLAB de

cualquiera de 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 introduccin de punto y coma al final de una
variable matricial, la matriz quedar guardada en la memoria de trabajo
pero no aparecer explcitamente en la pantalla.

Ejercicio. Introducir las siguientes matrices y vectores


3
0 1 3
1 3

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

1.3 lgebra matricial


Una vez introducidas las matrices en el espacio de trabajo es posible
realizar operaciones aritmticas 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
expresin seguimos un orden de precedencia operacional, MATLAB posee su
propio orden implcito. Las operaciones aritmticas se evaluarn de
izquierda a derecha; aquellas encerradas entre parntesis en primer lugar,
siempre desde el interior hacia el exterior y, a continuacin, se recorre dicha
expresin realizando las operaciones existentes en la secuencia siguiente:

exponencial multiplicacin y divisin suma y resta

Sirva el prximo ejemplo, en el que deseamos asignar a la variable a el


2

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

1.3.1 Operaciones aritmticas elementales con matrices


A continuacin mostramos las principales operaciones aritmticas
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
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

Ejercicio. Calcular las matrices que se especifican a continuacin a partir


3 1
2 1
2 2

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 .

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 Bt , AtB, det(A2 B1) .


b) 2A (A B)2
c) A1 3I 3 B1
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 .

19

Ampliacin de informtica

g) Matriz cuyos elementos se obtienen dividiendo los de

elemento a elemento, es decir, cij aij

A y B,

/ bij .

h) Matriz cuyos elementos se obtienen multiplicando los cuadrados de


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

2
2
a elemento, es decir cij aij bij .

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


los exponentes de la matriz B , elemento a elemento, es decir

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 elemento a elemento:

Producto escalar:

20

x * y' x1y1 x2y2 ....... xnyn

Producto de Kroneker:

Ejercicio.

x. * y x1y1 x2y2 K xnyn

x1
x1y1 .... x1y
n

x'* y .... y1 .... yn ... .... ...


x

n
xny1 .... xnyn

MATLAB

Captulo 1: El entorno

1.4 Matrices especiales


MATLAB es capaz de generar numerosas matrices especiales de gran
utilidad prctica, como se muestra a continuacin:

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

Igualmente, recuperando la matriz A

2 1 1

2 3 4 , MATLAB es capaz
1 1 2

de generar otras matrices del tamao de la matriz A en cualquiera de las


siguientes formas:

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.

Ejercicio. Construir una sucesin de 1000 nmeros reales en los intervalos


que se citan a continuacin.
a) Nmeros reales aleatorios uniformes entre 2 y 2.
b) Nmeros reales aleatorios uniformes 0 y 5.
c) Nmeros reales aleatorios gaussianos con media 2 y varianza
3.
d) Nmeros reales aleatorios gaussianos con media 1 y varianza
0.1.
e) Hallar sus correspondientes histogramas mediante la
instruccin:

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

1.5 Rescate de los elementos a partir de una matriz

Dada una determinada matriz

A (aij )i1,2,...,m
j1,2,...,n

es posible obtener de forma

sistemtica 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 cmo es posible cambiar el valor de determinados


elementos de una matriz. Consideremos la matriz

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.

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


2

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

A(1,:)=[1 0 1]
sustituye la primera fila de la matriz A por 1 0 1 .

23

Ampliacin de informtica

Si x xi i1,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

proporciona un nuevo vector que contiene los elementos del vector x,


correspondientes a los ndices t.

Ejemplo. Comprobar que la siguiente instruccin:


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 relacin 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 comparacin elemento a elemento. Estos operadores
tambin son vlidos para comparar elementos de una matriz con escalares.
A modo de ejemplo, sea

x=randn(1,10);
La instruccin

y=x<1

24

Captulo 1: El entorno

MATLAB

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 relacin evaluada, elemento a elemento, es
verdadera.
Existen

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.

Ejercicio. Introducir las siguientes matrices y vectores, anticipndose 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 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).

El carcter ASCII ~ se logra con la combinacin de teclas Alt+126, en el teclado


numrico.
3

25

Ampliacin de informtica

1.6 Resolucin de sistemas de ecuaciones lineales


Un sistema de ecuaciones lineales puede ser resuelto con MATLAB de
varias formas.
1. Si escribimos el sistema en la forma matricial A x b , donde A es
una matriz de orden nxn y x y b son vectores columna de
orden

nx1,

la

solucin

puede

obtenerse

de

dos

formas

alternativas:
1.1

Empleando la matriz inversa de A, si existe:

x A1 b.
1.2

Empleando

un

mtodo

ms

eficiente,

de

eliminacin gaussiana, por medio de la divisin


izquierda: x A \ b .
2. Si escribimos el sistema en la forma matricial x A b , donde A es
una matriz de orden nxn y x y b representan ahora vectores
fila 1xn, la solucin puede obtenerse de dos formas alternativas:
2.1

Empleando la matriz inversa de A, si existe:

x b A1 .
2.2

Empleando

un

mtodo

ms

eficiente,

de

eliminacin gaussiana, por medio de la divisin


derecha : x b / A .

Ejercicio. Hallar las soluciones de los siguientes conjuntos de ecuaciones


lineales. Describir cada uno empleando las dos formas de notacin matricial

A x b y

Comparar los resultados obtenidos segn empleemos en el

mtodo de resolucin la matriz inversa, la divisin izquierda o la divisin


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.

26

MATLAB

Captulo 1: El entorno

En el captulo 6 de la segunda parte del manual consideraremos


aspectos numricos ms profundos sobre la resolucin de sistemas de
ecuaciones lineales y no lineales.

27

S-ar putea să vă placă și