CASO PRÁCTICO
Fecha:
05/10/2025
Nombre del estudiante:
Nombre del docente:
Randall Accrocca Sandoval
Fernando Jimenez Alvarez
José Andrés García Lezama
María Macias González
1. Resuelve los ejercicios aplicando los conocimientos sobre:
➢ Polinomios de interpolación de Lagrange
➢ Métodos numéricos
➢ Programación
2. Revisa nuevamente el siguiente material y replica el ejercicio planteado en el ejemplo 18.7 de la página
519.
Chapra, S. & Canale, R. (2007). Métodos numéricos para
ingenieros [Versión electrónica]. Recuperado de
http://artemisa.unicauca.edu.co/~cardila/Chapra.pdf
3. Programa el algoritmo para el método de interpolación de Lagrange, basado en el caso anterior, para
ello, utiliza algún lenguaje de programación recomendado por el docente, consulta la herramienta
en línea aquí sugerida. No olvides realizar las capturas de pantalla que muestre haber corrido y
obtenido los resultados derivados de la aplicación del método solicitado.
https://www.onlinegdb.com/
Código:
import numpy as np
import matplotlib.pyplot as plt
def lagrange_interpolacion(x, y, x_eval):
n = len(x)
resultado = 0.0
for i in range(n):
termino = 1.0
for j in range(n):
if i != j:
termino *= (x_eval - x[j]) / (x[i] - x[j])
resultado += y[i] * termino
return resultado
def evaluar_polinomio_lagrange_vector(x, y, xs):
"""Evalúa el polinomio (definido por x,y) en todos los puntos del array xs."""
return np.array([lagrange_interpolacion(x, y, xi) for xi in xs])
# --- Datos del problema (Ejemplo 18.7 - Chapra)
x_total = [1, 3, 5, 7, 13]
# tiempo (s)
y_total = [800, 2310, 3090, 3940, 4755] # velocidad (cm/s)
# Punto a estimar (entre 7 y 13)
t_evaluar = 10.0
# Subconjuntos para polinomios de distinto grado (según Chapra / enunciado)
casos = {
"Grado 4 (todos los datos)": (x_total, y_total),
"Grado 3 (puntos 3,5,7,13)": ([3, 5, 7, 13], [2310, 3090, 3940, 4755]),
"Grado 2 (puntos 5,7,13)": ([5, 7, 13], [3090, 3940, 4755]),
"Grado 1 (puntos 7,13)": ([7, 13], [3940, 4755])
}
# Evaluar en t = 10 s y mostrar resultados
resultados = {}
for nombre, (xs, ys) in casos.items():
val = lagrange_interpolacion(xs, ys, t_evaluar)
resultados[nombre] = val
print("Estimaciones de velocidad en t = 10 s (Lagrange):\n")
for nombre, val in resultados.items():
print(f"{nombre}: v(10) = {val:.6f} cm/s")
# --- Graficar cada polinomio en subplots (tipo figura 18.12)
t_plot = np.linspace(0, 15, 400) # rango para graficar las curvas
fig, axes = plt.subplots(2, 2, figsize=(12, 8))
axes = axes.flatten()
for ax, (nombre, (xs, ys)) in zip(axes, casos.items()):
# Curva del polinomio
y_plot = evaluar_polinomio_lagrange_vector(xs, ys, t_plot)
ax.plot(t_plot, y_plot, '-', linewidth=2, label='Interpolante (Lagrange)')
# Puntos de datos usados
ax.plot(xs, ys, 's', markersize=8, label='Datos usados')
# Marcar el punto t=10 y su estimación
y10 = lagrange_interpolacion(xs, ys, t_evaluar)
ax.plot(t_evaluar, y10, 'o', markersize=9, label=f'v(10) ≈ {y10:.2f} cm/s')
# Estética similar a Chapra
ax.set_title(nombre)
ax.set_xlim(0, 15)
ax.set_ylim(0, 6000)
ax.set_xlabel('t (s)')
ax.set_ylabel('v (cm/s)')
ax.grid(True, linestyle='--', alpha=0.4)
ax.legend(loc='lower right')
plt.tight_layout()
plt.show()
4. Redacta una conclusión en la que describas siete características en general que reconoces y
distingues entre los métodos estudiados y el método implementado para interpolación de
Lagrange.
1) No requiere resolver sistemas de ecuaciones, lo que lo hace práctico para conjuntos
pequeños de datos.
2) Es exacto para polinomios de grado ≤ n cuando se utilizan n+1 puntos.
3) Su implementación es sencilla y didáctica, lo que lo hace ideal para introducir conceptos de
interpolación.
4) Es útil para validación rápida de modelos en ingeniería.
5) Es sensible a la cantidad de datos: agregar más puntos puede aumentar el error debido a
oscilaciones (también conocido como fenómeno de Runge).
6) No reutiliza cálculos previos: cada nuevo punto requiere recalcular todo el polinomio.
7) No es eficiente para grandes conjuntos de datos, donde métodos como Newton o spline son
preferibles.
El método de Lagrange es útil en ingeniería para estimar valores intermedios en situaciones donde
se tienen pocos datos confiables, como:
•
Calibración de sensores
•
Simulaciones físicas discretas
•
Reconstrucción de curvas experimentales
En resumen, el método de Lagrange es una herramienta útil para interpolación en conjuntos
pequeños de datos, pero requiere cuidado al agregar más puntos y no es adecuado para grandes
conjuntos de datos.
5. Incorpora el proceso de desarrollo del caso en este mismo documento.
Este proyecto contiene scripts de métodos numéricos, actualmente centrados en la interpolación
polinómica de Lagrange. Está destinado a uso educativo o de ingeniería, siguiendo los ejemplos del libro
de texto de Chapra. Implementa la interpolación de Lagrange, la evaluación vectorizada y la
representación gráfica de resultados para un conjunto de datos determinado. Incluye datos de ejemplo
y visualiza resultados para polinomios de diferentes grados.
Cada método numérico se implementa como una función independiente. Se proporcionan versiones
vectorizadas para la evaluación por lotes.
Utiliza “matplotlib” para la visualización, con diseños de subparcelas para comparar diferentes grados
de interpolación.
* * *