Tareas de matrices especiales

Documentos relacionados
Primeros programas con matrices circulantes

Algunos algoritmos para matrices de Toeplitz

Matrices triangulares y descomposición LU

Prerrequisitos de la asignatura Álgebra Lineal Numérica

Vectores y matrices. Problemas para examen

Lista de problemas: ciclos y funciones en el lenguaje MATLAB

Métodos directos para resolver sistemas de ecuaciones lineales

Elementos de Cálculo Numérico

Resolución de sistemas de ecuaciones lineales

I. Métodos directos para resolución de SEL. Se dice que una matriz A admite una factorización LU indirecta A = LU

Operaciones con matrices

Algoritmo de factorización LU

Matrices y sistemas de ecuaciones lineales

Lista de problemas de álgebra, 2016

Cálculo Numérico. Curso Ejercicios: Preliminares I

Valores y vectores propios

Norma de Frobenius. Estos apuntes están escritos por Darío Coutiño Aquino y Egor Maximenko.

Deducción de las fórmulas del método del gradiente conjugado

METODOS NUMERICOS TALLER 3, SEMESTRE

RESOLUCIÓN DE SISTEMAS LINEALES

Algoritmo de la factorización LU

Arreglos numéricos. Programación Clase 23

Splines (funciones polinomiales por trozos)

ITERATIVOS Y DIRECTOS PARA SISTEMAS LINEALES. Ayudante: Rodrigo Torres Aguirre Ejercicios:

Clase No. 13: Factorización QR MAT 251. Joaquín Peña (CIMAT) Métodos Numéricos (MAT 251) / 16

Clase. 1. Resolución de sistemas de ecuaciones lineales: preliminares

Gustavo Rodríguez Gómez. Agosto Dicembre 2011

1.IV Aproximación numérica de valores y vectores propios.

MÓDULO SE: SISTEMAS DE ECUACIONES

Estrategias de pivoteo

Matemáticas de la Especialdiad

Lección 11. Eliminación Gaussiana con Pivoteo y Matrices de Banda

Tema 4: Determinantes

Rancagua, Agosto 2009

1.2 Valores y vectores propios. Método de las potencias y Rayleigh.

Resolución de Sistema de Ecuaciones Lineales

Clase 8 Matrices Álgebra Lineal

Departamento de Matemática Aplicada CÁLCULO COMPUTACIONAL. Licenciatura en Química (Curso ) Matrices Práctica 1

Lección 8. Matrices y Sistemas de Ecuaciones Lineales

Instituto Tecnológico Autónomo de México. 1. At =..

I. DATOS DE IDENTIFICACION 1. Unidad Académica: Facultad de Ciencias

Conferencia clase. Al desacoplar las ecuaciones se tiene. Sistemas de ecuaciones diferenciales lineales usando álgebra lineal

Parte 4. Métodos iterativos para la resolución de sistemas de ecuaciones lineales

METODOS ITERATIVOS. Hermes Pantoja Carhuavilca. Facultad de Ingeniería Mecanica Universidad Nacional de Ingenieria

MAT web:

UNIVERSIDAD AUTÓNOMA DEL ESTADO DE MÉXICO

Sistemas de Ecuaciones. Lineales III

Procedimiento para encontrar la inversa de una matriz cuadrada (Método de Gauss-Jordan).

Al considerar varios polígonos regulares inscritos resulta: perímetro del cuadrado < π. perímetro del 96 gono < π

Álgebra Lineal Ma1010

Definición (matriz): Definición (dimensión de una matriz): Si una matriz tiene m renglones y n columnas se dice que es de dimensión m n.

INFORMÁTICA MATLAB GUÍA 3 Operaciones con Matrices

Matrices y Determinantes. Prof. Nilsa I. Toro Catedrática Recinto Universitario de Mayagüez Residencial - AFAMaC

Cálculo Numérico - CO3211. Ejercicios. d ) Sabiendo que la inversa de la matriz A = es A c d

SEL - Métodos Directos

TEMA VI 1. MÉTODO DE ELIMINACIÓN DE GAUSS Y GAUSS JORDAN PARA RESOLVER SISTEMAS DE ECUACIONES LINEALES.

A 4. En los siguientes ejercicios, resuelva el sistema de ecuaciones utilizando la regla de Cramer.

Practica 2. Estructuras de Datos en MATLAB

2. Sistemas de ecuaciones lineales

La transformada rápida de Fourier (FFT) y otros algoritmos para la implementación de la DFT

Tema 1. Espacios Vectoriales. Sistemas de ecuaciones.

Unidad 5 Problemas de álgebra lineal numérica.

Contenido. Agradecimientos... Prólogo...

Matrices, Determinantes y Sistemas Lineales.

Profesor Francisco R. Villatoro 13 de Diciembre de 1999 SOLUCIONES. 1. Una matriz A de n n es diagonalmente dominante (estrictamente) por filas si

Aproximación discreta de mínimos cuadrados con lapack

Diagonalización de matrices

SEL Métodos Directos

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN

Métodos de factorización para resolver sistemas de ecuaciones lineales. 22 de agosto, 2012

Sistema de ecuaciones lineales

PROGRAMA DE ASIGNATURA DE MATEMÁTICA PARA LA INFORMÁTICA III

Resolución de Sistema de Ecuaciones Lineales

Propiedades de números enteros (lista de problemas para examen)

Eigenvalores y eigenvectores

6.6. Diagonalización de matrices simétricas o hermitianas. Ejemplo de una diagonalización de una matriz simétrica

Métodos de gradiente. Métodos de Krylov

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE ESTUDIOS SUPERIORES ACATLÁN LICENCIATURA EN MATEMÁTICAS APLICADAS Y COMPUTACIÓN

EJERCICIO COMPUTACIONAL N o 4. MÉTODOS ITERATIVOS

Un subconjunto no vacío H de un espacio vectorial V es un subespacio de V si se cumplen las dos reglas de cerradura:

Solución numérica de sistemas de ecuaciones lineales

Espacios de una Matriz

Universidad Nacional de Ingeniería Facultad de Ciencias. Física Computacional CC063. Algebra Lineal. Prof: J. Solano 2012-I


Bases y dimensión. Problemas teóricos. En todos los problemas se supone que V es un espacio vectorial sobre un campo F. p=1

Matrices y operaciones con Matrices.

Fracciones parciales. Repaso general. Octave. Raíces con multiplicidad

Cursada Segundo Cuatrimestre 2012 Guía de Trabajos Prácticos Nro. 1

Una forma fácil de recordar esta suma (regla de Sarrus): Primero vamos a estudiar algunas propiedades de los determinantes.

Objetivos formativos de Álgebra

Algebra lineal de dimensión finita

Tema 1. Espacios Vectoriales. Sistemas de ecuaciones.

FUNDAMENTOS NUMÉRICOS SEMANA 4

6.8. Descomposición mediante valores singulares. v 2 =

MATRICES. Se simboliza tal matriz por y se le llamará una matriz x o matriz de orden x (que se lee por ).

Ejercicios: Estimando π con métodos Monte Carlo y cálculo del mayor autovalor de una matriz

DETERMINANTES MATRICES EQUIVALENTES POR FILAS RANGO DE UNA MATRIZ. APLICACIONES

Mínimos cuadrados. Mayo de Ejemplos de introducción. Observación preliminar

MENORES, COFACTORES Y DETERMINANTES

PRÁCTICA 1: Introducción a Matlab

Transcripción:

Tareas de matrices especiales Objetivos. Estudiar una clase especial de matrices. Para matrices de esta clase realizar un algoritmo rápido de multiplicación por vectores. Aplicar este algoritmo para resolver sistemas lineales con métodos iterativos. Comparar la rapidez de varios métodos. Requisitos. Experiencia básica de programación, con funciones y arreglos, en algún lenguaje de programación con tipización dinámica y orientación a matrices (Matlab o GNU Octave, Python + numpy o Sage, R, Wolfram Mathematica, etc.) o mucha experiencia de programación en lenguajes compilables sin orientación a matrices (C, C++, Fortran, Haskell, Java, C#, etc.). Conocimientos amplios de álgebra lineal y de métodos numéricos. Índice Tarea 1: Construcción de la matriz en el formato completo 3 Tarea 2: Multiplicación rápida por un vector 5 Tarea 3: Métodos iterativos para resolver sistemas lineales 8 1. Datos iniciales que determinan la matriz. Trabajamos solamente con matrices reales cuadradas y denotamos su orden por n. Cada matriz de la clase elegida se determina por ciertos datos iniciales. Por ejemplo, una matriz tridiagonal A = se determina por tres vectores a, b, c: a 1 a 2 a = a 3 a 4, b = a 5 a 1 b 1 c 1 a 2 b 2 c 2 a 3 b 3 c 3 a 4 b 4 c 4 a 5 b 1 b 2 b 3 b 4, c = c 1 c 2 c 3 c 4. (1) Otro ejemplo: la matriz circulante se determina por su primera columna. a 1 a 5 a 4 a 3 a 2 a 2 a 1 a 5 a 4 a 3 a 3 a 2 a 1 a 5 a 4 a 4 a 3 a 2 a 1 a 5 a 5 a 4 a 3 a 2 a 1 (2) Tareas de matrices especiales, página 1 de 9

2. El tamaño total de los datos iniciales que determinan a la matriz. Denotamos por D(n) al tamaño total de los datos iniciales que determinan la matriz de orden n. Para matrices tridiagonales el número D(n) es la suma de las longitudes de los vectores a, b, c: Para matrices circulantes D(n) = n. D(n) = n + (n 1) + (n 1) = 3n 2. 3. El tamaño total de los datos iniciales debe ser esencialmente menor que el número total de las entradas de la matriz. Formalmente, se debe cumplir la siguiente relación límite: D(n) lim =. (3) n n 2 Típicamente D(n) es un polinomio de grado 1 de la variable n, o una constante. 4. La clase elegida de matrices especiales debe incluir algunas matrices simétricas positivas definidas. Se recomia trabajar solamente con matrices reales cuadradas. Para cualquier orden n la clase elegida de matrices especiales debe incluir algunas matrices simétricas y positivas definidas. Por ejemplo, la matriz tridiagonal de la forma (1) es simétrica si b = c. La matriz circulante (2) es simétrica si a 5 = a 1 y a 4 = a 2. Una matriz real cuadrada A es simétrica y positiva definida si existe una matriz B de rango n tal que A = B B. Para matrices de ciertos tipos esta propiedad se demuestra fácilmente. En otras situaciones esta propiedad se puede verificar con experimentos numéricos: la matriz debe ser simétrica, y sus valores propios deben ser estrictamente positivos. 5. Elegir una clase de matrices especiales. Elegir una de las clases de matrices propuestas por el profesor o encontrar otra clase. Las matrices deben cumplir con las condiciones 3 y 4. 6. Buscar aplicaciones (opcional). Si las matrices de la clase elegida tienen alguna aplicación interesante, es una ventaja adicional. Por ejemplo, las matrices tridiagonales surgen en el método de diferencias finitas que se usa para resolver numéricamente problemas de frontera para ecuaciones diferenciales ordinarias de segundo orden. 7. Organización del trabajo y presentación de resultados. Las tareas de matrices especiales se hacen por equipos fuera de clases. La interacción y comunicación dentro del equipo es la parte más importante y más difícil de la tarea. Las dudas posibles se resuelven con el profesor. Los productos de las tareas (textos en el formato L A TEX y códigos de programas) se envían al correo del profesor. Además los estudiantes hacen exposiciones breves (de 5 a 1 minutos), en las cuales explican sus avances a todos los compañeros. Tareas de matrices especiales, página 2 de 9

Primera tarea de matrices especiales: construcción de la matriz en el formato completo 8. Describir la clase elegida de matrices y los datos iniciales. Escribir un archivo en el lenguaje TEX/L A TEX, de una o dos páginas, en el cual introducir de manera clara la clase elegida de matrices especiales y explicar cómo se obtiene la matriz a partir de los datos iniciales. Se recomia hacerlo con un ejemplo de tamaño pequeño (5 n 16). 9. Fórmula general para las entradas de la matriz (opcional). Algunas clases de matrices especiales admiten una fórmula general simple para la (j, k)-ésima entrada. Por ejemplo, si A es la matriz tridiagonal generada por las diagonales a, b, c, como en el ejemplo (1), entonces a j, si k = j, A j,k = b j, si k = j + 1, c j 1, si k = j 1. 1. Función que construye la matriz especial de la clase elegida en el formato completo a partir de los datos iniciales. Aquí está una función en el lenguaje Matlab que construye la matriz tridiagonal a partir de los vectores a, b, c, suponio que n 2: function [A] = tridiagonal_full(a, b, c), n = length(a); A = zeros(n); for j = 1 : n, A(j, j) = a(j); for j = 1 : n - 1, A(j, j + 1) = b(j); A(j + 1, j) = c(j); 11. Construir la matriz especial de la clase elegida usando comandos especiales del lenguaje elegido. En algunos lenguajes de programación y para algunas clases de matrices especiales, el problema anterior tiene soluciones más eficientes. La idea es evitar ciclos y usar comandos especiales: function [A] = tridiagonal_full_fast(a, b, c), A = diag(a) + diag(b, 1) + diag(c, -1); 12. Construir la matriz especial de la clase elegida en el formato para matrices dispersas (opcional). En algunos lenguajes de programación hay un formato especial para guardar matrices dispersas (también se llaman matrices esparcidas, ralas, huecas). Algunas clases de matrices especiales se pueden guardar en este formato: Tareas de matrices especiales, página 3 de 9

function [A] = tridiagonal_sparse(a, b, c), D = [b, ; a;, c]; A = spdiags(d, [-1,, 1]); 13. Escribir una función que haga una prueba con datos pequeños de la función que construye la matriz especial. function [] = small_test_tridiagonal_full(), a = [1; 2; 3; 4; 5]; b = [11; 12; 13; 14]; c = [21; 22; 23; 24]; A = tridiagonal_full(a, b, c); display(a); A1 = tridiagonal_full_fast(a, b, c); display(a1); A2 = tridiagonal_sparse(a, b, c); display(a2); display(full(a2)); 14. Construcción de datos iniciales pseudoaleatorios (opcional). Para algunas clases de matrices especiales (por ejemplo, matrices tridiagonales) los datos iniciales se generan fácilmente. Otras clases de matrices especiales necesitan más trabajo en esta parte. Por ejemplo, si la matriz se determina por cierta gráfica, entonces hay que elegir el formato en la cual se guarda la gráfica (por ejemplo, con una lista de aristas o con listas de vecinos) y escribir una función que genere estos datos iniciales de manera pseudoaleatoria. El argumento de esta función debe ser n o algún otro parámetro que determina el tamaño de la matriz; también pueden haber otros parámetros adicionales como el grado máximo de la gráfica. Este trabajo se puede hacer después de entregar la primera tarea. 15. Sugerencia acerca del archivo L A TEX con la explicación de la clase especial de matrices. La idea es explicar el objeto de estudio de manera muy clara, simple y concisa. Este texto no se escribe para un experto en el área, sino para un estudiante de primeros semestres de licenciatura. Un ejemplo de tamaño adecuado casi siempre es mejor que fórmulas generales. Tareas de matrices especiales, página 4 de 9

Segunda tarea de matrices especiales: multiplicación rápida por un vector 16. Objetivos de la segunda tarea de matrices especiales. Programar un algoritmo rápido para multiplicar las matrices especiales de la clase elegida por vectores. Este algoritmo rápido debe usar los datos iniciales que determinan a la matriz. Dentro del algoritmo no se debe construir la matriz en la forma completa. Comparar la rapidez de la función programada y de la función estándar que multiplica matrices (en la forma completa) por vectores. 17. Representar el producto de la matriz por el vector de tal manera que ayude a programar el algoritmo eficiente. Puede ser útil considerar la situación para un n pequeño. Veremos la situación con matrices tridiagonales. Si x R 5 es un vector general, entonces para la matriz tridiagonal del ejemplo (1) el producto Ax se puede escribir de la siguiente manera: a 1 x 1 + b 1 x 2 c 1 x 1 + a 2 x 2 + b 2 x 3 Ax = c 1 x 2 + a 3 x 3 + b 3 x 4 c 1 x 3 + a 4 x 4 + b 4 x 5 = c 1 x 4 + a 5 x 5 a 1 x 1 b 1 a 2 = a 3 a 4 x 2 x 3 x 4 + b 2 b 3 b 4 a 5 x 5 a 1 x 1 a 2 x 2 a 3 x 3 a 4 x 4 a 5 x 5 x 2 x 3 x 4 x 5 + + b 1 x 2 b 2 x 3 b 3 x 4 b 4 x 5 c 1 c 2 c 3 c 4 + donde es la multiplicación de vectores componente a componente. c 1 x 1 c 2 x 2 c 3 x 3 c 4 x 4 18. Algunas clases de matrices necesitan más teoría. Por ejemplo, para trabajar de manera eficiente con matrices circulantes es importante saber el teorema de convolución: x 1 x 2 x 3 x 4, F n (a b) = F n (a) F n (b). (4) Aquí a b es la convolución discreta cíclica de dos vectores a, b C n, es la multiplicación de vectores por componentes y F n es la transformada discreta cíclica de Fourier. Además se sabe que el producto de una matriz circulante por un vector se expresa a través de la convolución discreta cíclica de dos vectores: De las fórmulas (4) y (5) se sigue que C n (a)x = a x = F 1 n C n (a)x = a x. (5) F n (a x) = F 1 (F n (a) F n (x)). La última expresión se puede calcular en el lenguaje Matlab como ifft(fft(a).* fft(x)); n Tareas de matrices especiales, página 5 de 9

19. Escribir una función que multiplica la matriz especial por un vector, trabajando con los datos iniciales, sin construir la matriz completa. function [y] = tridiagonal_mul_vector(a, b, c, x), bext = [b; ]; cext = [; c]; xmost = x(1 : - 1); xrshift = [; xmost]; xrest = x(2 : ); xlshift = [xrest; ]; y = a.* x + bext.* xlshift + cext.* xrshift; 2. Pruebas con datos pequeños. function [] = small_test_tridiagonal_mul_vector(), a = [-2; 1; 4; 2]; b = [1; -2; -1]; c = [3; 1; 5]; x = [-4; -1; 3; -2]; Afull = tridiagonal_full_fast(a, b, c); Asparse = tridiagonal_sparse(a, b, c); p1 = Afull * x; p2 = Asparse * x; p3 = tridiagonal_mul_vector(a, b, c, x); display(p1); display(p2); display(p3); 21. Pruebas con datos grandes. function [] = large_test_tridiagonal_mul_vector(n), a = rand(n, 1); b = rand(n - 1, 1); c = rand(n - 1, 1); x = rand(n, 1); Afull = tridiagonal_full_fast(a, b, c); Asparse = tridiagonal_sparse(a, b, c); t1 = cputime(); p1 = Afull * x; t1 = cputime() - t1; t2 = cputime(); p2 = tridiagonal_mul_vector(a, b, c, x); t2 = cputime() - t3; t3 = cputime(); p3 = Asparse * x; t3 = cputime() - t3; display([t1, t2, t3]); display([norm(p1 - p2), norm(p1 - p3)]); Tareas de matrices especiales, página 6 de 9

22. Tabla con resultados de la prueba (el tiempo de ejecución). Los renglones de la tabla corresponden a las tres maneras de calcular el producto: I. Con el comando Afull * x. II. Con la función tridiagonal_mul_vector. III. Con el comando Asparse * x. n = 256 n = 512 n = 124 n = 248 n = 496 I.??????????????? II.??????????????? III.??????????????? 23. Criterio de buena ejecución. Para n suficientemente grande, II debe ser más rápido que I. Para n 1, las normas de las diferencias entre los productos calculados por varios métodos deben ser menores a 1 8. Tareas de matrices especiales, página 7 de 9

Tercera tarea de matrices especiales: métodos iterativos para resolver sistemas lineales 24. Escribir funciones que aplican métodos iterativos de Jacobi, de gradiente y de gradiente conjugado a sistemas lineales con matrices especiales de la clase elegida, usando la función del Ejercicio 19. Por ejemplo, en el lenguaje Matlab el método de Jacobi para sistemas de ecuaciones lineales de la forma Ax = y con matrices tridiagonales se puede realizar con la siguiente función: function [x, s] = tridiagonal_jacobi_solver(a, b, c, y, tol, smax), n = length(a); x = zeros(n, 1); r = b; s = ; while (s < smax) && (norm(r) > tol), x = x + r./ a; r = b - tridiagonal_mul_vector(a, b, c, x); s = s + 1; 25. Solución de sistemas por medio de métodos directos, por ejemplo, con la factorización de Cholesky o con la factorización QR. function [x] = tridiagonal_solve_via_qr(a, b, c, y), A = tridiagonal_full_fast(a, b, c); [Q, R] = qr(a); x = Q * (R \ y); En vez de aplicar las funciones estándares qr, chol y el comando R \ y, se recomia escribir sus propias funciones que realicen la solución de sistemas con matrices triangulares, la factorización QR o la factorización de Cholesky. 26. Pruebas pequeñas. function [] = small_test_tridiagonal_solve(), a = [5; 3; 4; 7]; b = [-1; 1; 2]; u = [-2; 1; 3; 2]; y = tridiagonal_full_fast(a, b, b) * u; tol = 1.E-8; x1 = tridiagonal_solve_via_qr(a, b, b, y); x2 = tridiagonal_jacobi_solver(a, b, b, y, tol, 5); x3 = tridiagonal_gradient_solver(a, b, b, y, tol, 5); x4 = tridiagonal_conjugate_gradient_solver(a, b, b, y, tol, 5); display([u x1 x2 x3 x4]); Tareas de matrices especiales, página 8 de 9

27. Pruebas grandes. Generar matrices de la clase elegida de tamaños grandes con algunos datos admisibles (para que la matriz sea simétrica y positiva definida), aplicar 4 métodos de solución de sistemas escritos abajo y comparar los resultados. I. A partir de los datos iniciales construir la matriz en el formato completo y resolver el sistema con la descomposición QR (o con otro método directo). II. Aplicar el método de Jacobi con la función que hace la multiplicación rápida. III. Usar el método de gradiente con la función que hace la multiplicación rápida. IV. Usar el método de gradiente conjugado con la función que hace la multiplicación rápida. En la tabla de comparación escribir el tiempo de ejecución (en segundos) y la norma del vector b Ax. n = 256 n = 512 n = 124 n = 248 n = 496 I.??????????????? II.??????????????? III.??????????????? IV.??????????????? Tarea optativa: precondicionamiento 28. Para matrices A de la clase elegida encontrar alguna receta para construir una matriz de precondicionamiento M. La matriz de precondicionemiento también debe ser simétrica y positiva definida, y el producto MA debe ser cercano a la matriz identidad I n, en cierto sentido. Por ejemplo, la matriz MA I n debe ser pequeña (en el sentido de alguna norma matricial), o la mayor parte de los valores propios de la matriz MA debe concentrarse cerca del número 1. Luego realizar el método de gradiente conjugado con precondicionamiento y comparar la eficiencia con el método sin precondicionamiento. Tareas de matrices especiales, página 9 de 9