Interpolación con Spline cúbico a partir de conjunto de datos - python 3

February 4, 2017 | Author: Gabriel Leon | Category: N/A
Share Embed Donate


Short Description

Download Interpolación con Spline cúbico a partir de conjunto de datos - python 3...

Description

Tarea 3 Le´on Gabriel [email protected] F´ısica Computacional II Departamento de F´ısica Facultad Experimental de Ciencias y Tecnolog´ıa Universidad de Carabobo

1.

Planteamiento del problema

Para la primera parte ser´a necesario incluir en el script una librer´ıa que permita realizar operacioProblema propuesto. Dado el siguiente con- nes matem´aticas, o bien, una librer´ıa que incluya junto de datos: funciones para realizar la interpolaci´on. Para abordar la segunda parte del problema, ser´ a necesario importar una librer´ıa para generar las x f (x) gr´aficas de las funciones. 0.0 1.0 0.2 0.412005 0.4 0.67133 2. Fundamento te´ orico 0.6 0.33486 Se denomina interpolaci´on a la obtenci´on de nue0.8 0.002508 vos puntos partiendo del conocimiento de un con0.9 -0.142444 junto discreto de puntos [1]. En t´erminos m´ as 1.0 -0.260052 formales, la interpolaci´on consiste en obtener, a partir de un conjunto de n parejas, Realizar una interpolaci´ on con spline c´ ubico y compararla con la f´ ormula de Bessel aproximada: (x , y ), (x , y ), . . . , (x , y ), 1

1

2

2

n

n

definido en un cierto intervalo [a, b], una funci´ on continua lo m´as sencilla posible tal que

f0 (x) = 1 − 2,249997x2 + 1,2656208x4 −0,3163866x6 + 0,0444479x8

f (xi ) = yi

−0,039444x10 + 0,0002100x12

(0 6 i 6 n)

(1)

Esto debe realizarse utilizando el lenguaje de pro- Se dice entonces que la funci´on f (x) definida por la ecuaci´on 1 es una funci´on de interpolaci´ on de gramaci´on python3.5. los datos de las n parejas [2]. An´ alisis del problema. El problema puede se- Existen muchas formas de definir las funciones de interpolaci´on, lo que da origen a un gran n´ umero pararse en dos partes: de m´etodos. Uno de ellos, especialmente popular Realizar una interpolaci´ on de tipo spline en la generaci´on de gr´aficos en inform´atica, es el c´ ubica sobre los datos proporcionados y guar- m´etodo de interpolaci´on por splines. dar el resultado de esta. Un spline es una curva diferenciable definida en porciones mediante polinomios [2]. Graficar la curva resultado de la interpola- Una funci´on spline est´a formada por varios polici´on y compararla con la correspondiente a nomios, cada uno definido sobre un subintervalo, f0 (x). 1

3.

que se unen entre s´ı obedeciendo a ciertas condiciones de continuidad. Si se dispone de n+1 puntos, que se denominar´an nudos, tales que t0 < t1 < · · · < tn y adem´as se ha fijado un entero k ≥ 0. Se dice entonces que una funci´ on spline de grado k con nudos en t0 , t1 , . . . , tn es una funci´ on S que satisface las condiciones [3]:

Resoluci´ on del problema

Se crea un script y se importa la librer´ıa numpy, para realizar operaciones de c´alculo num´erico, as´ı como el m´odulo pyplot inclu´ıdo en la librer´ıa matplotlib, para generar las gr´aficas. Del m´ odulo scipy.interpolate se importa la funci´on InterpolatedUnivariateSpline. Se almacenan los datos tabulados en dos listas, x y f x, y se procede a realizar la interpolaci´ on sobre estos usando la funci´on InterpolatedUnivariateSpline y especificando dentro de los par´ ametros de estas el grado de interpolaci´on k= 3 (spline c´ ubico). La salida de la funci´on, un iterable, se guarda en una variable y se usan los par´ametros get residual y get coeffs para calcular el residuo de la interpolaci´on y los coeficientes del polinomio que mejor se ajuste al spline (esto no equivale a los coeficientes del spline), respectivamente. Estos datos se imprimen en pantalla. Para graficar la funci´on aproximada de Bessel, f0 (x), se guardan sus coeficientes en una lista ordenados de forma tal que el primer elemento de la lista sea el coeficiente del mayor grado de x y el u ´ltimo, el t´ermino independiente. Se usa la funci´on poly1d, incluida en numpy, para crear un polinomio a partir de los coeficientes guardados. Finalmente, se crea un arreglo lo suficientemente grande para evaluar la funci´on dentro del intervalo definido en el enunciado y se procede a generar las gr´aficas de la interpolaci´on y la funci´on f0 sobre todo el arreglo creado, as´ı como el conjunto de datos puntuales que se tienen. Las gr´aficas se generan sobre el mismo plano con el fin de apreciar mejor la similitud entre las curvas.

i. En cada intervalo [ti−1 , ti ), S es un polinomio de grado menor o igual a k. ii. S tiene una derivada de orden (k-1) continua en [t0 , tn ]. En los problemas de interpolaci´ on, se utiliza a menudo la interpolaci´ on mediante splines porque da lugar a resultados similares requiriendo solamente el uso de polinomios de bajo grado, evitando as´ı las oscilaciones, indeseables en la mayor´ıa de las aplicaciones, encontradas al interpolar mediante ciertos m´etodos. El spline c´ ubico (k= 3) es el m´ as usado debido a que proporciona un excelente ajuste a los puntos tabulados y su c´ alculo no es excesivamente complejo. Adem´ as, a menudo conduce a ajustes que son agradables a la vista. Raz´ on por la cual es popular especialmente en las ´ areas de representaci´on de curvas y gr´ aficos en inform´atica, al utilizarse como ”minimizador de las asperezas” cuando se somete a una serie de restricciones [2]. En esta aproximaci´ on, la funci´ on es ajustada en cada intervalo con polinomios c´ ubicos, con la restricci´on adicional de que la primera y segunda derivadas de los polinomios deben ser continuas de un intervalo al siguiente. Esta continuidad de las pendientes es la raz´ on de que este spline sea particularmente agradable a la vista [4]. El m´odulo interpolate, incluido en la librer´ıa scipy de Python, contiene una variedad de funciones para realizar distintos tipos de interpolaci´on. Destaca la funci´ on InterpolatedUnivariateSpline, que permite hacer ajustes de tipo spline a partir de dos grupos de datos almacenados en objetos iterables [5].

4.

Resultados y an´ alisis

La interpolaci´on arroj´o un residuo igual a cero, lo que significa que la curva spline pasa por todos los puntos definidos en el enunciado. Adem´ as, el polinomio que mejor aproxima al spline es fs (x) = 1 − 0,15015033x + 1,11265565x2 +0,20961402x3 + 0,28380866x4 −0,79193089x5 − 0,260052x6

2

deba trabajar a lo largo de intervalos suficientemente grandes en donde la desviaci´on promedio de la curva spline sea menos relevante.

Referencias ˜ oz G., V. Apun[1] Rogan C., J. y Mun tes en un curso de Programaci´ on y M´etodos Num´ericos. 6a Edici´on. Universidad de Chile. Chile, 2006. [2] Villanueva D., W., Algoritmos de c´ alculo num´erico. http://www.uv.es/ diaz/mn/fmn.html. Figura 1: Curva spline de interpolaci´ on y funci´on aproximada de Bessel.

[3] Thompson, W. J., Computing for Scientists and Engineers. 1a Edici´on. Wiley, EEUU, 1992.

Este polinomio no corresponde a la funci´on spline, dado que esta tiene coeficientes distintos para cada segmento de interpolaci´ on. El par´ametro get coeffs s´ olo aproxima el spline mediante un polinomio con el fin de hacer posible la representaci´on del spline como una funci´ on sencilla. El residuo del spline obtenido fue igual a cero. En la figura 1 se muestra la gr´ afica generada por el script. En ella los datos de entrada se observan como puntos rojos y puede visualizarse que la curva spline aproxima a f0 con bastante exactitud en la vecindad de algunos puntos, pero el error crece a medida que se acerca a los extremos del intervalo definido. Esto puede deberse a que la funci´on InterpolatedUnivariateSpline utiliza un algoritmo de diferencia progresiva para aproximar la primera y segunda derivada de la funci´on en cada punto definido. Este m´etodo de diferenciaci´on num´erica presenta un margen de error grande a medida que crece la distancia entre dos puntos conocidos y este error tiende a acumularse en los extremos del intervalo de diferenciaci´on [4]. Puede obtenerse una mayor aproximaci´on si se realiza un spline de grado mayor a 3, o bien, si se calcula la interpolaci´ on mediante otro paquete o funci´on que utilice un m´etodo m´ as especializado para la aproximaci´ on de las derivadas. No obstante, la curva spline obtenida puede ser una buena aproximaci´ on de f0 en casos donde se

´ ez, M. J. y Bor[4] Landau, H. R.; Pa deianu, C. C., A Survey of Computational Physics: Introductory Computational Science. 1a Edici´on. Princeton University Press. EEUU, 2010. [5] Marzal, A. y Gracia, I., Introducci´ on a a la programaci´ on con Python. 1 Edici´ on. Universitat Jaume I. Espa˜ na, 2013.

3

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF