Escolar Documentos
Profissional Documentos
Cultura Documentos
ITAM
ITAM
Contenido
1 Introducci n. o
1.1 Objetivo : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : 1.2 iniciando MATLAB. : : : : : : : : : : : : : : : : : : : : : : : 1.3 Declaraciones. : : : : : : : : : : : : : : : : : : : : : : : : : : : Declaraci n. : : : : : : : : : : : : : : o Formato de visualizaci n. : : : : : : o Suprimir la visualizaci n a la salida. o Largas lineas de comando : : : : : : Salvar y cargar la hoja de trabajo. : Especi cando el formato. : : : : : :
4 8 9
2 Vectores y matrices
2.1 2.2 2.3 2.4 2.5 2.6 3.1 3.2 3.3 3.4 3.5 3.6
: : : : : :
: : : : : :
: : : : : :
: : : : : :
: : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : :
: : : : : : : : : : : : : : : : :
10
11 12 13 13 14 14
Producto de vectores y transpuesta : : : : : Multiplicaci n de matrices : : : : : : : : : : o Potencias y exponenciales con Matrices. : : Norma de vectores y Matrices : : : : : : : : Funciones para la construcci n de matrices. o Operaciones a coordenadas. : : : : : : : : :
18
20 21 22 23 24 25 26 27 28 29 30
: : : : :
: : : : :
: : : : :
: : : : :
: : : : :
: : : : :
: : : : :
: : : : :
: : : : :
: : : : :
: : : : :
26
5 Funciones
31
34 36 41 42
ITAM
43 45
ITAM
' &
MATLAB 5.1
$
4
1 Introducci
n. o
MATLAB es un sistema interactivo basado en matrices para c
lculos a cient
cos y de ingenier
a. Se pueden resolver problemas num
ricos rela
e tivamente complejos sin escribir un programa en realidad. El nombre de MATLAB es una abreviatura para MATrix LABoratory.
1.1 Objetivo
El prop sito de estas notas es ayudar en la iniciaci n a MATLAB. La o o mejor forma de utilizarlas es poner manos a la obra. Se aconseja leer las notas, realizar sus anotaciones y ha trabajar con la computadora realizando los ejercicios planteados.
Centro de C mputo. o
ITAM
' &
MATLAB 5.1
Iniciando MATLAB
$
Slide 2
Instrucci n Help o Instrucci n Help general o Instrucci n Help path o Instrucci n lookfor o Instrucci n demo o
Despu
s de entrar en MATLAB en la forma que se explica en la secci
n e o ??, se puede utilizar la ayuda de la instrucci
n help, para solicitar inforo maci
n. la instrucci
n help mostrar
una lista de modulos, para las que o o a se puede obtener ayuda mientras se est
trabajando; la instrucci
n help a o nombre del modulo nos dar
informaci
n sobre las funciones espec
cas, de a o
ese modulo. As
, la instrucci
n help general, nos dar
informaci
n sobre
o a o las funciones del modulo general. Especi camente podemos solicitar informaci
n, de una funci
n, por ejemplo help eig que calcula los autovalores de o o una matriz. Se pueden ver algunas de las capacidades de MATLAB usando la instrucci
n demo. o Actualmente el ITAM tiene MatLab 5.1, para el trabajo mediante la red, con los siguientes modulos: Neuronal Network, Control Systems, System Identi cation, Signal Procesing, Nag Foundation, Wavelet, Simulink, Communications, DSP Blockset, Image Processing, y una licencia para Statistics, Optimization, Financial. El alcance y la potencia de MATLAB van m
s all
de lo que podemos a a ver en estas notas. En alg
n momento puede desear una informaci
n m
s u o a detallada. Es el momento de consultar la gu
a del usuario y la de referencia.
Centro de C mputo. o
ITAM
'
MATLAB 5.1
Slide 3
&
matlab general - General purpose commands. matlab ops - Operators and special characters. matlab lang - Programming language constructs. matlab elmat - Elementary matrices and matrix manipulation. matlab elfun - Elementary math functions. matlab specfun - Specialized math functions. matlab matfun - Matrix functions - numerical linear algebra. matlab datafun - Data analysis and Fourier transforms. matlab polyfun - Interpolation and polynomials. matlab funfun - Function functions and ODE solvers. matlab sparfun - Sparse matrices. matlab graph2d - Two dimensional graphs. matlab graph3d - Three dimensional graphs. matlab specgraph - Specialized graphs. matlab graphics - Handle Graphics. matlab uitools - Graphical user interface tools. matlab strfun - Character strings. matlab iofun - File input output. matlab timefun - Time and dates. matlab datatypes - Data types and structures. matlab dde - Dynamic data exchange DDE. matlab demos - Examples and demonstrations. comm comm - Communications Toolbox comm commsfun - Communications Toolbox SIMULINK S-functions. comm commsim - Communications Toolbox SIMULINK les. wavelet wavelet - Wavelet Toolbox. wavelet wavedemo - Wavelet Toolbox Demos. nag nag - NAG Foundation Toolbox - Numerical & Statistical Library nag examples - NAG Foundation Toolbox - Numerical & Statistical Library dspblks dspblks - DSP Blockset. dspblks dspmex - No table of contents le dspblks dspdemos - No table of contents le images images - Image Processing Toolbox. images imdemos - Image Processing Toolbox | demos and sample images nnet nnet - Neural Network Toolbox. nnet nndemos - Neural Network Demonstrations and Applications. toolbox signal - Signal Processing Toolbox. toolbox ident - System Identi cation Toolbox. toolbox control - Control System Toolbox. control obsolete - No table of contents le simulink simulink - Simulink simulink blocks - Simulink block library. simulink simdemos - Simulink demonstrations and samples. simulink dee - Di erential Equation Editor toolbox local - Preferences.
$
6
Centro de C mputo. o
ITAM
'
MATLAB 5.1
Temario
Slide 4
&
Acceso a MATLAB Introducci
n de matrices o Operaciones con matrices, operaciones a coordenadas Declaraciones, expresiones, variables; almacenamiento de sesiones Funciones para la construcci
n de matrices o For, while, if | y relaciones Funciones escalares Funciones vectoriales Funciones matriciales Comandos de edici
n de l
nea y rellamada o
Submatrices y notaci
n de dos puntos o Archivos .m Cadenas de texto, mensajes de error, input Tratamiento de archivos .m Comparaci
n de la e ciencia de algoritmos: ops y o etime Formato de salida Hardcopy Gr
cos a Consulta
Temario MatLab
Centro de C mputo. o
ITAM
' &
MATLAB 5.1
$
8
Slide 5
Iniciando MATLAB
c:nmatlabnbinnmatlab.exe quit
Acceso a MatLab
Centro de C mputo. o
ITAM
'
variable
=
MATLAB 5.1
$
9
expresi n, o
o simplemente valor
Slide 6
MATLAB distingue las letras may
sculas de las min
sculas en los nomu u bres de instrucciones, funciones y variables. As
, resolvente no es lo mismo
que ReSoLvEnTe. La instrucci
n who muestra las variables que se encuentran en el espacio o de trabajo. Para eliminar una variable de la memoria se utiliza la instrucci
n o o clear nombre variable. Si se escribe s
lo clear se borran todas las variables no permanentes. La variable permanente eps
psilon da la precisi
n de la m
quina| e o a ,16 en la mayor
a de ellas. Es util para determinar la tolealrededor de 10
rancia en procesos iterativos. Cualquier tipo de c
lculo, gr
co, o impresi
n puede detenerse sin salir a a o del programa con CTRL-C CTRL-BREAK en PC.
1.3 Declaraciones.
&
Las expresiones se componen, normalmente, a partir de operadores, funciones y nombres de variables. La evaluaci n de o una expresi n produce una matriz, que se muestra en pantalla, o y se asigna a la variable para su posterior uso. Si se omiten la variable y el signo =, se crea una variable llamada ans por answer a la que se asigna el resultado de la expresi n. o instrucci n who o instrucci n clear o
Acceso a MatLab
Centro de C mputo. o
ITAM
'
help matfun
MATLAB 5.1
10
$
Matrices en MATLAB
Slide 7
Formas de Introducir una matriz en MATLAB Introduciendo una lista expl
cita de elementos,
Gener
ndola mediante funciones y declaraciones, ver la a secci
n 3.5 o Cre
ndola en un archivo .m ver la secci
n 7.1, a o Carg
ndola de un archivo de datos externo a
2 Vectores y matrices
&
MATLAB trabaja esencialmente con un solo tipo de objetos: una matriz num
rica rectangular o arreglos multidimensionales, con entradas posiblee
mente complejas; todas las variables representan matrices. A veces, las matrices 1 1 se consideran escalares, y las matrices con una sola la o columna se consideran como vectores. Hay varias formas diferentes para introducir una matriz en MATLAB. A saber: Introduciendo una lista expl
cita de elementos,
Gener
ndola mediante funciones y declaraciones, a Cre
ndola en un archivo .m ver secci
n 7.1, a o Carg
ndola de un archivo de datos externo a
Matrices en MatLab
Centro de C mputo. o
ITAM
'
A =
MATLAB 5.1
11
Matrices en MATLAB
1 2 3; 4 5 6; 7 8 9
$
Slide 8
y
A = 1 4 7 2 5 8 3 6 9
2.1 Declaraci n. o
&
crea la matriz 3 3 que se espera y la asigna a una variable A. Int ntelo. Los elementos en una la de una matriz pueden e separarse tanto por comas como por espacios en blanco.
Cuando alguno de los n meros se escribe en forma exponencial por u ejemplo 2.34e-9, deben evitarse los espacios en blanco. La escritura de una matriz grande debe hacerse preferentemente en un archivo .m, donde es m s a sencillo corregir errores ver secci n 7.1. o
Matrices en MatLab
Centro de C mputo. o
ITAM
'
x= 4 3 1.234e-6 x = 1.3333 x 0.0000 format long e
MATLAB 5.1
12
$
Matrices en MATLAB
Slide 9
&
x =
1.333333333333333e+000
1.234000000000000e-006
El commando format controla el formato num rico de los valores dese plegados sobre el monitor. El comando, tan s lo afecta el desplegado en el o monitor, y no en los c lculos efectuados por MATLAB. a short long bank short e long e rat short g long g hex
Matrices en MatLab
Centro de C mputo. o
ITAM
'
A=magic100; s =
MATLAB 5.1
13
$
Matrices en MATLAB
Slide 10
s=1-1 2+1 3-1 4+1 5-1 6+1 7 ... -1 8+1 9-1 10+1 11-1 12
Si se teclea la declaraci n y presionar la tecla "enter", MATLAB auo tom ticamente despliega los resultados sobre la pantalla. Sin embargo, si se a termina la linea con punto y coma, no desplegar , los c lcaulos intermedios a a ni el resultado nal. Esto es particularmente util cuando se generan enormes c lculos y se desea optimar el tiempo de proceso. a
&
6.532106782106782e-001
Matrices en MatLab
Centro de C mputo. o
ITAM
'
save june10 save june10 x y z load june10 load filename -mat save filename x* load filename ex1*95
MATLAB 5.1
14
$
&
MATLAB tiene los comandos save y load, quienes permiten salvar los contenidos de la hoja de trabajo de MATLAB, en cualquier momento durante la sesi n, y retomar los datos en MATLAB, durante la misma sesi n o alguna o o otra m s tarde. a
-ascii -double -tabs, delimitar los elementos del arreglo mediante tabs -v4, salvar en la versi n 4 de MATo LAB -append, datos para archivos Mat
Matrices en MatLab
Centro de C mputo. o
'
Slide 12
ITAM
MATLAB 5.1
15
Funciones de Algebra Lineal. directorio matfun. norm Norma de la matriz normest Estima la norma-2 de la matriz rank rango de la matriz det determinante de la matriz trace suma de los elementos diagonales null espacio nulo orth Ortogonalizaci n. o rref reduce a la forma de renglon echelon subspace a ngulo etre dos subespacios Ecuaciones Lineales n y soluci n de la ecuaci n lineal o o inv inversa de la matriz con n mero de condici n para inversi n u o o condest 1-norma estimado chol factorizaci n Cholesky o cholinc factorizaci n incompleta Cholesky o lu factorizaci n LU o luinc factorizaci n LU, incompleta o qr descomposici n Ortogonal-triangular o nnls minimos cuadrados nonegativo pinv seudoinversa lscov minimos cuadrados con covariancia
categoria
An
lisis a
Funci n o
Descripci n o
&
Matrices en MatLab
Centro de C mputo. o
'
Valores Propios y valores propios
ITAM
MATLAB 5.1
16
categoria
Funci
n o
eig svd eigs svds poly polyeig condeig hess qz schur expm logm sqrtm funm
Slide 13
Funciones de Matriz
valores propios y valores propios descomposici
n por valor singular o algunos valores propios algunos valores singulares polinomio caracter
stico
problema de v.p en polinomios n
mero de condici
n para v.p. u o forma Hessenberg factorizaci
n QZ o descomposici
n de Schur o matriz exponencial matriz logaritmica ra
z cuadrada de la matriz
evaluaci
n general en matriz o
Descripci n o
&
Matrices en MatLab Centro de C
mputo. o
ITAM
'
A = B = C =
MATLAB 5.1
A2,3=2 A = 1 3 6 1 1 1 1 2 3 1 2 6
17
A=pascal3 1 1 1 1 2 3
$
B=magic3
Slide 14
8 3 4
1 5 9
Las funciones internas rand, magic, y hilb, por ejemplo, proporcionan una forma sencilla para crear matrices con las que experimentar. La instrucci
n randn, resp. randm,n, crear
una matriz n n, resp. m n, o a con entradas aleatoriamente generadas, distribuidas uniformemente entre 0 y 1. magicn crear
una matriz cuadrada m
gica las las y las columnas a a suman la misma cantidad con entradas enteras; hilbn crear
la matriz a de Hilbert de orden n, la reina de las matrices mal condicionadas. m y n, por supuesto, denotan enteros positivos. Tambi
n se pueden crear matrices e utilizando bucles for. Int
ntelo. e Las entradas individuales de una matriz o de un vector se pueden obtener poniendo los
ndices entre par
ntesis de la forma usual. Por ejemplo, A2; 3
e denota la entrada en la segunda la y tercera columna de la matriz A y x3 denota la tercera coordenada del vector x. Int
ntelo. S
lo se pueden usar e o como
ndices de vectores y de matrices enteros positivos.
&
C=fix10*rand3,2 9 2 6 4 8 7
Matrices en MatLab
Centro de C mputo. o
ITAM
'
+ ^
0
MATLAB 5.1
18
Operaciones
X=A+B X =
$
Slide 15
, n
&
9 4 5 Y=X-A Y = 8 3 4 x=v*u;
2 7 12
7 10 8
1 5 9
6 7 2
Estas operaciones para matrices se aplican tambi n a escalares matrices e 11. Si los tama~os de las matrices son incompatibles para la operaci n n o matricial se obtiene un mensaje de error, exceptuando el caso en que uno de los operandos sea un escalar y el otro una matriz para la adici n, sustracci n, o o divisi n y multiplicaci n. En esta situaci n se opera el escalar con cada o o o t rmino de la matriz. e
Centro de C mputo. o
ITAM
'
MATLAB 5.1
19
$
Slide 16
divisi
n. o
x = Anb es la soluci
n de A x = b y, resp., o x = b=A es la soluci
n de x A = b. o
La divisi
n matricial" merece un comentario especial. Si A es una matriz o invertible y b es una columna, resp. la, compatible, entonces x = Anb es la soluci
n de A x = b y, resp., o x = b=A es la soluci
n de x A = b. o En la divisi
n izquierda, si A es cuadrada, se factoriza utilizando elimio naci
n gaussiana. Con los factores se resuelve A x = b. Si la matriz A no o es cuadrada, se factoriza utilizando la ortogonalizaci
n de Householder con o pivoteo de columnas. Con los factores se resuelve el sistema indeterminado o sobredeterminado en el sentido de los m
nimos cuadrados. La divisi
n
o 0 nb0 0 . derecha se de ne a partir de la izquierda por b=A = A
&
Centro de C mputo. o
ITAM
'
x=v*u x = 2 X=u*v X = 6 2 8 X=B' X = 0 0 0 -3 -1 -4 8 1 6 3 5 7 4 9 2
MATLAB 5.1
20
$
Slide 17
Un vector rengl n y un vector columna de la misma longitud pueden ser o multiplicados en cualquier orden. Para matrices reales, la operaci n transpuesta intercambia aij y aji , o MATLAB utiliza el ap strofe o acento simple para denotar la transpuesta. o Realice X = B0 , y X = A0 , se dar cuenta que la transpuesta de A, es la a matriz A, esto se debe a que se trata de una matriz sim trica, y sin embargo e B 6= B0 Para un vector o matriz con complejos, la cantidad z0 denota la transpuesta conjugada compleja. La transpuesta no conjugada compleja es denotada por z:0 , en analog a con las operaciones con arreglos.
&
Centro de C mputo. o
ITAM
'
X=A*B X = 15 15 38 70 15 26 39 26 41 Y=B*A Y = 15 28 34 28 47 60 43 15 15
MATLAB 5.1
21
$
Slide 18
&
MATLAB, denota con el asterisco la operaci n de multiplicaci n. La o o matriz producto C = BA, es de nida cuando la dimensi n de la columna de o A es igual a la dimensi n del rengl n de B, o cuando uno de ellos es escalar. o o Si A es una mariz m por n y B es una matriz p por n, su producto C, es m por n. El producto puede ser de nido en MATLAB usando loops, notaci n o de dos puntos, y producto punto de vectores.
Centro de C mputo. o
ITAM
'
A= 0 -6 -1 ; ... 6 2 -16; -5 20 -10 A = 0 -6 2 20 -1 -16 -10 6 -5 X=A^2 X = -31 -32 -352 -130 106 122 -215 92 170 A=sqrtmX;
MATLAB 5.1
22
$
Slide 19
La matriz A debe ser cuadrada para realizar la potenciaci n. Si A es o no singular el exponente puede ser negativo. Se permite que el exponente sea una fracci n cumpliendo la condici n de existencia de la inversa de A, o o invA. El ejemplo paralelo de ne el c lculo de la soluci n xt, para la ecuaci n a o o tA x0 en 101 puntos sobre el intervalo 0 t 1, diferencial xt = exp y se visualiza en el plano de fase tridimensional. El objetivo es utilizar la instrucci n matriz exponencial expm o
&
Centro de C mputo. o
ITAM
'
normv,inf ans = 3.0 2.2361 2.0
MATLAB 5.1
23
$
Norma
Slide 20
normv,1 normv,2... normC,1 normC,2... normC,inf ans = 19.0 14.8015 13.00
&
jjxjjp =
1
X p xp i
y en MATLAB se calcula mediante la instrucci n normx,p, donde p 1 o necesariamente, sin embargo lo m s com n es p = 1; 2 y 1. El valor por a u default es p = 2, lo cual corresponde a la distancia euclidiana La norma-p de una matriz A es:
Centro de C mputo. o
ITAM
'
Funci
n. o
eye zeros ones diag triu tril rand hilb magic toeplitz
MATLAB 5.1
24
Construcci
n de Matrices. o
Descripci
n. o
matriz identidad matriz de ceros matriz de unos ver m
s adelante a parte triangular superior de una matriz parte triangular inferior de una matriz matriz generada aleatoriamente matriz de Hilbert matriz m
gica a ver help toeplitz
$
Slide 21
&
Por ejemplo, zerosm,n produce una matriz nula m n, y zerosn produce otra cuadrada de orden n; si A es una matriz, entonces zerosA produce una matriz de ceros del mismo orden que A. Si x es un vector, diagx es la matriz diagonal con x en su diagonal; si A es una matriz cuadrada, diagA es un vector formado por la diagonal de A. Qu
ser
entonces diagdiagA? Int
ntelo. e a e Las matrices se pueden construir por bloques. Por ejemplo, si A es 3 3, entonces
B = A, zeros3,2; zeros2,3, eye2
Centro de C mputo. o
ITAM
'
MATLAB 5.1
25
$
operaciones a coordenadas.
Slide 22
Es importante observar que las operaciones, , b , n, y , pueden evaluarse por coordenadas, y en MATLAB es factible al ir precedidas de un punto. Por ejemplo, tanto 1; 2; 3; 4 : 1; 2; 3; 4 como 1; 2; 3; 4 :b 2 dar
n a 1; 4; 9; 16 .
&
Centro de C mputo. o
ITAM
'
Las instrucciones:
x =
MATLAB 5.1
26
for
; for i = 1:n, x= x,ib
$
, end
Slide 23
o
x = x = ; x,ib for i = 1:n end
&
dar n como resultado un vector, mientras que a x = ; for i = n:-1:1, x= x,ib 2 , end dar el mismo vector en orden inverso. a
B sicamente, las instrucciones para el control de ujo de MATLAB opea ran como en la mayor parte de los lenguajes usuales.
4.1 for
Las instrucciones siguientes, en base al for, producir
n e imprimir
n en a a pantalla la matriz de Hilbert m n.
for i = 1:m for j = 1:n Hi, j = 1 i+j-1; end end H
El punto y coma de la instrucci
n interior suprime la impresi
n no deo o seada de los resultados intermedios mientras que el ultimo H muestra el re
sultado nal.
Control de ujo en MatLab
Centro de C mputo. o
ITAM
'
end
MATLAB 5.1
27
$
while.
Slide 24
La forma general de un bucle while es: while relaci
n o instrucciones
Por ejemplo, dado un n
mero a, las instrucciones siguientes calculan y u muestran el menor entero no negativo n tal que 2n a:
n = 0; while 2b n a n = n + 1; end n
4.2 while
&
Centro de C mputo. o
ITAM
'
end
MATLAB 5.1
28
$
if
Slide 25
La forma general de un bucle if simple es: if relaci
n o instrucciones
4.3 If
&
Tambi n son posibles las rami caciones m ltiples, como se ilustra con e u
Si s lo tenemos dos rami caciones podemos omitir, desde luego, la porci n o o correspondiente a elseif.
Centro de C mputo. o
ITAM
'
MATLAB 5.1
29
relaciones
$
Slide 26
Los operadores relacionales en MATLAB son: menor que mayor que = menor o igual que = mayor o igual que == igual = no igual.
En el uso de las relaciones y operadores en MATLAB, recordemos lo siguiente: se usa =" en las asignaciones mientras que para las relaciones se usa ==". Cuando se aplican a escalares los operadores l gicos, una relaci n es o o realmente el escalar 1 o 0 dependiendo de si la relaci n es verdadera o o falsa: Pruebe con 3 5, 3 5, 3 == 5 y 3 == 3. Cuando se aplica a matrices del mismo orden, una relaci n entre ellas o da lugar a una matriz de ceros y unos, dando el valor de la relaci n o entre las correspondientes entradas. Pruebe con a = rand5, b = triua, a == b.
4.4 Relaciones
&
Las relaciones pueden conectarse o cuanti carse por los operadores l gicos o &
j
y o no.
Centro de C mputo. o
ITAM
'
if A == B
MATLAB 5.1
30
$
Si se quiere ejecutar algo, cuando las matrices A y B sean iguales, se puede escribir:
algo
end
Slide 27
algo
=
B
Cuando se utiliza una relaci
n entre matrices en un bucle while o if, la o relaci
n se entiende verdadera, si cada una de las entradas de la matriz de o relaci
n es no nula. o En el ejemplo denotemos que no se puede recurrir a la obviedad, if A = B, algo, end ya que no har
lo que deseamos. La instrucci
n s
lo se ejecutar
si todas las a o o a entradas de A son distintas de las de B y se requieren dos anys ya que any es un operador vectorial. Las funciones any y all pueden utilizarse de forma creativa para reducir relaciones entre matrices a relaciones entre vectores y escalares. La instrucci
n for permite usar cualquier matriz en vez de 1:n. Ver la o Gu
a del usuario para los detalles de c
mo esta posibilidad ampl
a la potencia
o
de la instrucci
n for. o
&
end
end
o, m
s simplemente, a
if A == B else
algo
Centro de C mputo. o
ITAM
'
MATLAB 5.1
31
$
funciones escalares
Slide 28
Las funciones m
s comunes entre estas son: a sin asin exp abs round cos acos lognatural sqrt floor tan atan remresto sign ceil
5 Funciones
&
Algunas funciones de MATLAB operan esencialmente sobre escalares, aunque lo hacen tambi n sobre matrices elemento a elemento. e
Centro de C mputo. o
ITAM
'
MATLAB 5.1
32
$
Funciones vectoriales
Slide 29
max sum median any min prod mean all sort std
&
5.2 Funciones vectoriales
Otras funciones de MATLAB operan fundamentalmente sobre vectores la o columna, aunque tambi n pueden operar sobre matrices mn m 2 e haciendolo en este caso columna a columna, produciendo, por tanto, un vector la que contiene el resultado de su aplicaci n a cada columna. Para cono seguir que act en por las basta usar la traspuesta; por ejemplo, meanA''. u Veamos algunas de estas funciones: Por ejemplo, la entrada m xima de un matriz A se obtiene con maxmaxA a en vez de maxA. Int ntelo. e
Centro de C mputo. o
ITAM
' &
MATLAB 5.1
autovalores y autovectores factorizaci
n de Cholesky o descomposici
n en valores singulares o inversa factorizaci
n LU o factorizaci
n QR o forma de Hessenberg descomposici
n de Schur o forma escalonada reducida por las matriz exponencial matriz ra
z cuadrada
polinomio caracter
stico
determinante tama~o n norma 1, norma 2, norma de Frobenius, norma 1 n
mero de condici
n en la norma 2 u o rango
Slide 30
eig chol svd inv lu qr hess schur rref expm sqrtm poly det size norm cond rank
$
33
Las funciones de MATLAB admiten argumentos de salida simples o m ltiples. Por ejemplo, y = eigA, o simplemente eigA genera un vector u columna conteniendo los autovalores de A mientras que U,D = eigA produce una matriz U cuyas columnas son los autovectores de A y una matriz diagonal D con los autovalores de A en su diagonal. Pruebe.
Centro de C mputo. o
ITAM
'
x = 0.0:0.1:2.0 '; y = sinx; x y
MATLAB 5.1
34
submatrices
$
Slide 31
La expresi n 1:5 que ya encontramos en los bucles for es o realmente un vector la: el 1 2 3 4 5 . Los n meros no tienen que ser enteros ni el incremento uno. Por u ejemplo, 0.2:0.2:1.2 da como resultado 0.2 0.4 0.6 0.8 1.0 1.2 , mientras que con 5:-1:1 se obtiene el vector 5 4 3 2 1 . Las siguientes instrucciones, por ejemplo, generar n una tabla a de senoides.
&
Los vectores y submatrices son utilizados a menudo en MATLAB para conseguir efectos de manipulaci n bastante complejos. o La notaci n de dos puntos" que se utiliza para generar vectores y subo matrices, y la indexaci n por vectores, son las llaves para una manipulaci n o o e ciente de estos objetos. Su uso de forma creativa permite minimizar el n mero de bucles que ocasiona una ejecuci n lenta del programa hecho en u o MATLAB y hacen que las instrucciones sean m s simples y legibles. Debe a hacerse un esfuerzo especial para familiarizarse con esta notaci n. o
Submatrices en MatLab
Centro de C mputo. o
ITAM
'
MATLAB 5.1
35
Slide 32
La notaci
n de dos puntos permite acceder a submatrices. Por ejemplo, o es el vector columna con las cuatro primeras entradas de la tercera columna de A. Si denotamos por x un vector con n componentes, cu
l es el efecto de a la instrucci
n x = xn:-1:1? Haga la prueba. o Para comprobar la utilidad de esta notaci
n, podr
a comparar estas ino
strucciones de MATLAB con una rutina de Pascal, FORTRAN, o C que d
e los mismos resultados.
A1:4,3
&
Dos puntos sin m
s especi caci
n denotan una la o columna a o completa: A:,3 es la tercera columna de A, y A1:4,: son las cuatro primeras las. Se pueden usar como
ndices de vectores enteros arbitrarios:
A:, 2 4 est
formada por las columnas segunda y cuarta de A. a Se pueden usar a ambos lados de una instrucci
n de asignaci
n: o o A:, 2 4 5 = B:,1:3 reemplaza las columnas 2, 4 y 5 de A por las tres primeras de B. Realice la muestra y asigne la matriz A alterada completa. Las columnas 2 y 4 de A pueden multiplicarse por la derecha por una matriz 2 2:
A:, 2,4 = A:, 2,4 * 1 2;3 4
$
Centro de C mputo. o
ITAM
'
A = 1 2 3 4 5 6 7 8 ;
MATLAB 5.1
36
archivo de instrucciones
$
Slide 33
Los archivos de instrucciones son utilizados a menudo para introducir datos en una matriz grande. En un archivo de este tipo es bastante sencillo corregir los errores sin tener que repetir todo el trabajo. Si, por ejemplo, se escribe en el archivo datos.m la secuencia:
7 Archivos .m
&
entonces la instrucci n de MATLAB datos, har que se efect e la o a u asignaci n especi cada en datos.m. o Un archivo .m puede hacer referencia a otros, incluyendo a l e mismo.
MATLAB puede ejecutar una sucesi n de instrucciones almacenadas en o archivos. Estos archivos se denominan archivos .m", debido a que su su jo debe ser m". Gran parte del trabajo con MATLAB ser el de crear y re nar a archivos .m. Hay dos tipos de archivos .m: archivos de instrucciones y archivos de funciones. Un archivo de instrucciones consiste en una sucesi n de instrucciones o normales de MATLAB. Si tuvi ramos un archivo denominado nombre.m, e las instrucciones del archivo pueden ser ejecutadas sin m s que escribir la a instrucci n nombre. Las variables en un archivo de instrucciones son globales o y, por tanto, cambiar n los valores del espacio de trabajo. a
Archivos m en MatLab
Centro de C mputo. o
ITAM
'
entre a y b. if nargin
MATLAB 5.1
37
archivo de funciones
$
function a = entalm,n ENTAL Matriz entera generada aleatoriamente. entalm,n produce una matriz mxn con entradas enteras entre 0 y 9
Slide 34
a = floor10*randm,n;
&
a = floorb-a+1*randm,n+a;
Los archivos de funciones hacen que MATLAB tenga capacidad de crecimiento. Se pueden crear funciones espec
cas para un problema concreto, y
a partir de su introducci
n, tendr
n el mismo rango que las dem
s funciones o a a del sistema. Las variables en las funciones son locales. Sin embargo, ls versi
n 5.0 permite declarar una variable como global. o El ejemplo de la transparencia debe escribirse en el archivo ental.m correspondiente al nombre de la funci
n. La primera l
nea declara o
el nombre de la funci
n, argumentos de entrada, y argumentos de salida; o sin esta l
nea el archivo ser
a uno de instrucciones. La instrucci
n z =
o ental4,5, por ejemplo, har
que los n
meros 4 y 5 pasen a las varia u ables m y n en el archivo de funci
n y el resultado se asigna a la variable o z. Como las variables en un archivo de funci
n son locales, sus nombres son o independientes de los que se encuentren en el espacio de trabajo. Hagamos notar que el uso de nargin n
mero de argumentos de enu trada", permite asignar un valor por defecto en caso de que una variable se omita | como a y b en el ejemplo.
Archivos m en MatLab Centro de C
mputo. o
ITAM
'
function conteniendo, m n cada columna. = sizex; if m == 1 end
MATLAB 5.1
38
funci
n my estad.m o
media, desv = estadx Para un vector x,
$
Slide 35
Una funci
n puede tener tambi
n argumentos de salida m
ltiples. Esto o e u es una vez situado en el archivo de disco estad.m, la funci
n de la transpareno cia; la instruci
n de MATLAB xm, xd = estadx, por ejemplo, asignar
o a la media y la desviaci
n t
pica de x a las variables xm y xd, respectivamente. o
Cuando se dispone de una funci
n con argumento de salida m
ltiple, se o u pueden efectuar asignaciones simples. Por ejemplo, xm = estadx no son necesarios los corchetes alrededor de xm asignar
la media de x a xm. a El s
mbolo indica que el resto de la l
nea es un comentario; MATLAB
ignorar
el resto de la l
nea. Las primeras l
neas de comentario, que docua
mentan el archivo, son accesibles con la instrucci
n help. As
, para que se o
muestren en pantalla basta escribir help estad. Dicha documentaci
n debe o incluirse siempre en un archivo de funci
n. o Esta funci
n ilustra algunas de las formas en que MATLAB puede usarse o para obtener un c
digo e ciente. Hagamos notar, por ejemplo, que x.b 2 es o la matriz de los cuadrados de las entradas de x, que sum es una funci
n o vectorial, que sqrt es una funci
n escalar, y que la divisi
n en sumx m o o opera una matriz con un escalar.
&
media = sumx m;
Archivos m en MatLab
Centro de C mputo. o
ITAM
'
son nulos' else while b
MATLAB 5.1
39
$
function a = mcda,b MCD M ximo com n divisor a u mcda,b es el m ximo com n divisor de a y b no a u nulos a la vez.
Slide 36
a = roundabsa; b = roundabsb; if a == 0 & b == 0 error'El mcd no est definido cuando ambos n meros a u
La funci
n de la transparencia, que da el m
ximo com
n divisor de dos o a u enteros v
a el algoritmo de Euclides, ilustra el uso de un mensaje de error
ver secci
n siguiente. o Algunas de las funciones de MATLAB son internas mientras que otras se distribuyen como archivos .m. El listado de cualquier archivo de extensi
n o *.m|de MATLAB o del usuario|puede obtenerse con la instrucci
n de o o MATLAB type nombre de funci
n. Pruebe con type eig, type vander, y type rank.
&
end
=
r = rema,b; a = b; b = r;
end
Archivos m en MatLab
Centro de C mputo. o
ITAM
MATLAB 5.1
40
Algunas posibilidades m
s avanzadas se ilustran con la siguiente funci
n. Las a o entradas de la funci
n|como tol en el ejemplo siguiente, puede hacerse opcional o mediante el uso de nargin n
mero de argumentos de entrada". La variable u nargout puede usarse de forma similar. Hagamos notar que el hecho de que una relaci
n es un n
mero 1 cuando es cierta; 0 cuando es falsa es usado, y que, o u cuando while o if eval
an una relaci
n, no cero" signi ca cierto" y 0 signi ca u o falso". Finalmente, la funci
n de MATLAB feval permite tener como variable o de entrada una cadena que d
nombre a otra funci
n. e o
BISECC Cero de una funci
n de una variable por bisecci
n. o o biseccfun,x produce un cero de la funci
n. fun es una cadena o conteniendo el nombre de una funci
n real de una variable real; o normalmente las funciones est
n de nidas en archivos .m. a x es el punto inicial. El valor producido est
cerca de un a punto donde la funci
n cambia de signo. Por ejemplo, o bisecc'sin',3 es pi. N
tense las comillas alrededor de sin. o Un tercer argumento de entrada opcional ja la tolerancia para la precisi
n relativa del resultado. El valor por defecto o es eps. Un argumento de salida opcional produce una matriz con las iteraciones; sus las son de la forma c, fc .
if nargin 3, tol = eps; end traza = nargout == 2; if x = 0, dx = x 20; else, dx = 1 20; end a = x - dx; fa = fevalfun,a; b = x + dx; fb = fevalfun,b; Encontrar un cambio de signo. while fa 0 == fb 0 dx = 2.0*dx; a = x - dx; fa = fevalfun,a; if fa 0 = fb 0, break, end b = x + dx; fb = fevalfun,b; end if traza, pasos = a fa; b fb ; end Bucle Principal while absb - a 2.0*tol*maxabsb,1.0 c = a + 0.5*b - a; fc = fevalfun,c; if traza, pasos = pasos; c fc ; end if fb 0 == fc 0 b = c; fb = fc; else a = c; fa = fc; end end function b, pasos = biseccfun, x, tol
Archivos m en MatLab
Centro de C mputo. o
ITAM
'
MATLAB 5.1
41
$
Cadenas de texto
Slide 37
s = 'Esto es una prueba' disp'Este mensaje se est
mostrando aqu
' a
error'Lo siento, la matriz debe ser sim
trica' e
&
'
Las cadenas de texto se introducen en MATLAB entre comillas simples. Por ejemplo,
ya que
sta hace que la ejecuci
n salga del archivo .m. e o En un archivo .m el usuario puede ser avisado para introducir datos interactivamente con la funci
n input. Si MATLAB se encuentra, por ejemplo, o con la instrucci
n: o la cadena entre comillas se muestra y la ejecuci
n se detiene mientras el o usuario introduce los datos. Tras pulsar el retorno de carro los datos se asignan a la variable iter y contin
a la ejecuci
n. u o
cadenas de texto en MatLab Centro de C
mputo. o
iter = input'Introduzca el n
mero de iteraciones: u '
ITAM
'
MATLAB 5.1
42
Slide 38
9 Tratamiento de archivos .m
&
Mientras se usa MATLAB se necesita usualmente crear o editar un archivo .m y regresar a MATLAB. Ser
a deseable mantener
MATLAB activo mientras se edita un archivo pues, en caso contrario, se perder
an todas las variables tras salir.
Esto puede hacerse f
cilmente con el signo !. Si, estando en a MATLAB, escribe una instrucci
n del sistema operativo o |como las que se usan para editar, imprimir y copiar un archivo| precedida del signo !, se ejecuta la instrucci
n sin o salir de MATLAB. Si por ejemplo, la instrucci
n del sistema o operativo edit accede al editor, la instrucci
n de MATLAB o le permitir
editar el archivo nombre.m usando su editor local. a Tras dejar el editor, retornar
a MATLAB, justo donde se dej
. a o
!edit nombre.m
$
La versi
n 5.0 dispone de varias herramientas de rastreo. Ver help o dbtype y las referencias que se dan all
.
Aunque las siguientes instrucciones re ejan las del sistema operativo, evitan el uso de !. Estando en MATLAB, la instrucci
n dir mostrar
los o a contenidos del directorio activo mientras que what mostrar
s
lo los archivos a o .m en el directorio. Las instrucciones delete y type sirven para borrar un archivo de disco e imprimirlo en pantalla, respectivamente, y chdir para cambiar el directorio de trabajo. Los archivos .m deben ser accesibles a MATLAB. En la mayor
a de los
sistemas o instalaciones en red, los archivos .m personales que se almacenan en un subdirectorio del directorio ra
z denominado matlab ser
n accessibles
a para MATLAB desde cualquier directorio en el que se trabaje. Ver la discusi
n de MATLABPATH, en la Gu
a del usuario, para m
s informaci
n. o
a o
Centro de C mputo. o
ITAM
'
MATLAB 5.1
43
$
Slide 39
&
La funci n flops es un contador de las operaciones realizadas. o La instrucci n flops0 no flops=0! inicializa el contador a o 0. Por tanto si usamos flops0 inmediatamente antes de ejecutar un algoritmo, la instrucci n flops situada justo al o nal nos dar el n mero de operaciones que se han efectuado a u en su ejecuci n. o La funci n clock da la hora actual aproximada hasta la o cent sima de segundo ver help clock. Dados dos tiempos t1 e y t2, etimet2,t1 proporciona el tiempo transcurrido de t1 a t2.
Dos medidas de la e ciencia de un algoritmo son el n mero de operau ciones realizadas y el tiempo gastado: mediante ops y etime. Se puede, por ejemplo, medir el tiempo que requiere la resoluci n de un o sistema de ecuaciones dado Ax = b usando eliminaci n gaussiana como sigue: o tiempo = clock; x = Anb; tiempo = etimeclock,tiempo Puede desear comparar ste |y la cuenta flop| con los valores que se obtienen e usando x = invA*b;. Int ntelo. e Hagamos notar que, en m quinas que operan a tiempo compartido, etime a no es una medida able de la e ciencia de un algoritmo ya que la velocidad de ejecuci n depende de lo ocupada que est la m quina en un momento o e a determinado.
Centro de C mputo. o
ITAM
'
MATLAB 5.1
44
Formato de salida
$ $
Slide 40
Aunque todos los c
lculos en MATLAB se efect
an en doble a u precisi
n, el formato de la salida en pantalla puede ser controlado o con las siguientes instrucciones. format short coma ja con 4 decimales el defecto format long coma ja con 14 decimales format short e notaci
n cient
ca con 4 decimales o
format long e notaci
n cient
ca con 15 decimales o
& '
Slide 41
Una vez que se ordena un formato, se mantiene hasta que se ordena un cambio. La orden format compact evitar
la mayor parte de las l
neas en a
blanco, con lo que se puede mostrar m
s informaci
n en pantalla. a o Es independiente de las dem
s instrucciones de formato. a
Hardcopy
&
La forma m
s sencilla de obtener una hardcopy a es con la a instrucci
n diary. La orden o diary nombre de archivo hace que todo lo que aparezca a continuaci
n en pantalla excepto o los gr
cos sea escrito en el archivo nombre de archivo si se omite a el nombre se toma por defecto diary hasta que se ordena diary off; la instrucci
n diary on har
que se escriba al nal del o a archivo, etc. Al terminar, se puede editar el archivo como se desee e imprimirlo en el sistema local. Todo se puede hacer sin salir de MATLAB usando el signo ! ver secci
n 9. o
a Una
Centro de C mputo. o
ITAM
'
MATLAB 5.1
45
$
Slide 42
11 Gr
cos a
11.1 Gr
cos planos a
&
XY; si x e y son vectores de la misma longitud, la orden plotx,y accede a la pantalla gr
ca y realiza un gr
co plano de los a a elementos de x contra los elementos de y. Pueden ponerse t
tulos, comentarios en los ejes o en cualquier
otra parte con los siguientes comandos que tienen una cadena como argumento: title t
tulo del gr
co
a xlabel comentario en el eje x ylabel comentario en el eje y gtext texto posicionado interactivamente text texto posicionado mediante coordenadas
MATLAB puede producir gr
cos planos y gr
cos de malla de supera a cies tridimensionales. Para ver algunas de sus posibilidades realice los siguientes ejemplos: Por ejemplo, podemos dibujar la gr
ca de la funci
n seno sobre el a o intervalo ,4; 4 con las instrucciones siguientes: donde el vector x es una partici
n del dominio con paso 0.01, mientras que y o es un vector sin es vectorial con los valores que toma el seno en los nodos de esta partici
n. o Como un segundo ejemplo, puede dibujar la gr
ca de y = e,x2 sobre a el intervalo ,1:5; 1:5 como sigue: Hagamos notar que b est
precedido por un punto para asegurarnos que a opera a coordenadas.
G
cos en MatLab a Centro de C
mputo. o
x = -1.5:.01:1.5; y = exp-x.b 2; plotx,y x = -4:.01:4; y = sinx; plotx,y
ITAM
'
MATLAB 5.1
46
$
Slide 43
Pueden hacerse tambi
n gr
cos de curvas de nidas param
tricamente. e a e Por ejemplo,
t=0:.001:2*pi; x=cos3*t; y=sin2*t; plotx,y
&
gr
cos param
tricos. a e La instrucci
n grid har
un cuadriculado en el gr
co actual. o a a Pueden ponerse t
tulos, comentarios en los ejes o en cualquier
otra parte. Por defecto, los ejes se autoescalan. Para evitarlo se usa el comando axis. Existe forma de obtener dibujos m
ltiples. u Se pueden evitar los tipos de l
nea y de punto por defecto.
G cos en MatLab a
Centro de C mputo. o
ITAM
'
1.
MATLAB 5.1
47
y formando una matriz Y conteniendo los valores funcionales como columnas x=0:.01:2*pi; Y= sinx',
sin2*x', sin4*x' ; plotx,Y
Slide 44
2. Otra forma es con hold. El comando hold congela la pantalla gr
ca actual de forma que los gr
cos a a posteriores se sobreimponen en ella. Escribiendo hold de nuevo se libera el hold." Los comandos hold on y hold off tambi
n est
n disponibles en la versi
n 5.0. e a o Se pueden evitar los tipos de l
nea y de punto por defecto.
Por ejemplo,
x=0:.01:2*pi; y1=sinx; y2=sin2*x; y3=sin4*x; plotx,y1,'--',x,y2,':',x,y3,'+'
&
G cos en MatLab a
Centro de C mputo. o
ITAM
'
x,y
MATLAB 5.1
48
$
&
x,y
Entonces se computa la matriz z, obtenida evaluando f entrada a entrada sobre las matrices x e y, para aplicarle la funci n mesh. o
= meshgridxx,yy;
Los gr
cos de malla de super cies tridimensionales se hacen con la a funci
n mesh. La instrucci
n meshz crea un gr
co tridimensional en pero o a spectiva de la matriz z. La super cie de malla est
de nida por las coordea nadas z de los puntos sobre un cuadriculado rectangular en el plano XY. Por ejemplo, pruebe con mesheye10. 2 Se puede dibujar la gr
ca de z = e,x2,y sobre el cuadrado ,2; 2 a ,2; 2 como sigue int
ntelo: e
xx = -2:.1:2; yy = xx; x,y = meshgridxx,yy; z = exp-x.b 2 - y.b 2; meshz
Se podr
a, desde luego, cambiar las tres primeras l
neas en lo anterior por
= meshgrid-2:.1:2, -2:.1:2;