Академический Документы
Профессиональный Документы
Культура Документы
1. Vectores
Empecemos por crear algo sencillo, como un vector. Ingrese cada entrada del vector separadas por
espacio y entre corchetes.
[1 2 3]
ans =
1 2 3
MATLAB crea el vector y lo almacena en una variable temporal llamada ans. Para almacenarlo en una
variable permanente, basta darle un nombre, por ejemplo v, igualando v al vector, as
v = [1 2 3 4 5]
v =
1 2 3 4 5
Es posible crear vectores con cierta estructura. Por ejemplo supongamos que queremos un vector con
los n
umeros pares entre el 0 y el 10:
t = 0:2:10
t =
0 2 4 6 8 10
Manipular vectores es tambien muy facil. Supongamos que queremos sumarle 3 a cada entrada del vector
v que creamos arriba. Entonces basta ejecutar:
v+3
ans =
4 5 6 7 8
De nuevo el resultado es almacenado en la variable temporal ans. Si queremos almacenarlo para usarlo
mas tarde podemos ejecutar
2 FUNCIONES
w = v + 3
w =
4 5 6 7 8
suma = v + w
suma =
5 7 9 11 13
El producto punto se puede calcular con la funcion dot. Los vectores se escriben entre parentesis
separados por comas, as:
dot(v,w)
ans =
100
Otras funciones que te pueden interesar son norm que calcula la norma (longitud) de un vector y cross
que calcula el producto cruz de dos vectores.
2. Funciones
MATLAB incluye muchas funciones estandar. Por ejemplo las funciones matematicas sin, cos, ...
log, exp, sqrt, as como muchas otras m as especializadas. Tambien incluye constantes usadas com
unmen-
te como , o i (la raz cuadrada de -1). Estas se pueden usar directamente
sin(pi/4)
ans =
0.7071
v = pi/2 * [0:3]
cos(v)
v =
0 1.5708 3.1416 4.7124
ans =
1.0000 0.0000 -1.0000 -0.0000
3. Formato
La instruccion format controla el formato de salida de los valores numericos presentados pantalla. Hay
tres posibilidades para esta instruccion
format short
1+(2/3)
format long
1+(2/3)
format rat
1+(2/3)
ans =
1.6667
ans =
1.66666666666667
ans =
5/3
4. Matrices
Las matrices en MATLAB se crean igual que los vectores, excepto que cada fila se separa con un punto
y coma (;). Por ejemplo
B = [1 2 3 4; 5 6 7 8; 9 10 11 12]
B =
1 2 3 4
5 6 7 8
9 10 11 12
Las matrices se pueden manipular de muchas maneras. Puedes sumar o restar matrices
[1 1; 0 1] + [-1 1; 1 -1]
ans =
0 2
1 0
4 MATRICES
Puedes hallar la transpuesta colocando una comilla sencilla () despues del nombre de la matriz:
C = B'
C =
1 5 9
2 6 10
3 7 11
4 8 12
D = B * C
D =
30 70 110
70 174 278
110 278 446
Cabe anotar que la multiplicacion solo funciona si las dimensiones de las matrices son compatibles. Si
inentas por ejemplo multiplicar B con B obtiene un error.
B * B
>> B*B
??? Error using ==> mtimes
Inner matrix dimensions must agree.
Tambien es posible multiplicar dos matrices componente a componente (una especie de producto punto)
as:
E = [1 2; 3 4]
F = [2 3; 4 5]
G = E .* F
E =
1 2
3 4
F =
2 3
4 5
G =
2 6
12 20
Si tienes una matriz cuadrada, puedes multiplicarla por sigo misma tantas veces como quieras elevandola
a la potencia deseada.
4 MATRICES
E3
ans =
37 54
81 118
Si en cambio lo que quieres es elevar cada entrada de la matriz a una potencia dada, puedes hacerlo as:
E.3
ans =
1 8
27 64
Tambien es posible acceder a las partes que forman una matriz. Para extraer la entrada i, j colocamos
(i,j) al frente del nombre de la matriz, por ejemplo
H =
10 20 30
40 50 60
ans =
60
Para extraer una fila completa utilizamos dos puntos (:) para indicar que queremos toda la fila
H(2,:)
ans =
40 50 60
H(:,3)
ans =
30
60
Tambien puedes construir una matriz a partir de sus partes. Se pueden juntar columnas
4 MATRICES
u = [1;2;3]
v = [4;5;6]
[u v]
u =
1
2
3
v =
4
5
6
ans =
1 4
2 5
3 6
u = [1 2 3]
v = [4 5 6]
[u; v]
u =
1 2 3
v =
4 5 6
ans =
1 2 3
4 5 6
MATLAB tambien tiene varias instrucciones que permiten construir matrices usadas comunmente como
la matriz identidad (eye(n)), la matriz cero (zeros(m,n)), la matriz de unos (ones(m,n)), o una
matriz diagonal (diag([...])).
eye(4)
zeros(2,3)
ones(3,2)
diag([1 -1 2])
ans =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
ans =
5 ALGEBRA LINEAL EN MATLAB
0 0 0
0 0 0
ans =
1 1
1 1
1 1
ans =
1 0 0
0 -1 0
0 0 2
La funcion (rand(m,n)) genera una matriz m n cuyas entradas son n umeros aleatorios entre cero
y uno. Intenta ejecutar la siguiente instruccion varias veces y veras que cada vez obtienes una matriz
diferente.
rand(2,2)
ans =
0.9501 0.6068
0.2311 0.4860
xy =2
x+y =3
Una manera de hacerlo es hallar la forma escalonada reducida de la matriz aumentada del sistema
A = [1 -1; 1 1]
b = [2; 3]
C = [A b]
R = rref(C)
A =
1 -1
1 1
b =
2
3
C =
1 -1 2
1 1 3
R =
1.0000 0 2.5000
0 1.0000 0.5000
5 ALGEBRA LINEAL EN MATLAB
Otra manera es utilizar el operador (\) que encuentra UNA solucion del sistema
A\b
sln =
2.5000
0.5000
Otra manera mas es multiplicando por la inversa de la matriz. La inversa la puedes encontrar con el
comando inv.
D = inv(A)
D*b
D =
0.5000 0.5000
-0.5000 0.5000
ans =
2.5000
0.5000
det(A)
ans =
2
E = [1 2; 3 4]
eig(E)
ans =
-0.3723
5.3723
Incluso hay una funcion para hallar el polinomio caracterstico de una matriz. Recordemos que si A
es una matriz n n, entonces el polinomio caracterstico de A es el polinomio de grado n dado por
la ecuacion p(A) = det(A In ) = an n + an1 n1 + + a1 + a0 . Cuando n es par la funcion
poly crea un vector con los coeficientes an , an1 , . . . a0 del polinomio caracterstico. Cuando n es impar
la funcion poly crea un vector con los coeficientes an , an1 , . . . , a0 . En otras palabras, cuando la
dimension de la matriz A es impar la funcion poly produce los negativos de los coeficientes del polinomio
caracterstico. Por ejemplo si E es la matriz 2 2 definida arriba obtenemos
p = poly(E)
5 ALGEBRA LINEAL EN MATLAB
p =
1.0000 -5.0000 -2.0000.
J = [1 2 0; 3 4 -1; 1 0 -1]
obtenemos
q= poly(E)
q =
1.0000 -4.0000 -7.0000 0.0000.
roots(p)
ans =
5.3723
-0.3723
X = [1 -2; -2 4]
null(X)
ans =
0.8944
0.4472
En ocaciones es preferible obtener una base con coeficientes racionales, para esto incluimos el argumento
'r' al comando null
null(X, 'r')
ans =
2
1
6 GRAFICAS
6. Gr
aficas
Es facil generar graficas en MATLAB utilizando el comando plot. Este comando no grafica directamente
funciones, sino que grafica puntos en un plano cartesiano. De modo que para graficar una funcion, debes
entregarle los puntos que componen la funcion.
Supongamos que quieres graficar la funcion sen(x) en el intervalo [0, 7]. Primero debes crear un vector
con los valores de x que quiere incluir. Luego debes calcular el seno en cada uno de los valores de x, y
finalmente utilizar plot para graficar los puntos.
x = 0:0.25:7;
y = sin(x);
plot(x,y)
Note que colocamos un punto y coma al final de las primeras dos instrucciones. Esto se hace para que
MATLAB no imprima el resultado en pantalla. Note que la primera instruccion crea un vector de 28
entradas, desde cero hasta 7 separadas por 0,25. La segunda instruccion calcula el seno de cada una de
las entradas del vector x.
Es posible agregar ttulos y anotaciones a las graficas utilizando las funciones title, xlabel, y ylabel
despues de haber ejecutado el comando plot.
title('Funci
on seno como funci
on del tiempo')
xlabel('Tiempo (segs)')
ylabel('Amplitud')
La funcion plot tiene una cantidad de otras caractersticas que se pueden explorar en la ayuda o en
multitud de tutoriales en internet.
7 POLINOMIOS
7. Polinomios
En matlab, un polinomio es representado por un vector. Para crear un polinomio en MATLAB, sim-
plemente ingresa cada coeficiente del polinomio en orden descendiente en un vector. Por ejemplo, el
polinomio x4 + 3x3 15x2 2x + 9 se ingresa en MATLAB como:
x = [1 3 -15 -2 9]
x =
1 3 -15 -2 9
y = [1 0 0 0 1]
y =
1 0 0 0 1
Puedes evaluar un polinomio utilizando la funcion polyval. Por ejemplo, para evaluar el polinomio
definido arriba en s=2 ejecutamos,
z = polyval([1 0 0 0 1],2)
z =
17
Tambien puedes extraer las races de un polinomio usando la funcion roots. Las raices del polinomio
x4 + 3x3 15x2 2x + 9 se encuentran ejecutando
ans =
-5.5745
2.5836
-0.7951
0.7860
Para multiplicar dos polinomios se utiliza la funcion conv que encuentra la convolucion de sus coeficien-
tes.
x = [1 2];
y = [1 4 8];
z = conv(x,y)
9 ALTERNATIVA A MATLAB GRATUITA OCTAVE
z =
1 6 16 16
La funcion deconv divide un polinomio enre otro y devuelve el residuo y el cociente de la division.
[xx, R] = deconv(z,y)
xx =
1 2
R =
0 0 0 0
8. Archivos .m
Es posible guardar un listado de instrucciones MATLAB en un archivo con extension .m para ejecutar
mas tarde. Bajo Windows MATLAB tiene un editor de archivos .m.
1. Matrices en Matlab
Para introducir una matriz en Matlab se procede de la forma siguiente. Si por ejemplo tenemos la matriz
1 2 3 4
A=
5 6 7 8
se introduce como:
>>A=[1 2 3 4; 5 6 7 8]
A =
1 2 3 4
5 6 7 8
O bien,
>>A=[1,2,3,4;5,6,7,8];
Observemos que unas matrices especiales son los vectores, de esta forma, el vector fila v = (1.0, 1.1,1.2,1.3, . . . ,
1.9,2.0), se escribe en Matlab como
>>v=[1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9, 2.0]
>>A=[2 1;3 2]
A =
2 1
3 2
>>B=[3 4;-1 5]
B =
3 4
-1 5
>>A+B
ans =
5 5
2 7
8
>>3*A
ans =
6 3
9 6
Producto de matrices:
>>C=A*B
C =
5 13
7 22
>>size(A)
ans =
2 2
>>A
ans =
2 3
1 2
Ejercicio 1 Utilizando las matrices definidas en el ejemplo anterior, comprobar que (AB)t = B t At . (At es la
transpuesta de A).
Estas operaciones con punto son esenciales en el calculo numerico y se utilizan para representar funciones
numericamente.
>>eye(3)
ans =
1 0 0
0 1 0
0 0 1
9
Por que habran elegido el nombre eye?
Una matriz 3 2 llena de unos,
>>ones(3,2)
Y si queremos que este llena de ceros,
>>zeros(3,2)
Para generar una matriz con n umeros aleatorios uniformemente distribuidos entre 0 y 1,
>>rand(3,2)
Si se usa el comando randn los numeros aleatorios son normalmente distribuidos, siguiendo la Normal Estandar
N (0, 1).
>>X=[2 3 4; 1 -1 0]
X =
2 3 4
1 -1 0
>>rank(X)
ans =
2
>>inv(H)
ans =
0.1472 -0.1444 0.0639
-0.0611 0.0222 0.1056
-0.0194 0.1889 -0.1028
>>format rational
>>inv(H)
ans =
53/360 -13/90 23/360
-11/180 1/45 19/180
-7/360 17/90 -37/360
(Para ver todas las opciones del comando format hacer help format)
Para calcular el determinante de la matriz anterior H,
>>det(H)
ans =
-360
Ejercicio 2 Generar una matriz cualquiera, por ejemplo 2525, y calcular su inversa, su rango y su determinante.
(No imprimirla!) Que ocurre con el determinante de la matriz y el de su inversa?
10
Ejemplo 5 Los comandos especiales rref y rrefmovie
El comando rref produce la forma reducida escalonada por filas de una matriz usando la eliminaci on de
Gauss-Jordan, es decir, haciendo ceros por debajo y por encima de la diagonal principal sin mover las columnas.
Por ejemplo, definimos la matriz,
A =
-1 2 -1
2 1 2
2 4 2
>>R=rref(A)
R =
1 0 1
0 1 0
0 0 0
El comando rrefmovie produce exactamente el mismo resultado pero nos indica paso a paso c omo se va
obteniendo la matriz resultado e incluso que filas o columnas son despreciables (por ser linealmente dependientes
de las otras), informacion muy u ltil si queremos calcular el rango de la matriz por ejemplo. Es decir, produce una
especie de pelcula (movie) de todo el proceso.
>>rrefmovie(A)
Original matrix
A =
-1 2 -1
2 1 2
2 4 2
A =
2 1 2
-1 2 -1
2 4 2
A =
11
1 1/2 1
-1 2 -1
2 4 2
A =
1 1/2 1
-1 2 -1
2 4 2
4 14 15 1
b) Si una matriz H es cuadrada y no singular, es decir det(H) 6= 0, cu
al ser
a la matriz R = rref(H)?
c) Como podemos utilizar estos comandos para calcular la inversa de una matriz invertible? Aplicarlo a la
matriz,
8 1 6
B = 3 5 7
4 9 2
Para verificar el resultado se puede calcular la inversa directamente con inv(B).
3. Matrices dispersas
Ejemplo 6 A veces usamos matrices con muchos ceros. MatLab tiene una forma de trabajar con ellas usando
menos bytes con el comando sparse. Ve amoslo con un ejemplo:
Introducimos una matriz:
>>A=[0 0 0 3;0 0 -1 2;3 0 0 1;0 0 0 -2];
- Para convertirla a matriz dispersa
>>s=sparse(A)
Si preguntamos whos" vemos que s ocupa menos que A.
- Para recuperar la matriz inicial
>>full(s)
Para visualizar gr
aficamente la matriz:
>>spy(s)
o bien,
>>imagesc(s),colorbar
12
s es un vector con los valores de los elementos no nulos
(m,n) es el tamano de la matriz.
De modo que, en el ejemplo anterior, para generar s deberamos escribir:
>>i=[1 2 2 3 3 4];
>>j=[4 3 4 1 4 4];
>>s=[3 -1 2 3 1 -2];
>>m=4;n=4;
>>sparse(i,j,s,m,n)
Y obtenemos s. Para obtener la matriz inicial >>full(s)
Ax = b
donde,
a11 a12 ... a1n x1 b1
a21 a22 ... a2n x2 b2
A= . ; x= . y b= .
.. .. ..
am1 am2 . . . amn xn bm
Vamos a ver mediante algunos ejemplos y ejercicios como se pueden resolver los sistemas de ecuaciones lineales
utilizando algunos de los comandos de Matlab descritos anteriormente.
13
2 1 1 x 3
A = 1 1 0 , x = y y b= 3
0 1 3 z 7
Como se trata de un sistema con soluci
on u
nica, ya que el determinante de A es distinto de cero,
>>det(A)
ans =
-8
Una forma de resolver el sistema es escribir la matriz orlada (o ampliada)
>>Ab=[A b]
x = A1 b,
sin m
as que escribir
>>x=inv(A)*b
x =
1
2
3
Hay otra forma de hacerlo, utilizando lo que en Matlab se denomina como divisi
on matricial a la izquierda:
>>x=A\b
x =
1
2
3
En este caso, el resultado es el mismo, pero es diferente la forma en la que trabaja el ordenador. En este segundo
caso el metodo que utiliza es el de la factorizaci
on LU, que es una modificaci on de la eliminacion gaussiana.
Ejercicio 5 Resolver el siguiente sistema utilizando los tres procedimientos anteriormente descritos y comprobar
que sale la misma soluci
on.
1 1 0 3 x1 4
2 1 1 1 x2 1
3 1 1 2 x3 = 3
1 2 3 1 x4 4
14
5. Sistemas homog
eneos
con m ecuaciones y n incognitas se llama homog eneo, si todas las constantes b1 , b2 ,...,bm son cero. Es decir, el
sistema general homogeneo esta dado por
a x + a12 x2 + . . . + a1n xn = 0
11 1
a21 x1 + a22 x2 + . . . + a2n xn = 0
..
.
am1 x1 + am2 x2 + . . . + amn xn = 0
x1 = x2 = ... = xn = 0
x1 = x2 = x3 = 0.
Haciendo lo mismo que en el ejemplo anterior (y poniendo el resultado en formato racional, format rational,)
obtenemos
15
1
1 0 0
9
5
,
0 1 0
9
0 0 0 0
lo que quiere decir que, son soluciones todas las ternas de n
umeros reales de la forma
1 5
x3 , x3 , x3 ,
9 9
para cualquier valor de x3 . En particular, para x3 = 0, obtenemos la soluci
on trivial; para x3 = 1, obtenemos la
soluci
on
1 5
, ,1 ,
9 9
para x3 = 9, la soluci
on
(, 5, 9).
16
Comandos de MATLAB - lgebra Lineal
Instruccin Accin
A = [a11 ,a12 ,...,a1n ; a21 ,a22 ,...,a2n ; crea una matriz m n y la nombra como A.
...; am1 ,am2 ,...,amn ] Nota. Las comas se pueden substituir por espacios.
Los puntos y comas separan las filas de A.