Interpolación SciPy

En este artículo, aprenderemos Interpolación usando el módulo SciPy en Python. Primero, discutiremos la interpolación y sus tipos con implementación.

Interpolación y sus tipos

La interpolación es una técnica de construcción de puntos de datos entre puntos de datos dados. El scipy.interpolate es un módulo en Python SciPy que consta de clases, funciones spline y clases de interpolación univariadas y multivariadas. La interpolación se realiza de muchas maneras, algunas de ellas son:

  • Interpolación 1-D
  • interpolación spline
  • Interpolación spline univariante
  • Interpolación RBF

Analicemos todos los métodos uno por uno y visualicemos los resultados.

Interpolación 1-D

Para crear una función basada en puntos de datos fijos, se usa scipy.interpolate.interp1d . Toma los puntos de datos x e y y devuelve una función que se puede llamar con la nueva x y devuelve el punto y correspondiente.

Sintaxis: scipy.interpolate.interp1d(x , y , tipo , eje , copia , error de límites , valor de relleno , asumir_ordenado)

Python

# Import the required Python libraries
import matplotlib.pyplot as plt
from scipy import interpolate
import numpy as np
  
# Initialize input values x and y
x = np.arange(0, 10)
y = x**2
  
# Interpolation
temp = interpolate.interp1d(x, y)
xnew = np.arange(0, 9, 0.2)
ynew = temp(xnew)
  
plt.title("1-D Interpolation")
plt.plot(x, y, '*', xnew, ynew, '-', color="green")
plt.show()

Producción:

 

interpolación spline

En la interpolación spline, se calcula una representación spline de la curva y luego se calcula la spline en los puntos deseados. La función splrep se usa para encontrar la representación spline de una curva en un plano bidimensional.

  • Para encontrar la representación B-spline de una curva 1-D, se usa scipy.interpolate.splrep .

Sintaxis: scipy.interpolate.splrep(x, y, w, xb, xe, k, task, s, t, full_output, per, quiet)

  • Para calcular un B-spline o sus derivados, se usa scipy.interpolate.splev .

Sintaxis: scipy.interpolate.splev(x, tck, der, ext)

Python

# Import the required Python libraries
import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate
  
# Initialize the input values
x = np.arange(0, 10)
y = np.cos(x**3)
  
# Interpolation
# To find the spline representation of a 
# curve in a 2-D plane using the function 
# splrep
temp = interpolate.splrep(x, y, s=0)
xnew = np.arange(0, np.pi**2, np.pi/100)
ynew = interpolate.splev(xnew, temp, der=0)
  
plt.figure()
  
plt.plot(x, y, '*', xnew, ynew, xnew, np.cos(xnew),
         x, y, 'b', color="green")
  
plt.legend(['Linear', 'Cubic Spline', 'True'])
plt.axis([-0.1, 6.5, -1.1, 1.1])
plt.title('Cubic-spline Interpolation in Python')
plt.show()

Producción:

Spline univariante

Es una spline de suavizado 1-D que se ajusta a un grupo dado de puntos de datos. El scipy.interpolate.UnivariateSpline se usa para ajustar una spline y = spl(x) de grado k a los datos x, y proporcionados. s especifica el número de nudos especificando una condición de suavizado. El scipy.interpolate.UnivariateSpline. set_smoothing_factor: Cálculo de spline con el factor de suavizado s dado y con los nudos encontrados en la última llamada.

Sintaxis: scipy.interpolate.UnivariateSpline(x, y, w, bbox, k, s, ext)

Python

# Import the required libraries
import matplotlib.pyplot as plt
from scipy.interpolate import UnivariateSpline
  
x = np.linspace(-3, 3, 50)
y = np.exp(-x**2) + 0.1 * np.random.randn(50)
plt.title("Univariate Spline")
plt.plot(x, y, 'g.', ms=8)
  
# Using the default values for the 
# smoothing parameter
spl = UnivariateSpline(x, y)
xs = np.linspace(-3, 3, 1000)
plt.plot(xs, spl(xs), 'green', lw=3)
  
# Manually change the amount of smoothing
spl.set_smoothing_factor(0.5)
plt.plot(xs, spl(xs), color='black', lw=3)
plt.show()

Producción:

Función de base radial para interpolación

El scipy.interpolate.Rbf se usa para interpolar datos dispersos en n dimensiones. La función de base radial se define como correspondiente a un punto de datos de referencia fijo. El scipy.interpolate.Rbf es una clase para la interpolación de función de base radial de funciones de datos dispersos ND a un dominio MD.

Sintaxis: scipy.interpolate.Rbf(*args)

Python

# Import the required libraries
import numpy as np
from scipy.interpolate import Rbf
import matplotlib.pyplot as plt
  
# setup the data values
x = np.linspace(0, 10, 9)
y = np.cos(x/2)
xi = np.linspace(0, 10, 110)
  
# Interpolation using RBF
rbf = Rbf(x, y)
fi = rbf(xi)
  
plt.subplot(2, 1, 2)
plt.plot(x, y, '*', color="green")
plt.plot(xi, fi, 'green')
plt.plot(xi, np.sin(xi), 'black')
plt.title('Radial basis function Interpolation')
plt.show()

Producción:

Publicación traducida automáticamente

Artículo escrito por shubhikagarg1999 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *