Interpolación Resolviendo Ax=b



 -Fundamento Teórico-

La ecuación lineal Ax = b es una forma algebraica fundamental para resolver sistemas lineales, y en el contexto de interpolación, se usa para encontrar los coeficientes de un polinomio (o función) que satisface las condiciones dadas.

  • A: Matriz de coeficientes construida a partir de los valores de entrada xix_i

  • x: Vector incógnita (por ejemplo, los coeficientes del polinomio interpolante)

  • b: Vector de resultados o salidas yiy_i

-Algoritmo del Método-

 

  1. Puntos de datos conocidos: Identifica los puntos (x1, y1) y (x2, y2) entre los cuales quieres interpolar.
  2. Valor a interpolar: Define el valor de 'x' para el cual deseas encontrar el valor correspondiente 'y'.
  3. Ecuación de la recta: La ecuación de la recta que pasa por los puntos (x1, y1) y (x2, y2) es:
y = y1 + (x - x1) * ((y2 - y1) / (x2 - x1))
  1. Calcula el valor de y: Sustituye los valores de x, x1, y1, y2 y x2 en la ecuación y resuelve para encontrar el valor de y correspondiente a 'x'.
Ejemplo:
Supón que tienes los puntos (1, 2) y (3, 8). Quieres encontrar el valor de 'y' cuando x = 2.
  1. x1 = 1, y1 = 2, x2 = 3, y2 = 8, x = 2
  2. y = 2 + (2 - 1) * ((8 - 2) / (3 - 1))
  3. y = 2 + 1 * (6 / 2)
  4. y = 2 + 3
  5. y = 5
Por lo tanto, el valor interpolado de 'y' para x = 2 es 5.

-Ejercicio Resuelto Paso a Paso-

Interpolar un polinomio que pase por los siguientes 3 puntos:

(1,2),(2,3),(3(1, 2), \quad (2, 3), \quad (3, 5)

Queremos encontrar el polinomio de grado 2P

(x)=a0+a1x+a2x2P(x) = a_0 + a_1 x + a_2 x^2

Paso 1: Plantear el sistema Ax = b

Para cada punto, sustituimos en el polinomio:

  1. Para x=1,y=2x = 1, y = 2:

a0+a1(1)+a2(1)2=2a0+a1+a2=2a_0 + a_1(1) + a_2(1)^2 = 2 \quad \Rightarrow \quad a_0 + a_1 + a_2 = 2
  1. Para x=2,y=3x = 2, y = 3:

a0+a1(2)+a2(4)=3a0+2a1+4a2=3a_0 + a_1(2) + a_2(4) = 3 \quad \Rightarrow \quad a_0 + 2a_1 + 4a_2 = 3
  1. Para x=3,y=5x = 3, y = 5:

a0+3a1+9a2=5a_0 + 3a_1 + 9a_2 = 5

Paso 2: Escribir en forma matricial Ax=bAx = b

[111124139]A[a0a1a2]x=[235]b\underbrace{ \begin{bmatrix} 1 & 1 & 1 \\ 1 & 2 & 4 \\ 1 & 3 & 9 \end{bmatrix} }_{A} \cdot \underbrace{ \begin{bmatrix} a_0 \\ a_1 \\ a_2 \end{bmatrix} }_{x} = \underbrace{ \begin{bmatrix} 2 \\ 3 \\ 5 \end{bmatrix} }_{b}

Paso 3: Resolver el sistema

Usamos eliminación de Gauss o cualquier método (resolveremos directamente aquí):

Usamos Python o manualmente:

Multiplicamos para eliminar:

  • Restamos fila 2 - fila 1:
    (1,2,4)(1,1,1)=(0,1,3)(1, 2, 4) - (1, 1, 1) = (0, 1, 3),
    y 32=13 - 2 = 1

  • Restamos fila 3 - fila 1:
    (1,3,9)(1,1,1)=(0,2,8)(1, 3, 9) - (1, 1, 1) = (0, 2, 8),
    y 52=35 - 2 = 3

Sistema reducido:

[111013028](ahora eliminamos de la fila 3 con la nueva fila 2)\begin{bmatrix} 1 & 1 & 1 \\ 0 & 1 & 3 \\ 0 & 2 & 8 \end{bmatrix} \Rightarrow \text{(ahora eliminamos de la fila 3 con la nueva fila 2)}

Fila 3 - 2 × Fila 2:
(0,2,8)2(0,1,3)=(0,0,2)(0, 2, 8) - 2(0, 1, 3) = (0, 0, 2)
32(1)=13 - 2(1) = 1

Sistema triangular:

[111013002]Resolucioˊn hacia atraˊs\begin{bmatrix} 1 & 1 & 1 \\ 0 & 1 & 3 \\ 0 & 0 & 2 \end{bmatrix} \Rightarrow \text{Resolución hacia atrás}
  1. a2=1/2=0.5a_2 = 1 / 2 = 0.5

  2. a1+3(0.5)=1a1=11.5=0.5a_1 + 3(0.5) = 1 \Rightarrow a_1 = 1 - 1.5 = -0.5

  3. a0+a1+a2=2a0=2(0.5)0.5=2a_0 + a_1 + a_2 = 2 \Rightarrow a_0 = 2 - (-0.5) - 0.5 = 2


Paso 4: Resultado

a0=2,a1=0.5,a2=0.5a_0 = 2, \quad a_1 = -0.5, \quad a_2 = 0.5

El polinomio interpolante es:

P(x)=20.5x+0.5x2P(x) = 2 - 0.5x + 0.5x^2

Paso 5: Verificación

Comprobamos que los puntos satisfacen el polinomio:

  • P(1)=20.5(1)+0.5(1)2=2P(1) = 2 - 0.5(1) + 0.5(1)^2 = 2

  • P(2)=21+2=3P(2) = 2 - 1 + 2 = 3

  • P(3)=21.5+4.5=5P(3) = 2 - 1.5 + 4.5 = 5

-Código del Método-

import numpy as np
import matplotlib.pyplot as plt

# Datos conocidos (puntos)
x_vals = np.array([1, 2, 3])
y_vals = np.array([2, 3, 5])

# Construir la matriz de Vandermonde A
n = len(x_vals)
A = np.vander(x_vals, increasing=True)  # columnas: [x^0, x^1, x^2, ...]

# Resolver el sistema Ax = b para obtener los coeficientes del polinomio
coef = np.linalg.solve(A, y_vals)

# Mostrar los coeficientes
print("Coeficientes del polinomio interpolante (de menor a mayor grado):")
print(coef)

# Crear una función polinómica con esos coeficientes
def interpolating_polynomial(x):
    return sum(coef[i] * x**i for i in range(len(coef)))

# Crear valores para graficar el polinomio
x_plot = np.linspace(min(x_vals) - 1, max(x_vals) + 1, 200)
y_plot = interpolating_polynomial(x_plot)

# Graficar
plt.figure(figsize=(8, 6))
plt.plot(x_plot, y_plot, label="Polinomio Interpolante", color='blue')
plt.scatter(x_vals, y_vals, color='red', label="Puntos dados")
plt.title("Interpolación polinómica (resolviendo Ax = b)")
plt.xlabel("x")
plt.ylabel("y")
plt.grid(True)
plt.legend()
plt.show()

-Grafica-


-Video Explicativo-

-Conclusión-

La interpolación es una técnica útil para estimar valores desconocidos entre puntos de datos conocidos, permitiendo completar vacíos y obtener una función que se ajuste a los datos. Es una herramienta valiosa en matemáticas, estadística, ingeniería, y otras áreas, donde se necesita predecir valores o simplificar cálculos. 

Comentarios