Vous êtes sur la page 1sur 8

Clase 10 MATLAB en lgebra Lineal

lgebra Lineal
Cdigo 1000 003

Escuela de Matemticas - Facultad de Ciencias


Universidad Nacional de Colombia

Introduccin

MATLAB (matrix laboratory) es a la vez un ambiente de computacin numrica y un lenguaje de programacin


de cuarta generacin. Desarrollado por MathWorks, MATLAB permite manipular matrices, graficar funciones y
datos, implementar algoritmos, crear interfases de usuario e interactuar con programas escritos en otros lenguajes,
incluyendo C, C++ y Fortran.
Aunque el propsito principal de MATLAB es la computacin numrica, un toolbox ptimo, que usa el paquete
algebraico MuPAD, da acceso a computacin simblica. Un paquete adicional, Simulink, agrega tanto simulacin
grfica multivariable como diseo basado en modelos para sistemas dinmicos.
En 2004, MATLAB tuvo alrededor de un milln de usuarios entre la industria y la academia, provenientes de
varios campos de la ingeniera, la ciencia y la economa. MATLAB es extensamente usado en instituciones acadmicas e investigativas as como en empresas industriales.
MATLAB fue creado a finales de los aos setenta del siglo XX por Cleve Moler, profesor de matemticas y de
computacin de la Universidad de New Mexico. Mientras enseaba anlisis numrico y teora de matrices, l lo diseo para que sus estudiantes accedieran a las libreras LINPACK y EISPACK sin tener que aprender Fortran. Pronto
su uso se difundi a otras universidades, hallando un slido pblico dentro de la comunidad de las matemticas
aplicadas. Jack Little, un ingeniero, supo de MATLAB durante una visita de Moler a la Universidad de Stanford en
1983. Reconociendo su potencial comercial, l se unio a Moler y Steve Bangert. Ellos reescribieron MATLAB en C
y fundaron MathWorks en 1984 para continuar su desarrollo. Esta nueva versin de las libreras se conoci como
JACKPAC. En 2000, MATLAB fue reescrito para usar un conjunto ms reciente de librerias para la manipulacin de
matrices, LAPACK.
MATLAB fue primero adoptado por ingenieros de diseo de control, la especialidad de Little, pero pronto se
expandi a muchos otros dominios. Ahora se usa tambin en la educacin, en particular en la enseanza del lgebra
lineal y el anlisis numrico. Adems es popular entre los cientficos que trabajan con procesamiento de imgenes.
Al iniciar MATLAB aparecer una ventana como la que se muestra en la figura siguiente. En este grfico podemos
destacar tres partes importantes del entorno de trabajo de MATLAB que son la ventana de comandos (Command
Window), el directorio actual de trabajo (Current Directory) y la historia de comandos (Command History).

Ejercicios resueltos
Para ilustrar el uso de MATLAB en el lgebra Lineal, resolveremos algunos problemas tpicos del curso.
Ejemplo 1. Una compaa de construccin ofrece cuatro tipos de casas en una urbanizacin. En la siguiente tabla
se indica el nmero de unidades de concreto, de unidades de madera para cancelera y de unidades de madera para
estructura que requiere una casa de cada tipo

unidades de concreto
unidades de madera para cancelera
unidades de madera para estructura

Casas tipo 1
10
20
10

Casas tipo 2
20
0
20

Casas tipo 3
10
10
30

Casas tipo 4
20
10
0

La compaa dispone de 1600 unidades de concreto, 1200 unidades de madera para cancelera y 1600 unidades de
madera para estructura.
(a) Determinar el nmero de casas de cada tipo que la compaa puede construir utilizando todo el material
disponible.
(b) Calcular el nmero de casas de cada tipo que la compaa debe construir
(i) si desea construir el mnimo de casas de tipo 1.
(ii) si desea al menos 25 casas de tipo 2 y al menos 25 casas de tipo 4.
(a) Definimos las variables

Solucin.
x1
x2
x3
x4

= nmero de casas tipo 1 que la compaa puede construir utilizando todo el material disponible,
= nmero de casas tipo 2 que la compaa puede construir utilizando todo el material disponible,
= nmero de casas tipo 3 que la compaa puede construir utilizando todo el material disponible,
= nmero de casas tipo 4 que la compaa puede construir utilizando todo el material disponible.

Entonces al utilizar todo el material disponible obtenemos el siguiente sistema de ecuaciones lineales
10x1 + 20x2 + 10x3 + 20x4 = 1600
20x1
+ 10x3 + 10x4 = 1200
10x1 + 20x2 + 30x3
= 1600

(1)

Para determinar el nmero de casas de cada tipo que la compaa puede construir utilizando todo el material
disponible hay que resolver el sistema lineal (1). Primero introducimos en MATLAB la matriz A de coeficientes
y el vector b de trminos independientes del siguiente modo:

>> A = [10,20,10,20;
A

10,20,30,0]

=
10
20
10

20
0
20

>> b = [1600;
b

20,0,10,10;

10
10
30

1200;

20
10
0

1600]

1600
1200
1600

Notemos que la matriz A se ingresa por filas.

Para crear la matriz aumentada, procedemos as:

>> M = [A
M

b]

=
10
20
10

20
0
20

10
10
30

20
10
0

1600
1200
1600

Ahora aplicamos el metodo de reduccin de Gauss-Jordan a la matriz M :

>> U = rref(M)
U

=
1
0
0

0
1
0

0
0
1

1
1
-1

60
50
0

De lo anterior, tenemos que el sistema lineal tiene infinitas soluciones y adems podemos concluir que
x1 = 60

x2 = 50

x4 ,

x4

x3 = x4 .

Por otro lado, las variables x1 , x2 , x3 y x4 tienen que ser enteros positivos. As
x1 = 60

x4

x2 = 50

x4 ,

60

x4

50

x4

x3 = x4

0.

Por tanto, x4 es un entero entre 0 y 50. Luego si la compaa utiliza todo el material disponible sta debe construir
un nmero de casas de cada tipo que se encuentre en los siguientes rangos
x1 entero entre 10 y 60,

x2 entero entre 0 y 50,

x3 = x4 entero entre 0 y 50.

(b) (i) Del literal anterior, el mnimo nmero de casas de tipo 1 es 10 y ste se obtiene cuando el nmero de casas de
tipo 4 es de 50. Por tanto, para que la compaa construya el mnimo de casa tipo 1 se debe tener
x4 = 50,

x3 = 50,

x2 = 0

x1 = 10.

(ii) Si se desea al menos 25 casas de tipo 2 y al menos 25 casas de tipo 4, entonces


x2 = 50

x4

25

x4

25

25

x4

x4

25

x4 = 25.

As,
x4 = 25,

x3 = 25,

x2 = 25

x1 = 35.

X
Ejemplo 2.

Sea B la matriz de orden 6

6 cuyas entradas son todas iguales a 1.

(a) Halle el polinomio caracterstico p ( B) de B.


(b) Halle los valores propios de B.
(c) Halle una base para cada espacio propio de B.
(d) Halle una base ortonormal para cada espacio propio de B.

Solucin. (a) Ingresamos la matriz B en MATLAB con la siguiente instruccin:

>> B = ones(6,6)
B

=
1
1
1
1
1
1

1
1
1
1
1
1

1
1
1
1
1
1

1
1
1
1
1
1

1
1
1
1
1
1

1
1
1
1
1
1

Para calcular los coeficientes del polinomio caracterstico de B, usamos la instruccin:

>> p = poly(B)
p

=
1.0000

-6.0000

-0.0000

0.0000

As, el polinomio caracterstico de B es


p B ( ) = 6

65 = 5 (

6).

(b) Los valores propios de B son:


1 = 0

2 = 6.

(c) Los espacios propios de B son


0I6 ) = nul ( B)

E0 = nul ( B

E6 = nul ( B

6I3 ) .

Ahora, para hallar una base para el espacio propio asociado al valor propio de una matriz A de orden n
usamos la instruccin null(A - *eye(n),r). Entonces, en particular,

>> null(B,r)
ans

=
-1
1
0
0
0
0

-1
0
1
0
0
0

-1
0
0
1
0
0

-1
0
0
0
1
0

-1
0
0
0
0
1

genera la siguiente base para E0 :


82
>
>
>
>
6
>
>
<6
6
B1 = 6
6
>
>
6
>
>
4
>
>
:

1
1
0
0
0
0

7
7
7
7,
7
7
5

2
6
6
6
6
6
6
4

1
0
1
0
0
0

7
7
7
7,
7
7
5

2
6
6
6
6
6
6
4

1
0
0
1
0
0

7
7
7
7,
7
7
5

2
6
6
6
6
6
6
4

1
0
0
0
1
0

7
7
7
7,
7
7
5

2
6
6
6
6
6
6
4

1
0
0
0
0
1

39
>
>
7>
>
7>
>
7=
7 .
7>
7>
>
5>
>
>
;

n,

Mientras que la instruccin

>> null(B - 6*eye(6),r)


ans

=
1
1
1
1
1
1

genera la base para E6 :

82
>
>
>
6
>
>
>
<6
6
B2 = 6
6
>
>
6
>
>
4
>
>
:

1
1
1
1
1
1

39
>
>
7>
>
7>
>
7=
7 .
7>
7>
>
5>
>
>
;

(d) Para hallar una base ortonormal para E0 , tomamos la matriz C cuyas columnas son los vectores de la base de E0
hallada en el literal 3. Dado que las columnas de C son un conjunto de vectores L. I. en R6 , entonces C admite una
factorizacin QR. As las columnas de Q forman una base ortonormal para E0 . Para obtener C usamos:

>> C = null(B,r)
C

=
-1
1
0
0
0
0

-1
0
1
0
0
0

-1
0
0
1
0
0

-1
0
0
0
1
0

-1
0
0
0
0
1

La factorizacin QR de C se obtiene mediante la instruccin

>> [Q R] = C
Q

=
-0.7071
0.7071
0
0
0
0

-0.4082
-0.4082
0.8165
0
0
0

-0.2887
-0.2887
-0.2887
0.8660
0
0

-0.2236
-0.2236
-0.2236
-0.2236
0.8944
0

-0.1826
-0.1826
-0.1826
-0.1826
-0.1826
0.9129

1.4142
0
0
0
0
0

0.7071
1.2247
0
0
0
0

0.7071
0.4082
1.1547
0
0
0

0.7071
0.4082
0.2887
1.1180
0
0

0.7071
0.4082
0.2887
0.2236
1.0954
0

0.4082
0.4082
0.4082
0.4082
0.4082
0.4082

Las primeras cuatro columnas de Q forman una base ortonormal para E0 y la quinta columna una base ortonormal
para E6 .

Otra forma. La instruccin null(A - *eye(n)) genera una base ortonormal para el espacio propio asociado al
valor propio de una matriz A de orden n n. En particular, la instruccin

>> null(B)
ans

=
-0.9129
0.1826
0.1826
0.1826
0.1826
0.1826

0
0.8944
-0.2236
-0.2236
-0.2236
-0.2236

0
0.0000
0.8660
-0.2887
-0.2887
-0.2887

0
0.0000
0.0000
-0.5774
0.7887
-0.2113

0
0.0000
0.0000
-0.5774
-0.2113
0.7887

genera una base ortonormal B10 para E0 , mientras que la instruccin

>> null(B - 6*eye(6))


ans

=
-0.4082
-0.4082
-0.4082
-0.4082
-0.4082
-0.4082

genera una base ortonormal B20 para E6 .


Ejemplo 3.

Considere la matriz

6
6
C=6
6
4

5
2
3
0
0

2
5
2
3
0

3
2
5
2
3

0
3
2
5
2

(a) Halle el polinomio caracterstico y los valores propios de C.

0
0
3
2
5

7
7
7.
7
5

(b) Halle una base para cada espacio propio asociado a los vectores propios de C.
(c) Halle una base ortonormal para cada espacio propio asociado a los vectores propios de C.
Solucin. (a) Introducimos la matriz C :

>> C = [5,2,-3,0,0;
C

2,5,2,-3,0;

-3,2,5,2,-3;

0,-3,2,5,2;

0,0-3,2,5]

=
5
2
-3
0
0

2
5
2
-3
0

-3
2
5
2
-3

0
-3
2
5
2

0
0
-3
2
5

Para obtener los coeficientes del polinomio caracterstico de C como nmeros racionales, empleamos las siguientes
instrucciones:
6

>> format(rat)
>> p = poly(C)
p

=
1

-25

207

-533

-682

3384

As, el polinomio caracterstico de C es


p C ( ) = 5

254 + 2073

5332

682 + 3384.

Ahora, calculemos los valores propios de C en formato corto:

>> format(short)
>> eig(C)
ans =
-2.1041
4.000
4.8036
9.0000
9.3004
Los valores propios de C son
1 =

2.1041,

2 = 4,

3 = 4.8036,

4 = 9

5 = 9.3004.

(b) Los espacios propios de C son


Ei = nulo(C

i I5 )

para

i = 1, 2, 3, 4, 5.

Para hallar una base para cada espacio propio de C usamos la instruccin null(C - i *eye(5)), para i = 1, . . . , 5.
Debemos tener en cuenta que el valor propio no es exacto. Por tanto, para evitar que se generen espacios nulos
triviales, almacenamos los valores propios en un vector que llamaremos vp (nombre arbitrario) y extraemos cada
valor propio con la instruccin vp(i), para i = 1, . . . , 5.

>> vp = eig(C)

>> null(C-vp(2)*eye(5),r)

>> null(C-vp(4)*eye(5),r)

ans =
-1.0000
0.5000
0.0000
-0.5000
1.0000

ans =
-1.0000
-2.0000
-0.0000
2.0000
1.0000

>> null(C-vp(1)*eye(5),r)

>> null(C-vp(3)*eye(5),r)

>> null(C-vp(5)*eye(5),r)

ans =

ans =

ans =

>> vp(3)
ans =
4.8036

1.0000
-1.2388
1.5421
-1.2388
1.0000

1.0000
1.4493
1.0317
1.4493
1.0000

1.0000
-0.1453
-1.5303
-0.1453
1.0000

(c) Para hallar bases ortonormales para los espacios propios de C, usamos la instruccin

>> [P D] = eig(C)
P =
0.3664
-0.4539
0.5651
-0.4539
0.3664

-0.6325
0.3162
-0.0000
-0.3162
0.6325

-0.3710
-0.5377
-0.3828
0.5377
-0.3710

-0.3162
-0.6325
0.0000
0.6325
0.3162

-0.4776
0.0694
0.7309
0.0694
-0.4776

-2.1041
0
0
0
0

0
4.0000
0
0
0

0
0
4.8036
0
0

0
0
0
9.0000
0

0
0
0
0
9.3004

D =

Cada columna de P es un vector propio de C asociado al valor propio correspondiente a la misma columna de D.
Por ejemplo, una base ortonormal para el espacio propio asociado a 1 = 2.1041 es
82
39
0.3664
>
>
>
>
>
>
7>
>
0.4539
<6
6
7=
6 0.5651 7 .
6
7
>
>
>
4 0.4539 5>
>
>
>
>
:
;
0.3664

Ejercicio. Verifique que al normalizar cada una de las bases del paso (b) se obtiene las columnas de la matriz
P.

Vous aimerez peut-être aussi