factorización lu y la librería gsl matrices bandadasjoaquin/cursos/mat251/clases/clase07.pdf ·...

13
Clase No. 7: Factorización LU y la librería GSL MAT–251 Dr. Alonso Ramírez Manzanares CIMAT, A.C. e-mail: alram@ cimat.mx web: http://www.cimat.mx/salram/met_num/ Dr. Joaquín Peña Acevedo CIMAT A.C. e-mail: joaquin@ cimat.mx Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 27.08.2014 1 / 13

Upload: vankhuong

Post on 01-Nov-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

Clase No. 7:

Factorización LU y la librería GSLMAT–251 Dr. Alonso Ramírez Manzanares

CIMAT, A.C.e-mail: [email protected]: http://www.cimat.mx/salram/met_num/

Dr. Joaquín Peña AcevedoCIMAT A.C.e-mail: [email protected]

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 27.08.2014 1 / 13

Tarea

Programar el método de factorización LU:

• Desde la línea de comandos dar los nombres de los archivos quecontienen 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‖.

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 27.08.2014 2 / 13

Lectura de archivos

Ver la descripción en la página del curso:

• En el apartado ’Extra’, en la sección de "Almacenamiento de matrices yvectores en archivos".

• Todos los archivos son binarios. Revisar el formato.

• Ver los ejemplos.

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 27.08.2014 3 / 13

Librería GSL

• El código está desarrollado en C.

• Tiene funciones para resolver todos los temas que están descritos en eltemario y más.

• En el manual de referencia vienen la descripción de las funciones yejemplos de como usarlas.

• Es importante notar que dependiendo de las funciones que se quieranusar hay que incluir ciertos archivos de encabezado.

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 27.08.2014 4 / 13

Vectores en GSL

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 laposición del primer elemento del arreglo.

gsl_vector *gsl_vector_alloc(size_t n);void gsl_vector_free(gsl_vector *v);double gsl_vector_get(gsl_vector *v, size_t i);void gsl_vector_set(gsl_vector *v, size_t i, double x);

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 27.08.2014 5 / 13

Matrices en GSL

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 dala posición del primer elemento del arreglo. Los datos están almacenadaspor filas.

gsl_matrix *gsl_matrix_alloc(size_t n1, size_t n2);void gsl_matrix_free(gsl_matrix *m);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, doublex);

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 27.08.2014 6 / 13

Gnuplot

• Gnuplot es programa que puede generar gráficas 2D y 3D a partir dedatos proporcionados en archivos o funciones que tienen expresionesanalíticas. Tambien puede hacer ajuste de datos.

• Las gráficas generadas se pueden almacenar en diferentes formatos.

• Para Windows, se puede obtener el instalador gp465-win32-setup.exe yel manual de usuario en el sitio.http://sourceforge.net/projects/gnuplot/files/gnuplot/4.6.5/

• Para Ubuntu, se puede usar el administrador de paquetes parainstalarlo, o ejecutar desde la linea de comandos:sudo apt-get install gnuplot

• Para reproducir los ejemplos, se puedeMandar a ejecutar gnuplot desde una consola y dar las instrucciones dentrodel ambiente de gnuplot.Si las instrucciones ya están en un archivo, digamos prueba.gpl, dentro delambiente de gnuplot se puede ejecutarload prueba.gplpara generar la gráfica, o desde la línea de comandos se puede invocar elcomandognuplot prueba.gpl

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 27.08.2014 7 / 13

Ejemplo 2D

set title "Dos Graficas de funciones"set xrange [-2:2]set yrange [-6.5:6.5]set zeroaxisplot 4*sin(4*x) title ’Multiplo de la funcion seno’, \

0.5*x**3 title ’Multiplo de la funcion cubica’

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 27.08.2014 8 / 13

Para generar una imagen de salida

Para generar un archivo EPS con las graficas, hay que agregar lasinstrucciones:

# Genera un archivo EPSset terminal postscript eps color lw 2set output ’graficas1.eps’replotset term x11set output

Para generar un archivo PNG que tenga un tamaño de 460 pixeles de anchoy 320 pixeles de alto es:

# Genera un archivo PNGset terminal png nocrop enhanced size 460,320set output ’graficas1.png’replotset term x11set output

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 27.08.2014 9 / 13

Gráficas con datos tomados de un archivo

plot "tabla.txt" using 1:2 title ’4*sin(4*x)’ w l, \"tabla.txt" using 1:3 title ’0.5*x^3’ w p, \"tabla.txt" using 1:4 title ’sqrt(|x|)’ w linespoints

set terminal png nocrop enhanced size 460,320set output ’graficas2.png’replotset term x11set output

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 27.08.2014 10 / 13

Gráficas 3D

set xlabel ’X’set ylabel ’Y’set hidden3dsplot "tablaSuperficie.txt" with lines

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 27.08.2014 11 / 13

Gráficas 3D

set terminal png nocrop enhanced size 460,400set output ’grafica4.png’set pm3d mapsplot "tablaSuperficie.txt"set term x11set output

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 27.08.2014 12 / 13

Gráficas 3DTambien se puede graficar un archivo que contiene un arreglo 2D como unaimagen:

set terminal png nocrop enhanced size 420,320set output ’grafica5.png’plot ’./sinCoord_tablaSuperficie.txt’ matrix with imageset term x11set output

Joaquín Peña (CIMAT) Métodos Numéricos (MAT–251) 27.08.2014 13 / 13