Logo Studenta

Interpolacion_Lagrange

Esta es una vista previa del archivo. Inicie sesión para ver el archivo original

#Importamos las librerías a utilizar
import numpy as np
import sympy as sym
import matplotlib.pyplot as plt
# INGRESO , Datos de prueba
xcoordenadas = np.array([0, 0.05, 0.1,0.1089])
funcioni = np.array([1, 1.1052, 1.2214,0.06328])
# PROCEDIMIENTO
# Polinomio de Lagrange
niteraciones = len(xcoordenadas)
x = sym.Symbol('x')
polinomio = 0
divisorL = np.zeros(niteraciones, dtype = float)
for i in range(0,niteraciones,1):
 
 # Termino de Lagrange
 numerador = 1
 denominador = 1
 for j in range(0,niteraciones,1):
 if (j!=i):
 numerador = numerador*(x-xcoordenadas[j])
 denominador = denominador*(xcoordenadas[i]-xcoordenadas[j])
 terminoLi = numerador/denominador
 polinomio = polinomio + terminoLi*funcioni[i]
 divisorL[i] = denominador
 # simplifica el polinomio
polinomiosimple = polinomio.expand()
 # para evaluación numérica
evaluacion_num = sym.lambdify(x,polinomiosimple)
# Puntos para la gráfica
#Creamos las muestras que son necesarias para poder evaluar 
muestras = 101 #Entre cada par de puntos
punto_a = np.min(xcoordenadas)
punto_b = np.max(xcoordenadas)
punto_xi = np.linspace(punto_a,punto_b,muestras)
punto_fi = evaluacion_num(punto_xi)
#Imprimimos los resultados del polinomio de lagrange
print(' valores de funcion(i): ',funcioni)
print('divisores en L(i): ',divisorL)
print()
print('Polinomio de Lagrange, expresiones')
print(polinomio)
print()
print('Polinomio de Lagrange: ')
print(polinomiosimple)
 # Gráfica
plt.plot(xcoordenadas,funcioni,'o', label = 'Puntos')
plt.plot(punto_xi,punto_fi, label = 'Polinomio')
plt.legend()
plt.xlabel('x coordenadas')
plt.ylabel('funcion(i)')
plt.title('Interpolación Lagrange')
plt.show()

Continuar navegando

Materiales relacionados