matlab en Álgebra lineal

8
Clase 10 MATLAB en Álgebra Lineal Álgebra Lineal Escuela de Matemáticas - Facultad de Ciencias Código 1000 003 Universidad Nacional de Colombia 1 Introducción MATLAB (matrix laboratory) es a la vez un ambiente de computación numérica y un lenguaje de programación de cuarta generación. 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 propósito principal de MATLAB es la computación numérica, un toolbox óptimo, que usa el paquete algebraico MuPAD, da acceso a computación simbólica. Un paquete adicional, Simulink, agrega tanto simulación gráfica multivariable como diseño basado en modelos para sistemas dinámicos. En 2004, MATLAB tuvo alrededor de un millón de usuarios entre la industria y la academia, provenientes de varios campos de la ingeniería, la ciencia y la economía. MATLAB es extensamente usado en instituciones académi- cas e investigativas así como en empresas industriales. MATLAB fue creado a finales de los años setenta del siglo XX por Cleve Moler, profesor de matemáticas y de computación de la Universidad de New Mexico. Mientras enseñaba análisis numérico y teoría de matrices, él lo dis- eño para que sus estudiantes accedieran a las librerías LINPACK y EISPACK sin tener que aprender Fortran. Pronto su uso se difundió a otras universidades, hallando un sólido público dentro de la comunidad de las matemáticas 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 versión de las librerías se conoció como JACKPAC. En 2000, MATLAB fue reescrito para usar un conjunto más reciente de librerias para la manipulación de matrices, LAPACK. MATLAB fue primero adoptado por ingenieros de diseño de control, la especialidad de Little, pero pronto se expandió a muchos otros dominios. Ahora se usa también en la educación, en particular en la enseñanza del álgebra lineal y el análisis numérico. Además es popular entre los científicos que trabajan con procesamiento de imágenes. Al iniciar MATLAB aparecerá una ventana como la que se muestra en la figura siguiente. En este gráfico 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). 1

Upload: danielmarquez

Post on 17-Sep-2015

213 views

Category:

Documents


1 download

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 Fortran

TRANSCRIPT

  • 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