La interpolación se refiere al proceso de crear nuevos puntos de datos dados dentro del conjunto de datos dado. El siguiente código calcula el punto de datos deseado dentro del rango dado de conjuntos de datos discretos usando la fórmula dada por Gauss y este método conocido como método directo de Gauss.
Método directo de Gauss:
La interpolación gaussiana viene bajo las fórmulas de interpolación de diferencia central. Supongamos que se nos da el siguiente valor de y=f(x) para un conjunto de valores de x:
X: x0 x1 x2 ………. xn
Y: y0 y1 y2 ………… yn
Las diferencias y1 – y0, y2 – y1, y3 – y2, ……, yn – yn–1 cuando se denotan por Δy0, Δy1, Δy2, ……, Δyn–1 son respectivamente , llamado las primeras diferencias hacia adelante. Así, las primeras diferencias directas son:
Δy 0 = y 1 – y 0
y de la misma manera podemos calcular diferencias de orden superior.
Y después de crear la tabla, calculamos el valor sobre la base de la siguiente fórmula:
Ahora, tomemos un ejemplo y resolvámoslo para una mejor comprensión.
Problema:
De la siguiente tabla, encuentre el valor de e 1.17 usando la fórmula directa de Gauss.
X | 1.00 | 1.05 | 1.10 | 1.15 | 1.20 | 1.25 | 1.30 |
e x | 2.7183 | 2.8577 | 3.0042 | 3.1582 | 3.3201 | 3.4903 | 3.6693 |
Solución:
Tenemos
y p = y 0 + pΔy 0 + (p(p-1)/2!).Δy 2 0 + ((p+1)p(p-1)/3!).Δy 3 0 + …
donde p = (x 1.17 – x 1.15 ) / h
y h = x 1 – x 0 = 0.05
entonces, p = 0.04
Ahora, necesitamos calcular Δy 0 , Δy 2 0 , Δy 3 0 … etc.
Ponga los valores requeridos en la fórmula-
y x = 1.17 = 3.158 + (2/5)(0.162) + (2/5)(2/5 – 1)/2.(0.008) …
y x = 1.17 = 3.2246
Código : código de Python para implementar la fórmula directa de Gauss
Python3
# Python3 code for Gauss's Forward Formula # importing library import numpy as np # function for calculating coefficient of Y def p_cal(p, n): temp = p; for i in range(1, n): if(i%2==1): temp * (p - i) else: temp * (p + i) return temp; # function for factorial def fact(n): f = 1 for i in range(2, n + 1): f *= i return f # storing available data n = 7; x = [ 1, 1.05, 1.10, 1.15, 1.20, 1.25, 1.30 ]; y = [[0 for i in range(n)] for j in range(n)]; y[0][0] = 2.7183; y[1][0] = 2.8577; y[2][0] = 3.0042; y[3][0] = 3.1582; y[4][0] = 3.3201; y[5][0] = 3.4903; y[6][0] = 3.6693; # Generating Gauss's triangle for i in range(1, n): for j in range(n - i): y[j][i] = np.round((y[j + 1][i - 1] - y[j][i - 1]),4); # Printing the Triangle for i in range(n): print(x[i], end = "\t"); for j in range(n - i): print(y[i][j], end = "\t"); print(""); # Value of Y need to predict on value = 1.17; # implementing Formula sum = y[int(n/2)][0]; p = (value - x[int(n/2)]) / (x[1] - x[0]) for i in range(1,n): # print(y[int((n-i)/2)][i]) sum = sum + (p_cal(p, i) * y[int((n-i)/2)][i]) / fact(i) print("\nValue at", value, "is", round(sum, 4));
Producción :
1 2.7183 0.1394 0.0071 0.0004 0.0 0.0 0.0001 1.05 2.8577 0.1465 0.0075 0.0004 0.0 0.0001 1.1 3.0042 0.154 0.0079 0.0004 0.0001 1.15 3.1582 0.1619 0.0083 0.0005 1.2 3.3201 0.1702 0.0088 1.25 3.4903 0.179 1.3 3.6693 Value at 1.17 is 3.2246