Factorización LU y la librería GSL. Graficaciíon en Gnuplot

Documentos relacionados
Factorización LU y la librería GSL

Lectura y escritura de datos en archivos binarios

Dr. Alonso Ramírez Manzanares CIMAT A.C. cimat.mx web: alram/met_num/

Dr. Alonso Ramírez Manzanares CIMAT A.C. cimat.mx web: alram/met_num/

Matrices bandadas Cálculo de la inversa y determinante Normas vectoriales y matriciales

Repaso de algebra matricial

Método de mínimo cuadrados (continuación)

Método de mínimos cuadrados (Continuación)

Factorización QR Método iterativo de Jacobi

Dr. Alonso Ramírez Manzanares Depto. de Matemáticas Univ. de Guanajuato cimat.mx web:

MAT web:

Métodos iterativos para resolver sistemas de ecuaciones lineales

Métodos iterativos para resolver sistemas de ecuaciones lineales

Repaso sobre lectura de datos desde la línea de comandos, manejo de memoria dinámica e introducción a la librería GSL

Recetario de gnuplot (versión 5.2)

Cuadratura Gaussiana basada en polinomios ortogonales.

Introducción a EDP: Ecuaciones hiperbólicas y parabólicas

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

Eigenvalores y eigenvectores. Método de la potencia

Electromagnetismo I. Semestre: Prof. Alejandro Reyes Coronado Ayud. Carlos Alberto Maciel Escudero Ayud. Christian Esparza López

Propagación de errores

Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método de disparo Método predictor-corrector

Guía rápida para gnuplot

Departamento de Ecuaciones Diferenciales y Análisis Numérico. CÁLCULO NUMÉRICO I (Tema 3 - Relación 2)

Estrategias de pivoteo en eliminación Gaussiana

Electromagnetismo II. Solución Proyecto 1. Cuadrado

Diferenciación numérica: Sistemas de ecuaciones lineales ordinarias Método predictor-corrector Método de disparo

Métodos para matrices especiales. Descomposición de Cholesky

Problema de convolución y deconvolución Diferencias finitas para EDO

Cap 3: Álgebra lineal

Errores por la representación de punto flotante y propagación de errores

Resolución de Sistema de Ecuaciones Lineales

Formulación de Galerkin El método de los elementos finitos

Manual Rápido de Gnuplot

RESOLUCIÓN DE SISTEMAS LINEALES

SEL Métodos Directos

Sistemas de Ecuaciones Lineales

SEL - Métodos Directos

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

Diferenciación numérica: Método de Euler explícito

Parte 2. Métodos directos para la resolución de sistemas de ecuaciones lineales

Benemérita Universidad Autónoma de Puebla Facultad de Ciencias de la Computación Área de Programación

Lección 10. Eliminación Gaussiana

Diferenciación numérica: Método de Euler explícito

Métodos para matrices especiales. Descomposición de Cholesky

Sistemas de Ecuaciones. Lineales II

Estrategias de pivoteo

Matemática 2 MAT022. Clase 4 (Complementos) Departamento de Matemática Universidad Técnica Federico Santa María. Sistemas de Ecuaciones. logo.

Diferenciación numérica: Método de Euler implícito Métodos tipo Runge-Kutta

Lección 8. Matrices y Sistemas de Ecuaciones Lineales

Sistema de ecuaciones lineales. Métodos de solución para matrices cuadradas

Uso de LS. Esta matriz de 3x3 simétrica y definida positiva es un tensor de difusión de hidrógeno. , con gi en R 3. i S 0 exp bgt i Dg i i

Métodos iterativos de solución de SEL

Comenzando a usar MatLab:

Últimas notas de SVD

Tema 2. Tipos y Estructuras Básicas

Sistema de ecuaciones lineales. Métodos de solución para matrices cuadradas

Sistema de ecuaciones lineales. Métodos de solución para matrices cuadradas

Breve Tutorial sobre el Graficador GNUPlot

Métodos iterativos de solución de SEL

Programación Estructurada

Aproximación discreta de mínimos cuadrados con lapack

Cálculo del histograma de una imagen

Prácticas 4 y 5 Programando en Java

Resolución de sistemas de ecuaciones lineales

Sistemas de Ecuaciones. Lineales III

Prácticas 3 y 4 Programando en Java

Taller de Informática I Cuarta Clase: Gráficos y Archivos. Año 2016

Sistema de ecuaciones algebraicas. Eliminación de Gauss.

Aplicar este algoritmo para resolver el sistema de ecuaciones: º «« º ««

Elementos de Cálculo Numérico (M) - Cálculo Numérico

Resolución de sistemas lineales

Algoritmo de la factorización LU

Sistema de ecuaciones algebraicas. Descomposición LU.

Elementos de Cálculo Numérico / Cálculo Numérico Primer Cuatrimestre 2016

Sistemas de Ecuaciones Lineales

Matrices y Sistemas Lineales

Tema 5: Determinantes.

Prof. Dr. Paul Bustamante

Matrices y Sistemas de Ecuaciones lineales

Para resolver un sistema lineal estan permitidas tres operaciones en las ecuaciones.

Programación con Matlab

Práctica 2 - Manejo de estructuras de datos y punteros

Laboratorio 5 Tema 7. Tipos de Datos Estructurados: Arreglos, Registros y Archivos

Método de potencia directo e inverso

Trabajo Práctico 5 Estructura Repetitiva

>> % suma de dos números reales, el resultado se asigna a ans

Octave. Entorno Interactivo. 19/8/2013 Computación 1 - Facultad de Ingeniería 1

MÓDULO SE: SISTEMAS DE ECUACIONES

Álgebra Lineal Ma1010

Curso - Taller Gnuplot

Práctica 2: Estructuras/Uniones/Campos de bits

Transcripción:

Clase No 6: Factorización LU y la librería GSL Graficaciíon en Gnuplot MAT 251 Dr Alonso Ramírez Manzanares CIMAT, AC e-mail: alram@ cimatmx web: http://wwwcimatmx/ alram/met_num/ Dr Joaquín Peña Acevedo CIMAT AC e-mail: joaquin@ cimatmx Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 1 / 20

Observaciones sobre la factorización LU Para resolver el sistema Ax = b hay que considerar el sistema PAx = Pb = LUx = Pb Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 2 / 20

Observaciones sobre la factorización LU Para resolver el sistema Ax = b hay que considerar el sistema PAx = Pb = LUx = Pb Para pivoteo total, entonces PAQ = LU donde P y Q son matrices de permutación Una implementación robusta debe al menos calcular la matriz P (la que se genera por pivoteo parcial) para poder calcular la solución del problema Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 2 / 20

Sobre el almacenamiento de las matrices L y U Para la factorización de Doolittle tenemos que calcular n 2 valores n(n+1) 2 valores para u ij con i j n(n+1) 2 n valores para l ij con i > j Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 3 / 20

Sobre el almacenamiento de las matrices L y U Para la factorización de Doolittle tenemos que calcular n 2 valores n(n+1) 2 valores para u ij con i j n(n+1) 2 n valores para l ij con i > j Fijo j, en el algoritmo de Doolittle calculamos u ij y l ij, y no se vuelve a requerir los valores de a ij Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 3 / 20

Sobre el almacenamiento de las matrices L y U Para la factorización de Doolittle tenemos que calcular n 2 valores n(n+1) 2 valores para u ij con i j n(n+1) 2 n valores para l ij con i > j Fijo j, en el algoritmo de Doolittle calculamos u ij y l ij, y no se vuelve a requerir los valores de a ij Se pueden almacenar los valores u ij y l ij en la matriz del sistema A a 11 a 12 a 13 a 1n a 21 a 22 a 23 a 2n a 31 a 32 a 33 a 3n a n1 a n2 a n3 a nn u 11 u 12 u 13 u 1n l 21 u 22 u 23 u 2n l 31 l 32 u 33 u 3n l n1 l n2 l n3 u nn Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 3 / 20

Sobre el almacenamiento de las matrices L y U Para la factorización de Doolittle tenemos que calcular n 2 valores n(n+1) 2 valores para u ij con i j n(n+1) 2 n valores para l ij con i > j Fijo j, en el algoritmo de Doolittle calculamos u ij y l ij, y no se vuelve a requerir los valores de a ij Se pueden almacenar los valores u ij y l ij en la matriz del sistema A Esto destruye la matriz A a 11 a 12 a 13 a 1n a 21 a 22 a 23 a 2n a 31 a 32 a 33 a 3n a n1 a n2 a n3 a nn u 11 u 12 u 13 u 1n l 21 u 22 u 23 u 2n l 31 l 32 u 33 u 3n l n1 l n2 l n3 u nn Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 3 / 20

Almacenamiento en memoria de la matrices Supongamos que tenemos una matriz m n, a 11 a 12 a 1n a 21 a 22 a 2n A = a m1 a m2 a mn Queremos reservar memoria para almacenar las entradas de la matriz, de manera que sea compatible con la forma en que la librería GSL almacena la información También queremos que se pueda accesar mediante un arreglo bidimensional, para facilitar la forma en que accesan a las entradas de la matriz a ij a[i][j] Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 4 / 20

Tarea Programar el método de factorización LU: Desde la línea de comandos dar los nombres de los archivos que contienen las entradas de la matriz A y del vector b Leer los archivos y crear los arreglos Calcular la factorización LU Resolver el sistema LUx = b Reportar el error Ax b Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 5 / 20

Factoriza LU usando GSL Para usar la librería GSL debemos utilizar las estructuras de datos que tiene definidas para vectores y matrices Si ya tenemos creados arreglos 1D y 2D en la forma que establecimos, es relativamente fácil empezar a usar las estructuras de vectores y matrices de la librería GSL, sin tener que duplicar la información Empezamos revisando las estructuras de la librería para vectores y matrices Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 6 / 20

Vectores en GSL (I) gsl_vector es una estructura con 5 componentes typedef struct { size_t size; size_t stride; double *data; gsl_block *block; int owner; } gsl_vector; El rango válido de índices es de 0 a size 1 El apuntador data da la posición del primer elemento del arreglo Para crear y liberar memoria, se usan las funciones: gsl_vector *gsl_vector_alloc(size_t n); void gsl_vector_free(gsl_vector *v); Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 7 / 20

Vectores en GSL (II) Para accesar a las entradas de los vectores: double gsl_vector_get(gsl_vector *v, size_t i); void gsl_vector_set(gsl_vector *v, size_t i, double x); Tambien se puede modificar los valores accesando directamente al arreglo data Ver el código vectorgslc: Lee un archivo que tiene un arreglo 1D y un escalar Multuplica los elementos del vector por el escalar y escribe el resultado en un archivo binario Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 8 / 20

Matrices en GSL (I) gsl_matrix es una estructura con 6 componentes typedef struct { size_t size1; size_t size2; size_t tda; double *data; gsl_block *block; int owner; } gsl_matrix; El número de filas es size1 y el de columnas es size2 El apuntador data da la posición del primer elemento del arreglo Los datos están almacenadas por filas Para crear y liberar memoria, se usan las funciones: gsl_matrix *gsl_matrix_alloc(size_t n1, size_t n2); void gsl_matrix_free(gsl_matrix *m); Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 9 / 20

Matrices en GSL (II) Para accesar a las entradas de las matrices: double gsl_matrix_get(gsl_matrix *m, size_t i, size_t j); void gsl_matrix_set(gsl_matrix *m, size_t i, size_t j, double x); El código matricesgsl1c lee una matriz de un archivo y un escalar desde la línea de comandos Usando las funciones de GSL, multiplica las entradas de la matriz por el escalar y la matriz resultante la almacena en un archivo El código matricesgsl2c hace lo mismo que el anterior, con la diferencia deque accesa directamente al arreglo data para modificar sus valores Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 10 / 20

Solución de un SEL en GSL El código lugslc muestra como usar la librería GSL para resolver un sistema de ecuaciones lineales usando factorización LU La función gsl_linalg_lu_decomp que calcula la factorización contempla el intercambio de fila, de modo que además de la factorización devuelve la permutación El código lugsl2c lee la información de los archivos con las funciones vistas en la clase anterior y muestra como pasar esta información a las estructuras de GSL sin tener que duplicar la memoria Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 11 / 20

Gnuplot Gnuplot es programa que puede generar gráficas 2D y 3D a partir de datos proporcionados en archivos o funciones que tienen expresiones analíticas Tambien puede hacer ajuste de datos Las gráficas generadas se pueden almacenar en diferentes formatos Para Windows, se puede obtener el instalador gp501-win64-mingwexe y el manual de usuario en el sitio http://sourceforgenet/projects/gnuplot/files/gnuplot/501/ Para Ubuntu, se puede usar el administrador de paquetes para instalarlo, o ejecutar desde la linea de comandos: sudo apt-get install gnuplot Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 12 / 20

Gnuplot Para reproducir los ejemplos, se puede Mandar a ejecutar gnuplot desde una consola y dar las instrucciones dentro del ambiente de gnuplot Si las instrucciones ya están en un archivo, digamos pruebagpl, dentro del ambiente de gnuplot se puede ejecutar load pruebagpl para generar la gráfica, o desde la línea de comandos se puede invocar el comando gnuplot pruebagpl Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 13 / 20

Ejemplo 2D set title "Dos Graficas de funciones" set xrange [-2:2] set yrange [-65:65] set zeroaxis plot 4*sin(4*x) title Multiplo de la funcion seno, \ 05*x**3 title Multiplo de la funcion cubica Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 14 / 20

Para generar una imagen de salida Para generar un archivo EPS con las graficas, hay que agregar las instrucciones: # Genera un archivo EPS set terminal postscript eps color lw 2 set output graficas1eps replot set term x11 set output Para generar un archivo PNG que tenga un tamaño de 460 pixeles de ancho y 320 pixeles de alto es: # Genera un archivo PNG set terminal png nocrop enhanced size 460,320 set output graficas1png replot set term x11 set output Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 15 / 20

Gráficas con datos tomados de un archivo plot "tablatxt" using 1:2 title 4*sin(4*x) w l, \ "tablatxt" using 1:3 title 05*x^3 w p, \ "tablatxt" using 1:4 title sqrt( x ) w linespoints set terminal png nocrop enhanced size 460,320 set output graficas2png replot set term x11 set output Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 16 / 20

Histograma de valores Usando el programa randomnormalc, el cual utiliza la librería GSL, genera un archivo con números muestreados de una distribución normal N(0, σ) El programa reporta la media y la estimación de σ y graba la muestra en un archivo de texto para visualmente verificar si su histograma corresponde a la distrubución Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 17 / 20

Gráficas 3D set xlabel X set ylabel Y set hidden3d splot "tablasuperficietxt" with lines Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 18 / 20

Gráficas 3D set terminal png nocrop enhanced size 460,400 set output grafica4png set pm3d map splot "tablasuperficietxt" set term x11 set output Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 19 / 20

Gráficas 3D Tambien se puede graficar un archivo que contiene un arreglo 2D como una imagen: set terminal png nocrop enhanced size 420,320 set output grafica5png plot /sincoord_tablasuperficietxt matrix with image set term x11 set output Alonso Ramírez (CIMAT) Métodos Numéricos (MAT 251) 26082015 20 / 20