Scipy interpolar

Scipy interpolar

La interpolación es lo que vamos a discutir hoy. El concepto de interpolación se puede definir como un método para calcular un valor o número entre dos puntos en una línea o incluso una curva. Este concepto puede usar los datos en 1, 2 o incluso dimensiones más altas, ya que hay varias capacidades generales disponibles en SciPy para la interpolación y la suavidad. Si los datos no están estructurados, unidimensionales o proporcionados en una cuadrícula estructurada, determina qué método de interpolación se utiliza. La suavidad requerida del interpolador es otra consideración. Los métodos que se sugieren para la interpolación vienen en una variedad de formas. Con una explicación y ejemplos adecuados, discutiremos sobre la interpolación de Scipy en este artículo.

Interpolación en scipy

Scipy ofrece un módulo llamado Scipy.interpolar que presenta una amplia gama de funciones relacionadas con la interpolación. Un método para crear los puntos de datos entre los puntos de datos existentes se llama interpolación. Hay clases, funciones de spline y clases de interpolación univariadas y multivariadas en el módulo SciPy, SciPy.interpolar.

Tipos de interpolación

Hay numerosas formas de interpolar, algunas de las cuales incluyen:

    • Interpolación 1-D
    • Interpolación de spline
    • Interpolación univariada de spline
    • Interpolación RBF

Discutamos todos estos tipos en detalle y con ejemplos de programación para ver los resultados.

Interpolación 1-D

Se puede interpolar una distribución con solo una variable utilizando la función Interp1d (). Requiere la entrada de dos puntos, x e y, y genera una función invocable que, cuando se llama con una nueva x, devuelve el y.

Aquí está su sintaxis completa:


Expliquemos el concepto de interpolación 1-D con el siguiente ejemplo:

Ejemplo:

Digamos que desea usar los valores x_range y y_range para construir una función lineal con la fórmula y_range = f (x_range).

Este ejemplo muestra cómo crear una función que ya usa dos variables X_Range y Y_Range conocidas para estimar los puntos de datos de una línea usando el SciPy.interpolar.método interp1d (). El término "interp1d" se refiere a la interpolación en una sola dimensión, como una línea, usando solo los ejes x_range e y_range. Todo el código se proporciona aquí.

La primera sección del código muestra que importamos los módulos requeridos. Estos son matplotlib.Pyplot, Numpy, Scipy e Interp1d. La siguiente sección muestra la generación de los puntos aleatorios para x_range y y_range y el uso de estos dos valores, x_range e y_range. También incluye la ejecución del scipy.interpolar.Método interp1d () en el que los valores X_Range e Y_Range se pasan como parámetros. Después de eso, se generan nuevos puntos aleatorios para X_Range y Y_Range. Las cuatro declaraciones de impresión que se usan aquí muestran los puntos generados por la función lineal.

La última sección del código es donde se traza un gráfico usando los valores X_Range, Y_Range y los valores resultantes de X_RES e Y_RES.

Importar matplotlib.Pyplot como PLT
importar numpy
importación
De Scipy.Interpolate import interp1d
x_range = numpy.Arange (12,20)
imprimir ('x:', x_range)
y_range = numpy.exp (-x_range/10)
imprimir ('y:', y_range)
func_linear = scipy.interpolar.interp1d (x_range, y_range)
x_res = numpy.Arange (12,19,0.1)
y_res = func_linear (x_res)
print ('new_x:', x_res)
print ('new_y:', y_res)
PLT.dispersión (x_range, y_range, color = 'rojo')
PLT.tram (x_res, y_res, color = 'naranja')
PLT.xlabel ("x")
PLT.Ylabel ("Y")
PLT.Título ("Interpolación 1-D")
PLT.espectáculo()
PLT.saveFig ('resultado/gráfico.png ')


Esta es la pantalla resultante donde puede ver la implementación de la interpolación 1-D en la pantalla:

Interpolación de spline

Este ejemplo se trata de la interpolación de Spline.

En los campos de ingeniería informática de modelado asistido por computadora y gráficos por computadora, una curvatura polinomial por partes (paramétricas) se conoce con mayor frecuencia como una spline. Debido a su simplicidad en la construcción, simplicidad y precisión en la evaluación, y la capacidad para predecir formas complejas a través del ajuste de curvas y el diseño de curvas altamente interactiva, las estrías se utilizan con frecuencia en una variedad de campos.

La interpolación de spline utiliza splines de polinomios-terrMed para construir una función por partes, en oposición a la interpolación 1D, donde los puntos están equipados para una sola curva.

El método univariataspline () acepta dos parámetros, XS e YS, y genera una función invocable que se puede invocar con un nuevo valor para XS. Consulte el siguiente código adjunto:

El código es muy similar al ejemplo anterior, excepto que usamos los diferentes valores de entrada aquí. Entonces, el interpolar.La función de blev () se usa en esos valores. Se generan diferentes valores para x, y y t. Estos valores se trazan en la pantalla con una línea de código en la última sección de la imagen adjunta:

importar numpy
Importar matplotlib.Pyplot como PLT
de scipy import interpolar
x = numpy.Arange (0, 12)
y = numpy.cos (x ** 3)
t = interpolar.SplRep (x, y, s = 0)
x = numpy.Arange (0, Numpy.Pi ** 2, Numpy.pi/100)
y = interpolar.bazo (x, t, der = 0)
PLT.cifra()
PLT.Parcela (x, y, '*', x, y, x, numpy.cos (x),
x, y, 'b', color = "rojo")
PLT.leyenda (['lineal', 'spline cúbica', 'verdadero'])
PLT.eje ([-0.2, 5.6, -1.3, 1.2])
PLT.Título ('Ejemplo de interpolación cúbica-splina')
PLT.espectáculo()


El siguiente es el gráfico generado que explica el concepto de interpolación de Spline cúbico:

Interpolación univariada de spline

Hablaremos de la spline univariante aquí. Se ajusta a un conjunto específico de puntos de datos y es una spline de suavizado 1-D. Los datos de entrada X Val e Y Val se ajustan a una spline de K Grado utilizando el Scipy.interpolar.UnivariataSpline. El scipy.interpolar.El método Univariatas depline tiene un argumento más, s, que establece el número de nudos especificando una condición de suavizado. El spline.Establecer el factor de suavizado () La función calcula la spline utilizando el factor de suavizado especificado y los nudos identificados por la llamada anterior.

importar numpy
Importar matplotlib.Pyplot como PLT
De Scipy.Interpolate import Univariataspline
x_val = numpy.Linspace (-3, 3, 40)
y_val = numpy.exp (-x_val ** 2) + 0.1 * Numpy.aleatorio.Randn (40)
PLT.Título ("Spline univariante")
PLT.tram (x_val, y_val, 'g.', ms = 8)
spline_shape = univariataspline (x_val, y_val)
xs_shape = numpy.Linspace (-3, 3, 2000)
PLT.tram (xs_shape, spline_shape (xs_shape), 'amarillo', lw = 3)
spline_shape.set_smoothing_factor (0.5)
PLT.Plot (xs_shape, spline_shape (xs_shape), color = 'naranja', lw = 3)
PLT.espectáculo()


El siguiente es el gráfico generado del código anterior:

Interpolación de la función de base radial (RBF)

En este último ejemplo, nos centraremos en la función de base radial (RBF) para la interpolación. El interpolato Scipy.RBF se emplea para la interpolación N-dimensional de datos dispersos. Según su definición, la función de base radial corresponde a un punto de datos de referencia constante. El scipy.interpolar.La clase RBF se utiliza para interpolar las funciones directamente de datos dispersos N-D a un dominio M-D con el uso de las funciones de base radial.

La siguiente captura de pantalla adjunta muestra el código completo. Aquí, importamos los módulos RBF y Numpy. Después de eso, los valores se generan para xs_val e ys_val usando el arange () y numpy.Métodos sin (). Se utiliza una declaración de impresión para mostrar el mensaje "Aquí puede ver el resultado". Se crea una variable "res" en la que se usa el método RBF y el XS_VAL generado e YS_VAL se pasan como parámetros. Después de eso, se puede ver ZZ en el que se genera una lista de números para el rango especificado. Finalmente, se muestra el resultado.

De Scipy.interpolate import rbf
importar numpy
xs_val = numpy.Arange (8)
ys_val = xs_val ** 3 + numpy.sin (xs_val) + 2
Imprima ("Aquí puedes ver el resultado:")
res = rbf (xs_val, ys_val)
zz = res (numpy.Arange (2.1, 3, 0.1))
Imprimir (ZZ)


La siguiente es la salida donde se genera una serie de números a partir del código anterior en el que se utiliza el método RBF.

Conclusión

En este artículo, discutimos cuál es el concepto de interpolato Scipy. Sus tipos básicos y los detalles generales se cubren aquí. Puede encontrar fácilmente todos los requisitos con respecto a dicho tema en detalle con ejemplos de programación. Discutimos por separado todos sus tipos (interpolación 1-D, interpolación de spline, interpolación de spline univariada e interpolación RBF) con explicaciones y ejemplos adecuados para que pueda comprender mejor todo el concepto.