matlab en Álgebra lineal
DESCRIPTION
MATLAB (matrix laboratory) es a la vez un ambiente de computación numérica y un lenguaje de programaciónde cuarta generación. Desarrollado por MathWorks, MATLAB permite manipular matrices, graficar funciones ydatos, implementar algoritmos, crear interfases de usuario e interactuar con programas escritos en otros lenguajes,incluyendo C, C++ y FortranTRANSCRIPT
-
Clase 10 MATLAB en lgebra Lineallgebra Lineal Escuela de Matemticas - Facultad de CienciasCdigo 1000 003 Universidad Nacional de Colombia
1 Introduccin
MATLAB (matrix laboratory) es a la vez un ambiente de computacin numrica y un lenguaje de programacinde cuarta generacin. Desarrollado por MathWorks, MATLAB permite manipular matrices, graficar funciones ydatos, 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 paquetealgebraico MuPAD, da acceso a computacin simblica. Un paquete adicional, Simulink, agrega tanto simulacingrfica 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 devarios campos de la ingeniera, la ciencia y la economa. MATLAB es extensamente usado en instituciones acadmi-cas 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 decomputacin de la Universidad de NewMexico. Mientras enseaba anlisis numrico y teora de matrices, l lo dis-eo para que sus estudiantes accedieran a las libreras LINPACK y EISPACK sin tener que aprender Fortran. Prontosu uso se difundi a otras universidades, hallando un slido pblico dentro de la comunidad de las matemticasaplicadas. Jack Little, un ingeniero, supo de MATLAB durante una visita de Moler a la Universidad de Stanford en1983. Reconociendo su potencial comercial, l se unio a Moler y Steve Bangert. Ellos reescribieron MATLAB en Cy fundaron MathWorks en 1984 para continuar su desarrollo. Esta nueva versin de las libreras se conoci comoJACKPAC. En 2000, MATLAB fue reescrito para usar un conjunto ms reciente de librerias para la manipulacin dematrices, LAPACK.
MATLAB fue primero adoptado por ingenieros de diseo de control, la especialidad de Little, pero pronto seexpandi a muchos otros dominios. Ahora se usa tambin en la educacin, en particular en la enseanza del lgebralineal 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 podemosdestacar tres partes importantes del entorno de trabajo de MATLAB que son la ventana de comandos (CommandWindow), el directorio actual de trabajo (Current Directory) y la historia de comandos (Command History).
1
-
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 tablase indica el nmero de unidades de concreto, de unidades de madera para cancelera y de unidades de madera paraestructura que requiere una casa de cada tipo
Casas tipo 1 Casas tipo 2 Casas tipo 3 Casas tipo 4unidades de concreto 10 20 10 20
unidades de madera para cancelera 20 0 10 10unidades de madera para estructura 10 20 30 0
La compaa dispone de 1600 unidades de concreto, 1200 unidades de madera para cancelera y 1600 unidades demadera para estructura.
(a) Determinar el nmero de casas de cada tipo que la compaa puede construir utilizando todo el materialdisponible.
(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.
Solucin. (a) Definimos las variables
x1 = nmero de casas tipo 1 que la compaa puede construir utilizando todo el material disponible,x2 = nmero de casas tipo 2 que la compaa puede construir utilizando todo el material disponible,x3 = nmero de casas tipo 3 que la compaa puede construir utilizando todo el material disponible,x4 = 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 = 160020x1 + 10x3 + 10x4 = 120010x1 + 20x2 + 30x3 = 1600
(1)
Para determinar el nmero de casas de cada tipo que la compaa puede construir utilizando todo el materialdisponible hay que resolver el sistema lineal (1). Primero introducimos en MATLAB la matriz A de coeficientesy el vector b de trminos independientes del siguiente modo:
>> A = [10,20,10,20; 20,0,10,10; 10,20,30,0]
A =10 20 10 2020 0 10 1010 20 30 0
>> b = [1600; 1200; 1600]
b = 160012001600
Notemos que la matriz A se ingresa por filas.
2
-
Para crear la matriz aumentada, procedemos as:
>> M = [A b]
M =10 20 10 20 160020 0 10 10 120010 20 30 0 1600
Ahora aplicamos el metodo de reduccin de Gauss-Jordan a la matriz M :
>> U = rref(M)
U =1 0 0 1 600 1 0 1 500 0 1 -1 0
De lo anterior, tenemos que el sistema lineal tiene infinitas soluciones y adems podemos concluir que
x1 = 60 x4, x2 = 50 x4 y x3 = x4.Por otro lado, las variables x1, x2, x3 y x4 tienen que ser enteros positivos. As
x1 = 60 x4 0 , 60 x4, x2 = 50 x4 0 , 50 x4 y x3 = x4 0.Por tanto, x4 es un entero entre 0 y 50. Luego si la compaa utiliza todo el material disponible sta debe construirun 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, y 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 detipo 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 y 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 y x4 25 , 25 x4 y x4 25 , x4 = 25.As,
x4 = 25, x3 = 25, x2 = 25 y 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.
3
-
Solucin. (a) Ingresamos la matriz B en MATLAB con la siguiente instruccin:
>> B = ones(6,6)
B =1 1 1 1 1 11 1 1 1 1 11 1 1 1 1 11 1 1 1 1 11 1 1 1 1 11 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 0 0 0
As, el polinomio caracterstico de B es
pB() = 6 65 = 5( 6).(b) Los valores propios de B son:
1 = 0 y 2 = 6.
(c) Los espacios propios de B son
E0 = nul (B 0I6) = nul (B) y E6 = nul (B 6I3) .Ahora, para hallar una base para el espacio propio asociado al valor propio de una matriz A de orden n n,usamos la instruccin null(A - *eye(n),r). Entonces, en particular,
>> null(B,r)
ans =-1 -1 -1 -1 -11 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 1
genera la siguiente base para E0 :
B1 =
8>>>>>>>>>>>:
26666664
110000
37777775 ,26666664
101000
37777775 ,26666664
100100
37777775 ,26666664
100010
37777775 ,26666664
100001
37777775
9>>>>>>=>>>>>>;.
4
-
Mientras que la instruccin
>> null(B - 6*eye(6),r)
ans =111111
genera la base para E6 : B2 =
8>>>>>>>>>>>:
26666664
111111
37777775
9>>>>>>=>>>>>>;.
(d) Para hallar una base ortonormal para E0, tomamos la matriz C cuyas columnas son los vectores de la base de E0hallada en el literal 3. Dado que las columnas de C son un conjunto de vectores L. I. en R6, entonces C admite unafactorizacin QR. As las columnas de Q forman una base ortonormal para E0. Para obtener C usamos:
>> C = null(B,r)
C =-1 -1 -1 -1 -11 0 0 0 00 1 0 0 00 0 1 0 00 0 0 1 00 0 0 0 1
La factorizacin QR de C se obtiene mediante la instruccin
>> [Q R] = C
Q =
-0.7071 -0.4082 -0.2887 -0.2236 -0.1826 0.40820.7071 -0.4082 -0.2887 -0.2236 -0.1826 0.40820 0.8165 -0.2887 -0.2236 -0.1826 0.40820 0 0.8660 -0.2236 -0.1826 0.40820 0 0 0.8944 -0.1826 0.40820 0 0 0 0.9129 0.4082
R =
1.4142 0.7071 0.7071 0.7071 0.70710 1.2247 0.4082 0.4082 0.40820 0 1.1547 0.2887 0.28870 0 0 1.1180 0.22360 0 0 0 1.09540 0 0 0 0
Las primeras cuatro columnas de Q forman una base ortonormal para E0 y la quinta columna una base ortonormalpara E6.
5
-
Otra forma. La instruccin null(A - *eye(n)) genera una base ortonormal para el espacio propio asociado alvalor propio de una matriz A de orden n n. En particular, la instruccin>> null(B)
ans =-0.9129 0 0 0 00.1826 0.8944 0.0000 0.0000 0.00000.1826 -0.2236 0.8660 0.0000 0.00000.1826 -0.2236 -0.2887 -0.5774 -0.57740.1826 -0.2236 -0.2887 0.7887 -0.21130.1826 -0.2236 -0.2887 -0.2113 0.7887
genera una base ortonormal B01 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 B02 para E6. X
Ejemplo 3. Considere la matriz
C =
2666645 2 3 0 02 5 2 3 0
3 2 5 2 30 3 2 5 20 0 3 2 5
377775 .(a) Halle el polinomio caracterstico y los valores propios de C.
(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; 2,5,2,-3,0; -3,2,5,2,-3; 0,-3,2,5,2; 0,0-3,2,5]
C =
5 2 -3 0 02 5 2 -3 0-3 2 5 2 -30 -3 2 5 20 0 -3 2 5
Para obtener los coeficientes del polinomio caracterstico de C como nmeros racionales, empleamos las siguientesinstrucciones:
6
-
>> format(rat)
>> p = poly(C)
p =1 -25 207 -533 -682 3384
As, el polinomio caracterstico de C es
pC() = 5 254 + 2073 5332 682+ 3384.Ahora, calculemos los valores propios de C en formato corto:
>> format(short)
>> eig(C)
ans =-2.10414.0004.80369.00009.3004
Los valores propios de C son
1 = 2.1041, 2 = 4, 3 = 4.8036, 4 = 9 y 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 nulostriviales, almacenamos los valores propios en un vector que llamaremos vp (nombre arbitrario) y extraemos cadavalor 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 = ans =>> vp(3) -1.0000 -1.0000
0.5000 -2.0000ans = 0.0000 -0.0000
4.8036 -0.5000 2.00001.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 =1.0000 1.0000 1.0000-1.2388 1.4493 -0.14531.5421 1.0317 -1.5303-1.2388 1.4493 -0.14531.0000 1.0000 1.0000
7
-
(c) Para hallar bases ortonormales para los espacios propios de C, usamos la instruccin
>> [P D] = eig(C)
P =0.3664 -0.6325 -0.3710 -0.3162 -0.4776-0.4539 0.3162 -0.5377 -0.6325 0.06940.5651 -0.0000 -0.3828 0.0000 0.7309-0.4539 -0.3162 0.5377 0.6325 0.06940.3664 0.6325 -0.3710 0.3162 -0.4776
D =-2.1041 0 0 0 0
0 4.0000 0 0 00 0 4.8036 0 00 0 0 9.0000 00 0 0 0 9.3004
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 es8>>>>>>>:
2666640.36640.45390.56510.45390.3664
3777759>>>>=>>>>; .
X
Ejercicio. Verifique que al normalizar cada una de las bases del paso (b) se obtiene las columnas de la matrizP.
8