Sie sind auf Seite 1von 10

Taller: Métodos numéricos con MATLAB. SESIÓN # 5.

SESIÓN # 5: Métodos de Interpolación.

Los métodos de interpolación se utilizan cuando se tiene datos definidos por puntos y se quiere
estimar otros valores que correspondan a la misma función. Los métodos de interpolación
realizan la estimación de puntos intermedios a los datos que se tienen, mediante modelos que
coinciden de manera exacta con los puntos conocidos

5.1 Método de interpolación de Newton por diferencias divididas finitas.

Se utiliza para aproximar valores y = fn(x) intermedios a un conjunto de n + 1 datos conocidos:

x x0 x1 x2 … xn-2 xn-1 xn
y f(x0) f(x1) f(x2) … f(xn-2) f(xn-1) f(xn)

Para un conjunto de n + 1 datos se puede utilizar hasta un polinomio de grado n, con la


característica de que corresponde de manera exacta a los datos con los que se cuenta, tal y como
se muestra en la siguiente figura.

yn
yn-1

yn-2

y2

y1 y = fn(x)
y0

x
x0 x1 x2 xn-2 xn-1 xn

Enrique René Bastidas Puga. Página 1 de 10


Taller: Métodos numéricos con MATLAB. SESIÓN # 5.
El polinomio de interpolación de Newton por diferencias divididas finitas de grado n está dado
por:

= + − , + − − , , + ⋯
+ − − ⋯ − , , ⋯ , , Ec. 5.1.1

Donde los términos , , ⋯ , , se conocen como las diferencias divididas finitas de


n-ésimo orden, y se calculan de manera recursiva con el siguiente patrón:

Diferencia finita dividida de primer orden:


, = Ec. 5.1.2

Diferencia finita dividida de segundo orden:

, − ,
, , =

Diferencia finita dividida de (n-1) orden:

, ,⋯, − , ,⋯,
, ,⋯, , =

Diferencia finita dividida de n-ésimo orden:

, ,⋯, − , ,⋯,
, ,⋯, , = Ec. 5.1.3

Enrique René Bastidas Puga. Página 2 de 10


Taller: Métodos numéricos con MATLAB. SESIÓN # 5.
La siguiente tabla muestra como las diferencias finitas divididas de un orden n se calculan a
partir de las diferencias finitas divididas de orden (n-1):

xi f(xi) 1er orden 2do orden 3er orden

x0 f(x0)
,
x1 f(x1) , ,
, , , ,
x2 f(x2) , ,
,
x3 f(x3)

xn-2 f(xn-2)
,
xn-1 f(xn-1) , ,
,
xn f(xn)

Algoritmo del método de interpolación de Newton por diferencias finitas divididas:

<1> Se reciben los parámetros para la interpolación:


a. Valor que se quiere interpolar: x.
b. Grado deseado del polinomio: n.
c. Datos conocidos para x y y: X = [x0, x1, … , xn], Y = [y0, y1, … , yn].
<2> Se inicializa la aproximación de la interpolación:
y = f(x0).
<3> Se inicializa el acumulador de los productos para los términos (x – xk):
factor = 1.
<4> Se inicializa el contador de las iteraciones:
k = 1.
<5> Se actualiza el acumulador de los productos:
factor = factor * (x – xk-1)
<6> Se calcula la diferencia finita dividida correspondiente:
, ,⋯, ,
<7> Se actualiza la aproximación de la interpolación:
y = y + factor * , ,⋯, ,
<8> Se incrementa el contador de las iteraciones:
k = k + 1.
a. Si k = n + 1 se termina el cálculo porque se alcanzó el grado requerido del
polinomio. El resultado de la aproximación es y.
b. Si k < n + 1 se regresa al paso <5> porque no se ha alcanzado el grado requerido
del polinomio.

Enrique René Bastidas Puga. Página 3 de 10


Taller: Métodos numéricos con MATLAB. SESIÓN # 5.
Ejemplo 5.1.1: Escribe una función de MATLAB que calcule las diferencias finitas divididas de
un conjunto valores para x y y.

La función debe entregar el resultado en la variable DD.


La función debe recibir como parámetros de entrada:
La variable X que contiene los datos conocidos de x.
La variable Y que contiene los datos conocidos de y.
La variable n que indica el índice del punto de referencia de xn para el cálculo
de la diferencia finita dividida.
La variable orden para la diferencia finita dividida.

function DD = difDivFin( X, Y, n, orden )


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Función recursiva que calcula las diferencias divididas de los elementos
% en X y Y:
% f[x_n, x_n-1, ..., x_0] = ( f[x_n, x_n-1, ..., x_1] -
% f[x_n-1, x_n-2, ..., x_0] ) / (x_n - x_0)
% USO:
% DD = difDivFin(X, Y, n, orden)
% donde:
% DD : Parámetro de salida que contiene la diferencia finita
% dividida que se utiliza en el método de interpolación de
% Newton.
% X : vector con los datos de la variable "x".
% X = [x_0, x_1, x_2, ..., x_n]
% Y : vector con los datos de la variable "y".
% Y = [y_0, y_1, y_2, ..., y_n]
% n : índice requerido para la diferencia finita dividida.
% orden : orden de la diferencia finita dividida
%
% Escrito por: René Bastidas.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%Si el orden es mayor que uno, entonces la diferencia finita dividida se


%obtiene a partir de dos diferencias divididas finitas cuyo nuevo orden es
%menor en una unidad al original.
if orden > 1
Ec. 5.1.3 DD = (difDivFin(X,Y,n,orden-1) - difDivFin(X,Y,n-1,orden-1)) / (X(n+1) - X(n+1 - orden));
else %Si el orden es 1, se calcula la diferencia dividida finita directamente:
Ec. 5.1.2 DD = ( Y(n+1) - Y(n) ) / ( X(n+1) - X(n) );
end

end

Enrique René Bastidas Puga. Página 4 de 10


Taller: Métodos numéricos con MATLAB. SESIÓN # 5.
Ejemplo 5.1.2: A continuación se presenta una tabla de valores para x y y con las respectivas
diferencias finitas divididas. Utiliza la función difDivFin( ) escrita en el Ejemplo 5.1.1
para que compruebes los valores.

n x y 1er orden 2do orden 3er orden 4to orden 5to orden
0 1 0.50000

1 2 0.33333 f[2, 1]

-0.1667
2 4 0.20000 f[4, 2] f[4, 2, 1]

-0.0667 0.0333
3 5 0.16667 f[5, 4] f[5, 4, 2] f[5, 4, 2, 1]

-0.0333 0.0111 -0.0056


4 6 0.14286 f[6, 5] f[6, 5, 4] f[6, 5, 4, 2] f[6, 5, 4, 2, 1]

-0.0238 0.0048 -0.0016 7.93x10-4


5 8 0.11111 f[8, 6] f[8, 6, 5] f[8, 6, 5, 4] f[8, 6, 5, 4, 2] f[8,6,5,4,2,1]

-0.0159 0.0026 -5.29x10-4 1.76x10-4 -8.82x10-5

>> X=[1, 2, 4, 5, 6, 8]; %Datos de “x”.


>> Y = [0.5, 0.33333, 0.2, 0.16667, 0.14286, 0.11111]; %Datos de “y”.
>> DD = difDivFin(X, Y, 1, 1) %Se calcula f[2,1].

DD =

-0.1667

>> DD = difDivFin(X, Y, 2, 1) %Se calcula f[4,2].

DD =

-0.0667

>> DD = difDivFin(X, Y, 4, 3) %Se calcula f[6,5,4,2].

DD =

-0.0016

>> DD = difDivFin(X, Y, 5, 5) %Se calcula f[8,6,5,4,2,1].

DD =

-8.8151e-05

Enrique René Bastidas Puga. Página 5 de 10


Taller: Métodos numéricos con MATLAB. SESIÓN # 5.
Ejemplo 5.1.3: Escribe una función de MATLAB que aplique el método de interpolación de
Newton por diferencias finitas divididas, para calcular el valor de y = f(x) a partir de un conjunto
valores conocidos.

La función debe entregar el resultado en la variable y.


La función debe recibir como parámetros de entrada:
La variable x que contiene el valor para el cual se quiere interpolar la y.
La variable n que indica el grado del polinomio a utilizar.
La variable X que contiene los datos conocidos de x.
La variable Y que contiene los datos conocidos de y.
Utiliza la función difDivFin( ) escrita en el Ejemplo 5.1.2 para que calcules las
diferencias finitas divididas.
function y = interpNewton( x, n, X, Y )
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Función que aplica el método de interpolación de Newton con diferencias
% divididas finitas.
% USO:
% y = interpNewton( x, n, X, Y )
% donde:
% y : aproximación de "y" calculada por el método de interpolación de
% Newton con diferencias divididas finitas.
% x : valor de "x" para el cual se desea calcular "y".
% n : grado del polinomio de interpolación
% X : vector con los datos conocidos de "x".
% Y : vector con los datos conocidos de "y".
%
% Escrito por: René Bastidas.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Paso <2>
y = Y(1); %Primer término de la aproximación.
Paso <3> factor = 1; %Se inicializa una parte del factor de los términos a sumar.

for k = 1 : n
Paso <5> factor = factor * (x - X(k));
y = y + factor * difDivFin(X, Y, k, k);%Los términos parciales a sumar
Pasos
%se multiplican por las
<6> y <7>
%diferencias finitas
%correspondientes y se
%actualiza la aproximación.
end

end

Enrique René Bastidas Puga. Página 6 de 10


Taller: Métodos numéricos con MATLAB. SESIÓN # 5.
Ejercicio 5.1.1: A partir de los datos mostrados en las tablas 1 y 2 resuelve lo solicitado en los
siguientes incisos.

x y x y
1 0.50000 1 0.00000
2 0.33333 4 1.38629
4 0.20000 6 1.79176
5 0.16667 5 1.60944
6 0.14286 3 1.09861
8 0.11111 1.5 0.40546
10 0.09091 2.5 0.91629
11 0.08333 3.5 1.25276
Tabla 1. Tabla 2.

a) Para los valores de la tabla 1, calcula el valor y = f(3) por medio de interpolación de Newton
con un polinomio de grado n = 5.
b) Para los valores de la tabla 1, calcula el valor y = f(3) por medio de interpolación de Newton
con un polinomio de grado n = 6.
c) Para los valores de la tabla 1, calcula el valor y = f(7) por medio de interpolación de Newton
con un polinomio de grado n = 7.
d) Para los valores de la tabla 1, calcula el valor y = f(9) por medio de interpolación de Newton
con un polinomio de grado n = 7.
e) Para los valores de la tabla 2, calcula el valor y = f(2) por medio de interpolación de Newton
con un polinomio de grado n = 7.
f) Para los valores de la tabla 2, calcula el valor y = f(4.5) por medio de interpolación de
Newton con un polinomio de grado n = 7.

Enrique René Bastidas Puga. Página 7 de 10


Taller: Métodos numéricos con MATLAB. SESIÓN # 5.
5.2 Método de interpolación de Lagrange de 1er orden.

Se utiliza para calcular el valor intermedio y = f(x) entre un par de puntos conocidos ( x1, f(x1) )
y ( x2, f(x2) ) trazando una línea recta entre ellos.

Por triángulos semejantes se tiene:

− −
=
− −

Y se despeja el valor deseado f(x):


= − + Ec. 5.2.1

La Ec. 5.2.1 es la fórmula de interpolación de Lagrange de 1er orden.

Ejercicio 5.2.1: Escribe una función de MATLAB que aplique el método de interpolación de
Lagrange de 1er orden, para calcular el valor de y = f(x) a partir de un conjunto valores
conocidos.

La función debe entregar el resultado en la variable y.


La función debe recibir como parámetros de entrada:
La variable x que contiene el valor para el cual se quiere interpolar la y.
La variable X que contiene los datos conocidos de x.
La variable Y que contiene los datos conocidos de y.
Utiliza el siguiente encabezado para la función:

Enrique René Bastidas Puga. Página 8 de 10


Taller: Métodos numéricos con MATLAB. SESIÓN # 5.
function y = interpLagrange( x, X, Y )
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Función que aplica el método de interpolación de Lagrange de 1er orden.
% USO:
% y = interpLagrange( x, X, Y )
% donde:
% y : aproximación de "y" calculada por el método de interpolación
% de Lagrange de 1er orden.
% x : valor de "x" para el cual se desea calcular "y".
% X : vector con los datos conocidos de "x".
% Y : vector con los datos conocidos de "y".
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Ejercicio 5.2.2: A partir de los datos mostrados en las tablas 3 y 4 resuelve lo solicitado en los
siguientes incisos.

x y x y
4 1 1 2
6 2 2 1
Tabla 3. Tabla 4.

a) Para los valores de la tabla 3, calcula el valor y = f(5) por medio de interpolación de
Lagrange de 1er orden.
b) Para los valores de la tabla 4, calcula el valor y = f(1.2) por medio de interpolación de
Lagrange de 1er orden

5.3 Método de interpolación de polinomios.

Los métodos de interpolación de Newton o Lagrange se utilizan para encontrar valores


intermedios entre datos conocidos, pero no obtienen un polinomio de la forma convencional:

= + + ⋯ + + Ec. 5.3.1

El método de interpolación de polinomios se utiliza para encontrar un polinomio de grado n


(Ec. 5.3.1) a partir de (n+1) pares de datos conocidos (x, y).

x x0 x1 x2 … xn-2 xn-1 xn
y y0 y1 y2 … yn-2 yn-1 yn

Los datos conocidos se pueden sustituir en la (Ec. 5.3.1) para formar un sistema de n x n
ecuaciones lineales, donde las incógnitas son los coeficientes:

Enrique René Bastidas Puga. Página 9 de 10


Taller: Métodos numéricos con MATLAB. SESIÓN # 5.

+ + ⋯+ + =

+ + ⋯+ + =

+ +⋯+ + =

Una vez que se plantea el sistema de ecuaciones lineales, este se resuelve con cualquiera de los
métodos vistos para encontrar los valores de los coeficientes. Finalmente, estos coeficientes se
sustituyen en la (Ec. 5.3.1) para establecer el polinomio y utilizarlo para calcular cualquier valor
f(x).

Ejercicio 5.3.1: A partir de los datos mostrados en las tabla 5 utiliza el método de interpolación
de polinomios para que determines el polinomio y encuentres el valor correspondiente de f(2.7).

x y
1 -4
2 -3
3 0
Tabla 5.

Referencias.

[1] Documentación de ayuda de MATLAB.


[2] Chapra, Steven C.; Canale, Raymond P. “Métodos numéricos para ingenieros”. 2011. 6ta
edición. McGraw-Hill.

Enrique René Bastidas Puga. Página 10 de 10

Das könnte Ihnen auch gefallen