Descarga la aplicación para disfrutar aún más
Esta es una vista previa del archivo. Inicie sesión para ver el archivo original
import numpy as np import matplotlib.pyplot as plt # Definimos los puntos de datos a trazar xcoordenadas = np.array([0,21.1,37.8,54.4,71.1,87.8,100]) funcioni = np.array([1.79,1.13,0.696,0.519,0.338,0.321,0.296]) # Función de evaluación de FBR multicuádrica def rbffunction(xev, xdat, c): rbfv = np.sqrt((xev - xdat)**2 + c**2) return rbfv # Construcción de la matriz de interpolación def interpmat(xdat, c): nd = len(xdat) mat1 = np.zeros((nd,nd),float) for i in range (nd): for j in range (nd): mat1[i,j] = rbffunction(xdat[i], xdat[j], c) return mat1 # Superposición de funciones de base radial def rbfsuperposit(x, coef, xdat, c): y = np.zeros((len(x))) for i in range (len(x)): for j in range (len(xdat)): y[i] = y[i] + coef[j]*rbffunction(x[i], xdat[j], c) return y # Información de entrada xdat = xcoordenadas ydat = funcioni c = 0.3 # Parámetro de forma # Matriz de interpolación matint = interpmat(xdat, c) # Coeficientes de la interpolación coef = np.linalg.solve(matint, ydat) # Evaluación de la superposición sobre un intervalo x = np.linspace(0, 100, 1000) yinterp = rbfsuperposit(x, coef, xdat, c) fbr1 = rbffunction(x, xdat[0], c) fbr2 = rbffunction(x, xdat[1], c) fbr3 = rbffunction(x, xdat[2], c) fbr4 = rbffunction(x, xdat[3], c) # Sumas parciales de la interpolación yinterp6 = rbfsuperposit(x, coef[0:6], xdat[0:6], c) yinterp7 = rbfsuperposit(x, coef[0:7], xdat[0:7], c) yinterp8 = rbfsuperposit(x, coef[0:8], xdat[0:8], c) # Gráficas plt.figure() plt.plot(x, yinterp,"-" ,label = 'Interpolación RBF',color='blue') plt.plot(xdat, ydat, '*', label = 'Datos',color='red') plt.xlabel('x') plt.ylabel('y') plt.legend() plt.grid(True) plt.title('Interpolación con Funciones de Base Radial') # Cálculo del error RMS entre la interpolación y la función dada Err = np.sqrt((np.sum((yinterp - (np.cos(x))**10))**2)/len(yinterp)) print('Parámetro de forma: ', c) print('Error RMS de la aproximación: ', Err) # Gráficas plt.figure() plt.plot(x, yinterp6, label = 'Interpolación RBF6') plt.plot(x, yinterp7, label = 'Interpolación RBF7') plt.plot(x, yinterp8, label = 'Interpolación RBF8') plt.plot(x, yinterp, label = 'Interpolación RBF') plt.plot(xdat, ydat, 'or', label = 'Datos') plt.xlabel('x') plt.ylabel('y') plt.legend() plt.grid(True) plt.title('Sucesión de sumas parciales con RBF') plt.figure() plt.plot(x, fbr1, label = 'RBF1 evaluada en el intervalo de interés') plt.plot(x, fbr2, label = 'RBF2 evaluada en el intervalo de interés') plt.plot(x, fbr3, label = 'RBF3 evaluada en el intervalo de interés') plt.plot(x, fbr4, label = 'RBF4 evaluada en el intervalo de interés') plt.plot(xdat, ydat, 'or', label = 'Datos') plt.xlabel('x') plt.ylabel('y') plt.legend() plt.grid(True) plt.title('RBFs utilizadas en la interpolación') plt.show() """ Según los resultados obtennidos podemos ver como funciona la gafrica en la FBR que esta a medida que se aumentan las iteraciones cada vez es menor los datos, donde podemos observar que la gráfica pasa por los puntos dados a medida que este tiene un decremento a medida que pasa los intervalos."""
Compartir