La interpolación lineal es la técnica de determinar los valores de las funciones de cualquier punto intermedio cuando se conocen los valores de dos puntos adyacentes. La interpolación lineal es básicamente la estimación de un valor desconocido que cae dentro de dos valores conocidos. La interpolación lineal se usa en varias disciplinas como estadística, economía, determinación de precios, etc. Se usa para llenar los vacíos en los datos estadísticos en aras de la continuidad de la información.
Al usar la siguiente fórmula, podemos interpolar linealmente el punto de datos dado
Aquí (x1, y1) son las coordenadas del primer punto de datos. Y (x2,y2 ) son las coordenadas del segundo punto de datos, donde x es el punto en el que realizamos la interpolación e y es el valor interpolado.
Problema de ejemplo:
Pongamos un ejemplo para una mejor comprensión. Tenemos los siguientes valores de datos donde x denota el número e y es la función de la raíz cuadrada de x. Nuestra tarea es encontrar la raíz cuadrada de 5.5 (x) .
X |
1 |
2 |
3 |
4 |
5 |
6 |
---|---|---|---|---|---|---|
y ( f(x) = √x ) |
1 |
1.4142 |
1.7320 |
2 |
2.2360 |
2.4494 |
Podemos usar el método de interpolación lineal aquí.
1. Encuentra los dos adyacentes (x1, y1) ,(x2,y2) del xie (5,2.2360) y (6,2.4494).
Donde x1 = 5, x2= 6, y1 = 2.2360, y2 = 2.4494 e interpolamos en el punto x = 5.5.
2. Usando la fórmula y(x) = y1 + (x – x1) \frac{(y2 – y1) }{ (x2 – x1)}
3. Después de poner los valores en la ecuación anterior.
y = 2.3427
En x = 5,5 el valor de Y será 2,3427. Entonces, al usar la interpolación lineal, podemos determinar fácilmente el valor de una función entre dos intervalos.
Enfoque 1:
Usando la fórmula
Ejemplo: Supongamos que tenemos un conjunto de datos de la población de una ciudad y el año.
X(Año) |
2016 |
2017 |
2018 |
2019 |
2021 |
---|---|---|---|---|---|
Y(Población) |
10001 |
12345 |
74851 |
12124 |
5700 |
Aquí, X es el año e Y es la población de cualquier ciudad. Nuestra tarea de encontrar la población de la ciudad en el año 2020.
Elegimos nuestro (x1, y1) ,(x2,y2) como x1=2019 , y1=12124, x2=2021, y2=5700, x = 2020, y = ?
Aquí (x1, y1) y (x2, y2) son dos puntos adyacentes y x es el año para el que queremos predecir el valor de la población y.
Python3
# Python3 code # Implementing Linear interpolation # Creating Function to calculate the # linear interpolation def interpolation(d, x): output = d[0][1] + (x - d[0][0]) * ((d[1][1] - d[0][1])/(d[1][0] - d[0][0])) return output # Driver Code data=[[2019, 12124],[2021, 5700]] year_x=2020 # Finding the interpolation print("Population on year {} is".format(year_x), interpolation(data, year_x))
Population on year 2020 is 8912.0
Enfoque 2:
Usando scipy.interpolate.interp1d
De manera similar, podemos lograr una interpolación lineal usando una función de biblioteca scipy llamada interpolate.interp1d.
Sintaxis : scipy.interpolate.interp1d(x, y, kind=’linear’, axis=- 1, copy=True,bounds_error=Ninguno, fill_value=nan, asumir_sorted=False)
No Señor. |
Parámetros |
Descripción |
---|---|---|
1. |
X |
Una array 1-D de valores reales. |
2. |
y |
Una array ND de valores reales. |
3. |
tipo |
es decir, el tipo de interpolación que desea puede ser ‘lineal’, ‘más cercano’, ‘más cercano’, ‘cero’, ‘slinear’, ‘cuadrático’, ‘cúbico’, ‘anterior’ o ‘siguiente’. ‘cero’, ‘slinear’, ‘quadratic’ y ‘cubic’, por defecto es lineal . |
4. |
eje |
Especifica el eje de y a lo largo del cual interpolamos. |
5. |
Copiar |
Contiene valores booleanos si es True, la clase hace copias internas de x e y. |
6. |
límites_error |
Contiene valores booleanos. Si es verdadero, se genera un ValueError cuando se intenta la interpolación en un valor fuera del rango de x. |
Ejemplo:
Tengamos un conjunto de datos aleatorio:
X = [1,2,3,4,5], Y = [11,2.2,3.5,-88,1] y queremos encontrar el valor de Y en el punto 2.5.
Python3
# Implementation of Linear Interpolation using Python3 code # Importing library from scipy.interpolate import interp1d X = [1,2,3,4,5] # random x values Y = [11,2.2,3.5,-88,1] # random y values # test value interpolate_x = 2.5 # Finding the interpolation y_interp = interp1d(X, Y) print("Value of Y at x = {} is".format(interpolate_x), y_interp(interpolate_x))
Producción
Value of y at x = 2.5 is 2.85
Publicación traducida automáticamente
Artículo escrito por amnindersingh1414 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA