Documente Academic
Documente Profesional
Documente Cultură
asicos de Matlab
Santiago, 2012
Indice
1. Introducci
on
2. Elementos b
asicos
2.2. Operatoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3. Matrices y vectores
3.1. Construcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2. Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.3. Operatoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4. Funciones
4.1. Funciones elementales
12
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
12
14
5. Gr
aficos
15
1.
Introducci
on
Este es un peque
no texto donde se tratan los elementos mas basicos de Matlab. El objetivo es servir de apoyo a estudiantes interesados en utilizar el software para aplicaciones complementarias
de su curso de metodos numericos, analisis numerico o bien solo por el hecho de familiarizarse
con el software. La idea central es entregar las herramientas basicas con las cuales, acompa
nadas
de conocimientos en programacion, puedan construir herramientas mas especificas.
El software Matlab es un lenguaje orientado a matrices, es decir, todas las representaciones
basicas hacen referencia estos elementos. Sin bien parece ser limitado el hecho de trabajar con
matrices, al poco andar y con un poco de imaginacion podemos notar la enorme cantidad de
cosas que podemos interpretar como matrices, desde un n
umero real (matriz de 1x1) hasta
imagenes JGP (una imagen peque
na, por ejemplo, puede interpretarse como una matriz de 128
pixeles x 128 pixeles).
Ventajas
Manejo de matrices
Facil representacion de datos y funciones
Lenguaje simple para la implementacion de algoritmos
Gran cantidad de funciones pre-establecidas
Desventajas
Uso exagerado de recursos computacionales
Difcilmente se puede controlar el uso de memoria
2.
2.1.
Elementos b
asicos
Interfaz de usuario
El software nos presenta una gran cantidad de interfaces de usuario, todas con un proposito u
til
y especifico. Entre las mas utilizadas tenemos 3 que son las que generalmente aparecen al iniciar
el programa despues de su instalacion.
Command Window La ventana de comandos es la interfaz con la que interactua el
usuario. En este cuadro tenemos la posibilidad de escribir las instrucciones, ejecutarlas y
ver los resultados.
Workspace Este cuadro designado como espacio de trabajo nos muestra las variables que
vamos guardando durante nuestro trabajo. Desde ella podemos acceder a las variables y
modificarlas o hasta eliminarlas directamente.
Command History El historial de comandos guarda un registro completo de cada instruccion que ejecutamos en el Command Window. Es u
til como referencia y da la posibilidad de repetir una instruccion solo con con darle doble click a esta.
2.2.
Operatoria
Una buena practica inicial es trabajar con operaciones elementales en la ventana de comandos.
Para ello utilizamos la ventana de comandos como si esta fuese una calculadora, la sintaxis en
este caso es de las mas usuales +, , , /, ^ para suma, resta, multiplicacion, division y potencias
respectivamente. Se utilizan parentesis normales para dar prioridad a las operaciones cuando
sea necesario.
>> 9+6*5
ans =
39
Note en este punto que Matlab reconoce el orden de las operaciones y que cada vez que no
asignamos un nombre de variable a alguna instruccion que entrega un valor, este valor se guarda
en la variable ans que inmediatamente aparece en el Workspace.
Podemos asignar valores a variables, basta con ejecutar el comando a=5 para que nuestra variable a tome el valor 5, esta ejecucion se refleja tambien en el Workspace. Observamos que
Matlab diferencia entre may
usculas o min
usculas, ademas las variables pueden tener n
umeros
en su nombre pero no otro tipo de caracteres (como tildes o comas).
Podemos tambien limpiar las interfaces de usuario con algunos comandos, por ejemplo, si ejecutamos clc limpiamos la ventana Command Windows, esto sirve para tener mayor claridad y
no confundirse con calculos anteriores. El comando clear limpia el Workspace, es decir, elimina
las variables que hemos guardado, es u
til cuando quiere empezarse un trabajo desde cero.
4
3.
Matrices y vectores
3.1.
Construcciones
Como vimos podemos asignar valores a variables ejecutando por ejemplo >> x = 6. En este
caso lo que hace Matlab es considerar el n
umero real 6 como una matriz de 1x1. Para obtener
dimensiones mayores, solo debemos asignar los valores de nuestro arreglo dentro de corchetes y
separados por espacios. Por ejemplo si queremos declarar el vector
V = 1 2 3 4 5
tendramos que hacerlo de la siguiente forma
>> V = [1 2 3 4 5]
V =
1
2
3
2 3 5
A= 4 6 1
7 9 8
el comando a ejecutar sera el siguiente.
>> A = [2 3 5;4 6 1;7 9 8]
A =
2
3
5
4
6
1
7
9
8
Matlab ofrece funciones para realizar construcciones rapidas de matrices, estas se usan cuando
las matrices son de dimensiones grandes y tienen formas especificas. A continuacion se muestran
algunas de estas funciones.
(En lo que sigue suponemos que A, B, C son matrices, V es un vector y n, m son n
umeros
enteros)
zeros(n,m) Devuelve una matriz de dimension n x m con cero en todas sus componentes.
ones(n,m) Devuelve una matriz de dimension n x m con uno en todas sus componentes.
eye(n,m) Devuelve una matriz de dimension n x m con unos en la diagonal principal y
ceros fuera.
rand(n,m) Devuelve una matriz de dimension n x m con componentes aleatorias.
diag(V) Devuelve una matriz diagonal donde la diagonal contiene los elementos de V.
blkdiag(A,B,C) Devuelve una matriz diagonal por bloques donde la diagonal contiene a
las matrices A,B,C.
3.2.
Referencias
Tal como en otros lenguajes de alto nivel, podemos hacer referencia a componentes especificas
de matrices y vectores. Se debe tener cuidado con los indices a utilizar ya que a diferencia de
C/C++ en Matlab los contadores inician desde 1 y no desde cero. Por ejemplo el primer elemento de una matriz A en C/C++ es el elemento A00 , mientras que en Matlab nos tenemos
que referir a este elemento como A11 . La forma de hacer referencia a componentes es la siguiente.
>> A
A =
2
4
6
4
7
7
5
5
4
>> A(2,3)
ans =
5
>> A(2,:)
ans =
4
5
4
>> A(:,1)=[]
A =
4
5
7
4
3.3.
Operatoria
Una gran ventaja del software es el facil trabajo con matrices, la interfaz nos permite realizar operaciones sobre matrices sin necesidad de escribir algoritmos com debemos hacerlo en
otros lenguajes. Las sumas, productos, potencias, etc. son todas funciones pre-establecidas y se
consiguen con la sintaxis intuitiva.
A+B Devuelve la suma de las matrices.
c*A Devuelve el producto del escalar c con la matriz A.
A*B Devuelve el producto de matrices, siempre que este tenga sentido.
A^(-1) Devuelve la inversa de A siempre que exista.
A/B Devuelve el producto A B 1
Muchas veces necesitamos operar matrices componente a componente, para esto debemos anteponer un punto a la operacion. Por ejemplo si queremos hacer la multiplicacion de las componentes de matriz A con las de la matriz B debemos ejecutar A.*B
51
72
73
26
39
41
>> A.*B
ans =
2
16
24
12
35
35
10
15
8
>> I = eye(3,3)
I =
1
0
0
1
0
0
>> exp(I)
ans =
2.7183
1.0000
1.0000
>> cos(pi*I)
ans =
-1
1
1
-1
1
1
0
0
1
1.0000
2.7183
1.0000
1.0000
1.0000
2.7183
1
1
-1
Observaci
on Aunque se necesite una sola linea de codigo para ejecutar un producto de matrices
no cometa el error de pensar que es una operacion simple. Recuerde que Matlab esta programado
en Java y C/C++, por lo que una operacion de producto de matrices es costosa en cuanto a
recursos computacionales y tiempo (del orden (n3 ) con un algoritmo simple)
3.4.
>> diag(V,2)
ans =
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
2
0
0
0
0
10
0
0
3
0
0
0
0
0
0
4
0
0
>> V=[2 4 6]
V =
2
4
>> cat(1,U,V)
ans =
1
3
2
4
5
6
>> cat(2,U,V)
ans =
1
3
11
4.
4.1.
Funciones
Funciones elementales
Pensando nuevamente en la ventana de comandos como una calculadora cientfica nos gustara
calcular con funciones elementales. Esto es posible y la sintaxis es la siguiente.
valor absoluto
raz cuadrada
exponencial
logaritmo natural, logaritmo base 10
seno, coseno, tangente
arcseno, arccoseno, arctangente
seno, coseno, tangente (Hiperbolicos)
arcseno, arccoseno, arctangente (Hiperbolicos)
piso, techo, parte entera
4.2.
abs()
aqrt()
exp()
log(), log10()
sin(), cos(), tan()
asin(), acos(), atan()
sinh(), cosh(), tanh()
asinh(), acosh(), atanh()
floor(), ceil(), fix()
La mayora de la veces no trabajamos con funciones elementales directamente, si no que trabajamos con mezclas de ellas (productos, sumas, composiciones). En este caso Matlab nos ofrece una
forma comoda e intuitiva de representar estas funciones, la representacion se basa en funciones
de tipo inline.
Las funciones de tipo inline son utilizadas, generalmente, para obtener datos de salida numericos, es decir, obtener evaluaciones de las funciones. Esto quiere decir que las funciones de tipo
inline requieren de un argumento numerico a la hora de ser llamadas y devuelven el valor correspondiente de la funcion.
Veremos como declarar funciones con un ejemplo. Supongamos que queremos trabajar con la
funcion
sen(x)
f (x) =
x2
12
13
4.3.
Funciones simb
olicas
Ahora veremos como trabajar con variables simbolicas, este tipo de variables sirve para representar funciones con un valor generico. Cuando se estudia matematica se trabaja con funciones
f (x) en ese caso x es un smbolo que representa la presencia de un n
umero del dominio. Es
justamente eso lo que hace Matlab cuando se trabaja con variables simbolicas.
Para declarar variables simbolicas se usa el comando syms, luego podemos definir funciones con
esta variable. Por ejemplo consideremos la instruccion
>> syms x
>> f = 5*x^3
f =
5*x^3
>> g = x^2
g =
x^2
Aqu hemos declarado x como variables simbolica y f como la funcion f (x) = 5x3 y g como
g(x) = x2 .
No podemos evaluar en la funcion f, el comando f(3) no tiene sentido en este contexto (como
vimos las funciones inline sirven para evaluar). La gracia de las funciones simbolicas es obtener
resultados tambien simbolicos como derivadas, primitivas u operaciones. Por ejemplo podemos
obtener un resultado reducido del producto y division de funciones de funciones
>> f*g
ans =
5*x^5
>> f/g
ans =
5*x
Con los comandos diff e int podemos obtener la derivada e integral de las funciones
>> diff(f)
ans =
15*x^2
>> int(g)
ans =
x^3/3
14
5.
Gr
aficos
15