<a href="https://colab.research.google.com/github/nitanilla/metodosNumericos/blob/main/Practica_de_Laboratorio.ipynb" target="_parent"></a>


```
#interpolación Lineal
!pip install scipy
import numpy as np
import matplotlib.pyplot as plt
```

    Requirement already satisfied: scipy in /usr/local/lib/python3.6/dist-packages (1.4.1)
    Requirement already satisfied: numpy>=1.13.3 in /usr/local/lib/python3.6/dist-packages (from scipy) (1.18.5)



```
from scipy.interpolate import interp1d

x = np.linspace(1, 6, num=4, endpoint=True)
print(x)
#y = np.cos(-x**2/9.0)
y = np.log(x)
f = interp1d(x, y) #interpolación Lineal
f2 = interp1d(x, y, kind='cubic') #interpolación cubica

xnew = np.linspace(1, 6, num=41, endpoint=True)

plt.plot(x, y, 'o', xnew, f(xnew), '-', xnew, f2(xnew), '--')
plt.legend(['data', 'linear', 'cubic'], loc='best')
plt.show()
```


```
from scipy.interpolate import interp1d
x = np.linspace(0, 10, num=11, endpoint=True)
y = np.cos(-x**2/9.0)
f = interp1d(x, y)
f2 = interp1d(x, y, kind='cubic')

xnew = np.linspace(0, 10, num=41, endpoint=True)
import matplotlib.pyplot as plt
plt.plot(x, y, 'o', xnew, f(xnew), '-', xnew, f2(xnew), '--')
plt.legend(['data', 'linear', 'cubic'], loc='best')
plt.show()
```


```
# Interpolacion de Lagrange
# http://blog.espol.edu.ec/analisisnumerico/interpolacion-de-lagrange/
# divisoresL solo para mostrar valores
import numpy as np
import sympy as sym
import matplotlib.pyplot as plt

# INGRESO , Datos de prueba
xi = np.array([0, 0.2, 0.3, 0.4])
fi = np.array([1, 1.6, 1.7, 2.0])

# PROCEDIMIENTO
# Polinomio de Lagrange
n = len(xi)
x = sym.Symbol('x')
polinomio = 0
divisorL = np.zeros(n, dtype = float)
for i in range(0,n):
    # Termino de Lagrange
    numerador = 1
    denominador = 1
    for j  in range(0,n):
        if (j!=i):
            numerador = numerador*(x-xi[j])
            denominador = denominador*(xi[i]-xi[j])
    terminoLi = numerador/denominador
    polinomio = polinomio + terminoLi*fi[i]
    divisorL[i] = denominador
    # simplifica el polinomio
    polisimple = polinomio.expand()
    # para evaluación numérica
    px = sym.lambdify(x,polisimple)

    # Puntos para la gráfica
    muestras = 101
    a = np.min(xi)
    b = np.max(xi)
    pxi = np.linspace(a,b,muestras)
    pfi = px(pxi)

    # Salida por
    print("********************************")
    print("ITERACION ",i+1)
    print("********************************")
    print('Valores de fi: ',fi)
    print('Divisores en L(i): ',divisorL)
    print()
    print('Polinomio de Lagrange, expresiones')
    print(polinomio)
    print()
    print('Polinomio de Lagrange: ')
    print(polisimple)

    # Gráfica

    plt.plot(pxi,pfi, label = 'Polinomio '+str(i+1))
    plt.legend()
    plt.xlabel('xi')
    plt.ylabel('fi')
    plt.title('Interpolación Lagrange')

plt.plot(xi,fi,'o', label = 'Puntos DE')
plt.show()
print("_________________________________________")
print("Siendo polinomio 4 el polinomio final")
print("_________________________________________")
```


```
# Interpolacion de Lagrange
# http://blog.espol.edu.ec/analisisnumerico/interpolacion-de-lagrange/
# divisoresL solo para mostrar valores
import numpy as np
import sympy as sym
import matplotlib.pyplot as plt

# INGRESO , Datos de prueba
xi = np.array([0, 0.2, 0.3, 0.4])
fi = np.array([1, 1.6, 1.7, 2.0])

# PROCEDIMIENTO
# Polinomio de Lagrange
n = len(xi)
x = sym.Symbol('x')
polinomio = 0
divisorL = np.zeros(n, dtype = float)
for i in range(0,n):
    # Termino de Lagrange
    numerador = 1
    denominador = 1
    for j  in range(0,n):
        if (j!=i):
            numerador = numerador*(x-xi[j])
            denominador = denominador*(xi[i]-xi[j])
    terminoLi = numerador/denominador
    polinomio = polinomio + terminoLi*fi[i]
    divisorL[i] = denominador
    # simplifica el polinomio
    polisimple = polinomio.expand()
    # para evaluación numérica
    px = sym.lambdify(x,polisimple)

    # Puntos para la gráfica
    muestras = 101
    a = np.min(xi)
    b = np.max(xi)
    pxi = np.linspace(a,b,muestras)
    pfi = px(pxi)

    # Salida por
    print("********************************")
    print("ITERACION ",i+1)
    print("********************************")
    print('Valores de fi: ',fi)
    print('Divisores en L(i): ',divisorL)
    print()
    print('Polinomio de Lagrange, expresiones')
    print(polinomio)
    print()
    print('Polinomio de Lagrange: ')
    print(polisimple)

    # Gráfica

    plt.plot(pxi,pfi, label = 'Polinomio '+str(i+1))
    plt.legend()
    plt.xlabel('xi')
    plt.ylabel('fi')
    plt.title('Interpolación Lagrange')

    plt.plot(xi,fi,'o', label = 'Puntos DE')
    plt.show()
print("_________________________________________")
print("Siendo polinomio 4 el polinomio final")
print("_________________________________________")
```

a9c3bb18a3ff5c10b5a1bca2cb62fd4c8a4418cc
ipynb
Jupyter Notebook
IF457BIN/174912_ Lagrange.ipynb
nitanilla/metodosNumericos
dcbc7d03cd09772ad19c86c75e6a6e5476656148
Apache-2.0
IF457BIN/174912_ Lagrange.ipynb
nitanilla/metodosNumericos
dcbc7d03cd09772ad19c86c75e6a6e5476656148
Apache-2.0
IF457BIN/174912_ Lagrange.ipynb
nitanilla/metodosNumericos
dcbc7d03cd09772ad19c86c75e6a6e5476656148
Apache-2.0
Qwen/Qwen-72B
1. YES
2. YES