Seminario de Interpolacion
Seminario de Interpolacion
Seminario de Interpolacion
polinomial
Programación Numérica
Definición
Un polinomio de grado n es una expresión de la forma:
P(x) = anxn + an-1xn-1 + ... +a1x + a0
Donde an <> 0
f(x)
Reordenando
f(x1)
f1(x)
f(x0)
x0 x x1
Ejemplo
Estimar ln 2 mediante interpolación lineal si ln1 = 0 y ln 6 = 1.791759 y ln 4 = 1.386294
f(x) = ln x
Valor verdadero
f1(x)
Estimaciones lineales
Interpolación cuadrática
Polinomio cuadrático
f2(x) = b0 + b1(x – x0) + b2(x – x0)(x – x1) (1)
simplificado
f2(x) = b0 + b1x – b1x0 + b2x2 + b2x0 x1 – b2xx0 – b2xx1
Podemos escribirlo como
f2(x) = a0 + a1x + a2x2
Donde
a0 = b0 – b1x0 + b2x0 x1, a1 = b1 – b2x0 – b2x1, a2=b2
Podemos evaluar b0, b1 y b2 sustituyendo x0, x1 y x2 en la ecuación (1), se obtiene
b0 = f(x0)
ejemplo 2
Calculemos ln 2 con ln 4 y ln 6, los punto que se conocen son:
f(x) = ln x
x0 = 1 f(x0) = 0
x1 = 4 f(x0) = 1.386294
x0 = 6 f(x0) = 1.791759
Aplicando las ecs. anteriores
Valor verdadero
b0 = 0
b1 = (1.386294 – 0)/(4 – 1) = 0.4620981
b2 = ((1.791759 – 1.386294)
/(6 – 4) – 0.4620981)/(6 – 1)
= – 0.0518731 Estimación cuadrática
f2(2) = 0.5658444
Valor real ln 2 = 0.6931472
Error relativo porcentual = 18.4%
Forma general
Polinomio general
fn(x) = b0 + b1(x – x0) +...+ bn(x – x0)(x – x1)... (x – xn–1)
Los coeficientes se calculan con
b0 = f(x0)
b1 = f [x1, x0]
b2 = f [x2, x1, x0]
Valor verdadero
f(x) = ln x
Estimación cúbica
Estimación del error
Para estimar el error requerimos de un datos más (xn+1). La
siguiente fórmula puede utilizarse para estimar el error.
donde
Aproximación a 1/x con
interpolantes de Lagrange
Usaremos x0 = 2, x1 = 2.5 y x2 = 4, para obtener un polinomio de grado
2 para 1/x. f(x0) = 0.5, f(x1)= 0.4 y f(x2) = 0.25.
Los polinomios de Lagrange son:
x 1 2 3 4 5 6 7
f (x)
f (x)
f (x)
Trazadores lineales
Para los trazadores lineales se definen rectas entre cada
intervalo para calcular los valores intermedios.
f (x) = f (x0) + m0(x – x0) x0 <= x <= x1
f (x) = f (x1) + m1(x – x0) x1 <= x <= x2
La solución es:
a1 = 0 b1 = –1 c1 = 5.5
a2 = 0.64 b2 = –6.67 c2 = 18.46
a3 = –1.6 b3 = –24.6 c3 = 91.3
f(5) = 0.64(5)2 – 6.67(5) +18.46 = 1.11
yi = ppval (pp, xi) - Evalúa polinomio a trozos pp en
los puntos xi. Si pp.d es un escalar mayor que 1, o un
arreglo, entonces el valor regresado yi será un arreglo
que es d1, d1, ..., dk, length (xi).
Donde
Los coeficientes de los polinomios se pueden calcular con:
c1 = yi – xi D
c2 = D – xi E
c3 = E – xi A
c4 = A
Para obtener: fi (x) = c1 + c2 x + c3 x2 + c4 x3
Donde
Guión en MatLab
%encuentra los trazadores cúbicos para un conjunto
de puntos x,y
% x - vector con los n valores de x
% y - vector con los n valores de y
% w - matriz de n-1 por 4 con los coeficientes de
los polinomios cúbicos
function w = spline3(x,y)
[dummy n] = size(x);
for i = 1:n-1
h(i) = x(i+1)-x(i);
b(i) = 6*(y(i+1)-y(i))/h(i);
end
u(2) = 2*(h(1)+h(2));
v(2) = b(2)-b(1);
for i = 3:n-1
u(i) = 2*(h(i)+h(i-1))-h(i-1)^2/u(i-1);
v(i) = b(i)-b(i-1)-h(i-1)*v(i-1)/u(i-1);
end
z(n) = 0;
for i = n-1:-1:2;
z(i) = (v(i)-h(i)*z(i+1))/u(i);
end
z(1) = 0;
for i = 1:n-1
A = (z(i+1)-z(i))/6/h(i);
B = z(i)/2;
C = -h(i)*z(i+1)/6-h(i)*z(i)/3+(y(i+1)-y(i))/h(i);
D = C-x(i)*B+A*x(i)^2;
E = B-2*x(i)*A;
w(i,4) = y(i)-x(i)*D;
w(i,3) = D-x(i)*E;
w(i,2) = E-x(i)*A;
w(i,1) = A;
end
end
Actividades para el hogar
Realizar las actividades en
cuaderno las que corresponde,
en hoja de calculo, en Scilab y
en calculadora, el ultimo caso.
Actividad I. 1 Actividad I. 2
Actividad I. 4
Actividad I. 3
Actividad I.5. Ejercicio a mano
de la interpolación de Newton
Actividad I.6 Interpolación lineal
de Newton en hoja de calculo
Actividad I.7 Interpolación polinomial de Newton
en Matlab: Tutorial paso a paso + código
for i = 1:n
termino = y(i);
Su punto de
for j = 1:n
if i ~= j
termino = termino .* (valorInterpolar - x(j)) / (x(i) - x(j));
inicio en Scilab,
end
end
para que
resultado = resultado + termino;
end
end modifiquen a
// Datos de entrada
valoresY = [1, 1.6, 1.7, 2.0];
valoresX = [0, 0.2, 0.3, 0.4];
gusto.
// Valor a interpolar
valorInterpolar = 0.1; Ver video de
// Calcula la interpolación de Lagrange
resultado = interpolacionLagrange(valoresX, valoresY, valorInterpolar);
for j = 2:n
for i = j:n
F(i, j) = (F(i, j-1) - F(i-1, j-1)) / (x(i) - x(i-j+1));
end
end
for j = 2:n
producto = 1;
for i = 1:j-1
Su punto de inicio
end
producto = producto .* (valorInterpolar - x(i)); // Corregir aquí
// Datos de entrada
modifiquen a
x = [1, 5, 20, 40];
y = [56.5, 113, 181, 214.5]; gusto.
// Valor a interpolar
valorInterpolar = 2;