Sunteți pe pagina 1din 15

Elementos b

asicos de Matlab

Juan Pablo Contreras

Santiago, 2012

Universidad de Santiago de Chile


Facultad de Ciencia
Departamento de Matematicas

Indice
1. Introducci
on

2. Elementos b
asicos

2.1. Interfaz de usuario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2.2. Operatoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3. Matrices y vectores

3.1. Construcciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.2. Referencias . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.3. Operatoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.4. Funciones sobre matrices y vectores . . . . . . . . . . . . . . . . . . . . . . . . .

4. Funciones
4.1. Funciones elementales

12
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

4.2. Funciones de tipo inline . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

4.3. Funciones simbolicas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

Como se dijo en la introduccion Matlab es un software orientado a matrices, en esta seccion


estudiaremos como declarar matrices, como operar con ellas, y veremos funciones que podemos
aplicar directamente sobre estas.

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

Este vector, o matriz de 1x5, queda inmediatamente asignado en el Workspace.


Para construir matrices el proceso es identico, se deben escribir las filas como si fuesen vectores
y separar cada una de estas por ;. Por ejemplo para escribir la matriz

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(i,j) Devuelve el elemento Aij que corresponde la fila i y columna j


A(i,:) Devuelve la fila i esima como vector fila
A(:,j) Devuelve la columna j esima como vector columna
A([i1 in ],[j1 jm ]) Devuelve una matriz con los elementos que pertenecen a la interseccion de las filas y columnas mencionadas
A(i,:)=[ ] Destruye la i esima fila de la matriz A
A(:,j)=[ ] Destruye la j esima columna de la matriz A

>> A
A =
2
4
6

4
7
7

5
5
4

>> A(2,3)
ans =
5
>> A(2,:)
ans =
4

>> A([1 2],[2 3])


ans =
4
5
7
5
>> A(2,:)=[]
A =
2
4
6
7

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

>> A=[2 4 5;4 7 5;6 7 4]


A =
2
4
5
4
7
5
6
7
4
>> B=[1 3 2;4 5 3;4 5 2]
B =
1
3
2
4
5
3
4
5
2
>> A*B
ans =
38
52
50

51
72
73

26
39
41

>> A.*B
ans =
2
16
24

12
35
35

10
15
8

Es posible aplicar funciones elementales a matrices o vectores, en caso de hacerlo la funcion se


aplica a cada coordenada de la matriz. Es cierto que matematicamente tiene sentido hablar de
matriz exponencial, sin embargo si calculamos exp(A) obtendremos una matriz cuya coordenadas son las exponenciales de las coordenadas de la matriz A y no la matriz exponencial calculada
como serie de potencias.

>> 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.

Funciones sobre matrices y vectores

Ademas de la operatoria elemental tenemos la posibilidad de recurrir a funciones pre-establecidas


un poco mas especificas. En lo siguiente estudiaremos algunas de las funciones mas u
tiles para
manejar problemas numericos basicos.
trace(A) Devuelve el valor de la traza de A.
det(A) Devuelve el valor del determinate de A siempre que la matriz sea cuadrada.
inv(A) Devuelve la matriz inversa de A siempre que se pueda.
A0 Devuelve la matriz traspuesta de A.
size(A) Devuelve las dimensiones de la matriz A.
triu(A) Devuelve la matriz triangular superior de A.
9

tril(A) Devuelve la matriz triangular inferior de A.


diag(A) Devuelve un vector fila cuyas componentes son los elementos de la diagonal de A.
Tambien podemos obtener otras diagonales, por ejemplo diag(A,1) devuelve la diagonal
siguientes a la principal y diag(A,-1) devuelve la diagonal anterior a la principal

A=[2 4 5;4 7 5;6 7 4]


A =
2
4
5
4
7
5
6
7
4
>> diag(A)
ans =
2
7
4
>> diag(A,1)
ans =
4
5
>> diag(A,-1)
ans =
4
7
De igual forma funciona para el comando diag(V) visto anteriormente. En este caso
diag(V,k) crea una matriz de ceros que contiene a V en su diagonal desplazada en k
de la diagonal principal.
>> V=[1 2 3 4]
V =
1
2

>> 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

Algunas funciones especificas para vectores son las siguientes.


sum(V) Suma todas las componentes del vector.
prod(V) Multiplica todas las componentes del vector.
dot(U,V) Producto escalar de los vectores U y V.
cross(U,V) Producto cruz de los vectores U y V.
length(V) Entrega el largo del vector V.
cat(dimensi
on,U,V) Este comando sirve para concatenar dos vectores. La dimension
indica la forma de concatenar, por ejemplo si dimension vale uno se concatena como
columna, dimension 2 indica concatenar como fila y dimension 3 indica concatenar como
diagonal
>> U=[1 3 5]
U =
1
3

>> 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()

Funciones de tipo inline

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

La ejecucion en Matlab queda de la siguiente manera

>> f = inline (sin(x)/(x^2))


f =
Inline function:
f(x) = sin(x)/(x^2)
>> f(pi)
ans =
0
>> f(pi/2)
ans =
0.4053
De igual forma se pueden declarar funciones de mas variables solo con agregar mas letras en la
ecuacion.
>> f = inline (x+y+z^2)
f =
Inline function:
f(x,y,z) = x+y+z^2
>> f(1,2,3)
ans =
12
>> f(1,2,0)
ans =
3

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

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