Interpolación directa de Gauss

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

Publicación traducida automáticamente

Artículo escrito por saqib9828 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 *