unidad 2. interpolación clave 05143527/06143527
TRANSCRIPT
Matemáticas
Análisis Numérico II
5º Semestre
Unidad 2. Interpolación
Clave
05143527/06143527
Universidad Abierta y a Distancia de México
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 2
Índice
Presentación de la unidad 3
Competencia específica 3
Propósitos de la unidad 3
2.1. Diferencias interpolador polinomial 4
2.2.1. Interpolación de Lagrange 8
2.2.2 Interpolación por diferencias divididas de Newton 13
2.2.3. Interpolación polinómica de Hermite 18
Cierre de la unidad 24
Referencias Bibliográficas 24
Figura 1. Números ........................................................................................................................................ 3 Figura 3. Ejemplo de interpolación, los datos observados son las parejas ordenadas (𝒕𝒊, 𝒚𝒊) y la línea negra continua es la función interpolada, esos datos no fueron observados sino “construidos” a partir de la forma del interpolante. ............................................................................................................................ 6 Figura 4. Error relativo del polinomio de Lagrange para cos(x) en 𝟎. 𝟎, 𝟏. 𝟐 ............................................ 12 Figura 5. (a). Comparaciòn de cos(x) vs. el polinomio de Newton que lo interpola. (b) Error relativo del cos(x) contra su interpolante en el intervalo [𝟎. 𝟎, 𝟒. 𝟓]. .......................................................................... 17 Figura 6. (a). Comparación entre 𝒄𝒐𝒔(𝒙)y su interpolante de Hermite 𝑯(𝒙). (b). Error absoluto entre ambos valores. ........................................................................................................................................... 23
Tabla 1. Diferencias divididas .................................................................................................................... 15
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 3
Presentación de la unidad
Una de las aplicaciones más conocidas del análisis numérico es la de establecer valores
desconocidos para funciones dadas o, si es necesario, construirlas.
Sus aplicaciones son diversas como la de sustituir una función difícil por una sencilla o proveer
de datos numéricos específicos para su graficación. A este proceso de construcción de puntos
desconocidos se le llama interpolación (o extrapolación cuando los valores a determinar salen
de los rangos preestablecidos).
Competencia específica
Utilizar diferentes métodos de interpolación para identificar el polinomio interpolador con la
utilización de nodos.
Propósitos de la unidad
Figura 1. Números
• Conocerás algunos métodos para poder
interpolar valores desconocidos de alguna
función dada.
• Identificarás las diferencias cualitativas entre
cada método, así como el momento para
utilizar cada uno de ellos.
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 4
2.1. Diferencias interpolador polinomial
Una de las tareas más comunes en el análisis numérico es el de la Interpolación, donde se
determina el valor 𝑓(𝑥) de una función para algún𝑥 que no es explícito. El concepto es
parecido al ajuste de curvas pero no es el mismo.
Con datos derivados de experimentos reales o mediciones lo que vamos a obtener es una serie
de parejas ordenadas del tipo:
(𝑡! , 𝑦!)𝑖 = 1,… , 𝑛
Donde
𝑡" < 𝑡# < 𝑡$ < ⋯ < 𝑡%
Hasta el momento este proceso es muy similar al ajuste de curvas, pero la diferencia radica en
que en esta técnica numérica buscamos encontrar una curva 𝑓(𝑡!&) de tal forma que esta
función minimiza la distancia a cada uno de los puntos observados donde los datos están
sujetos a ruido y procesos estocásticos subyacentes desconocidos para nosotros, mientras que
en interpolación queremos encontrar lo siguiente:
𝑓(𝑡!) = 𝑦! 𝑖 = 1,… , 𝑛
Es decir, queremos construir una función 𝑓 que pasa por cada uno de los puntos 𝑦! observados.
A esta función la denotaremos como interpolante. Es fácil notar que el ajuste de curvas es un
método más elaborado para describir la función que pasa por 𝑛 puntos observados, pero los
procedimientos de interpolación sirven para fines distintos que los de ajuste de curvas, por
ejemplo:
a) Graficar una función en la pantalla
b) Evaluación sencilla de una función matemática
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 5
c) Aseverar el valor a partir de un conjunto de datos observados.
Tal vez a) y b) no sean tan intuitivos en este momento, pero son actividades comunes en el
cómputo científico. Por otro lado, el punto c) es una de las funciones más claras para lo que
queremos interpolar ¿cuál es el valor 𝑓(𝑐) que toma la función entre 𝑎 y 𝑏 donde 𝑎 < 𝑐 < 𝑏?
Un método de interpolación sencillo es calcular la línea recta que une los puntos
(𝑡! , 𝑦!), (𝑡!'", 𝑦!'") se pueden unir mediante una línea recta a esta técnica de interpolación se
le conoce como interpolación por pedazos pero el método específico recién descrito es
claramente muy limitado para una amplia gama de funciones.
En esta unidad estudiaremos tres métodos básicos de interpolación polinómica, entre ellos el
interpolador de Lagrange, el interpolador por diferencias divididas de Newton y el
interpolador de Hermite.
Debido a que no conocemos la función que pasa por los puntos exhibidos tendremos que
construir una función, usualmente considerada como un polinomio, eso es lo que le da nombre
a los métodos de Lagrange y Hermite.
En el caso del método de Newton la construcción es dividida y la veremos en su momento.
Como lo que vamos a construir son polinomios propios de un espacio de polinomios,
tendremos que determinar para cada caso la base sobre la cual vamos a construirlos.
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 6
Figura 2. Ejemplo de interpolación, los datos observados son las parejas ordenadas (𝒕𝒊, 𝒚𝒊) y la línea negra continua es la
función interpolada, esos datos no fueron observados sino “construidos” a partir de la forma del interpolante.
Base de Funciones
Para interpolar un conjunto de puntos con la función 𝑓 usamos funciones que denominaremos
base de funciones{𝜙", … , 𝜙%} . Nuestro interpolante será entonces una combinación lineal de
esta base de funciones de la forma:
𝑓(𝑡!) = 6𝑥(𝜙((𝑡!)%
()"
Es importante tomar en cuenta que la expresión anterior está especificando un sistema de
ecuaciones lineales de tamaño 𝑖 × 𝑗, del cuál requerimos encontrar los parámetros 𝑥_𝑗.
Esto se puede lograr cuando 𝑓(𝑥!) pasa por los puntos observados (𝑥! , 𝑦!) que es una
condición necesaria por nuestro problema de interpolación.
Obtenemos entonces el sistema de ecuaciones
𝑓(𝑥!) = 6𝑥(𝜙((𝑡!) = 𝑦! 𝑖 = 1,… , 𝑛%
()"
, 𝑖 = 𝑗
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 7
En este punto lograremos que nuestro sistema cumpla con que𝑖 = 𝑗es decir, vamos a
construir sistemas de ecuaciones cuadrados. De la expresión anterior conocemos a todas las 𝑦!
ya que son los puntos observados y las entradas de la matriz 𝑀 = 𝜙((𝑡!) serán construidas con
los criterios considerados en los métodos que describiremos.
Entonces, nos resta por despejar las entradas del vector 𝑥 por lo que podemos reexpresar la
ecuación anterior de la forma:
𝑀𝑥 = 𝑦
Es decir, tenemos que resolver el sistema de ecuaciones para 𝑥 dado que lo demás lo
conocemos o lo podemos construir.
Durante el desarrollo de los siguientes métodos probablemente usemos indistintamente la
notación entre 𝑥! y 𝑡! para denotar las variables independientes.
En el desarrollo revisado preferimos usar 𝑡! para terminar con la expresión canónica de un
sistema de ecuaciones donde lo que queremos encontrar es el vector 𝑥 pero en el resto de los
métodos quizás sea necesario expresar los puntos observados como 𝑥! con el único fin de
apegarnos a una explicación estándar.
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 8
2.2.1. Interpolación de Lagrange
Es uno de los métodos más sencillos de construir, el interpolante es el de Lagrange. Lo que
usualmente requerimos de los interpolantes, particularmente el de Lagrange, es construir un
polinomio 𝑃*(𝑥) de grado ≤ 𝑁 + 1 que interpole a 𝑓(𝑥), es decir:
𝑃*(𝑥!) = 𝑓(𝑥!)𝑖 = 1,… ,𝑁 + 1
Considera la línea recta que pasa entre los nodos𝑥 e 𝑦.
Esta se expresa como:
𝑃(𝑥) = 𝑦 = 𝑦+ + (𝑦" −𝑦+)𝑥 − 𝑥+𝑥" − 𝑥+
(1)
Esta es la línea que une a 𝑥 con 𝑦 de pendiente ,-,!,"-,!
y que cumple con que 𝑃(𝑥+) = 𝑦+ y
𝑃(𝑥") = 𝑦". Pero esta misma línea, con la misma pendiente se puede reexpresar como:
𝑃"(𝑥) = 𝑦 = 𝑦+𝑥 − 𝑥"𝑥+ − 𝑥"
+ 𝑦"𝑥 − 𝑥+𝑥" − 𝑥+
(2)
La cual es un polinomio de grado menor o igual a uno que pasa por los puntos 𝑥" y 𝑥+.
Esto se observa si evalúas𝑃"(𝑥") y 𝑃"(𝑥+). Los cocientes en el término derecho de la expresión
(2) son los polinomios en la forma de LaGrange
𝑙"(𝑥) =𝑥 − 𝑥"𝑥+ − 𝑥"
(3)
Entonces la suma en (2) puede quedar como
𝑃"(𝑥) =6𝑦(𝑙((𝑥)"
()+
(4)
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 9
Se trata de una combinación lineal entre los polinomios en la forma de LaGrange y los
coeficientes 𝑦! = 𝑓(𝑥!). La forma general de los polinomios de Lagrange expresados en (3) es
de la siguiente forma:
𝑙((𝑥) =(𝑥 − 𝑥+)… (𝑥 − 𝑥.-")(𝑥 − 𝑥.'")… (𝑥 − 𝑥*)
A𝑥( − 𝑥+B… A𝑥( − 𝑥.-"BA𝑥( − 𝑥.'"B… A𝑥( − 𝑥*B
De forma abreviada queda como:
𝑙((𝑥) = C(𝑥 − 𝑥!)A𝑥( −𝑥!B
*
!)+,(0!
(5)
Es claro que este polinomio conformado por la multiplicación de 𝑁 monomios es un polinomio
de grado menor o igual a 𝑁 ya que no estamos considerando el punto en el que 𝑖 = 𝑗.
Esto lo pedimos para que el coeficiente de Lagrange no se indetermine y por construcción este
coeficiente hace que 𝑥! sea raíz del polinomio recién construido.
Para construir el interpolador de Lagrange consideren 𝑁 + 1 nodos distintos {𝑥+, … , 𝑥*} con
los que haremos una combinación lineal entre los puntos observados 𝑦! y los polinomios 𝑙((𝑥)
𝑃*(𝑥) =6𝑦(𝑙((𝑥)*
()+
(6)
Esta forma lagrangiana es el producto de 𝑛 monomios por lo que 𝑃*(𝑥) es un polinomio de
grado 𝑁.
Otra característica que podemos observar en 𝑙((𝑥) es que:
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 10
𝑙.(𝑥!) = D1𝑠𝑖𝑖 = 𝑘0𝑠𝑖𝑖 ≠ 𝑘
Otra característica que cabe resaltar del interpolante de Lagrange es la pesada carga de
cómputo para calcularlo para 𝑁 ≫ 4, es decir, si queremos un polinomio de grado 6 puede ser
muy complicado calcularlo sin equipos de cómputo. También es necesario recalcularlo cuando
queremos más puntos.
Por otro lado, calcularlo es muy sencillo como podemos ver a continuación:
Ejemplo
Tenemos una cierta función K para la cual conocemos los siguientes valores
𝐾(1) = 1.5709𝐾(2) = 1.5727𝐾(3) = 1.5751
¿Cuál es el valor de 𝐾(3.5)? Para esto podemos usar un polinomio de segundo grado
𝑙+(3.5) = (3.5 − 4)(3.5 − 6)(1 − 4)(1 − 6)
= 1.2515
= 0.08333
𝑙"(3.5) = (3.5 − 1)(3.5 − 6)(4 − 1)(4 − 6)
= −6.25−6
= 1.04167
𝑙#(3.5) = (3.5 − 1)(3.5 − 4)(6 − 1)(6 − 4) =
−1.2510 = −0.12500
Entonces
𝐾(3.5) ≈ (1.5709)(0.08333) +(1.5727)(1.04167) +(1.5751)(−0.125000) = 1.57225
Aunque es muy sencilla la construcción de este interpolante, su evaluación requiere 2(n + 1)
multiplicaciones/divisiones y (2𝑛 + 1) operaciones de suma. Esto hace que se compare
pobremente contra la multiplicación anidada que veremos en secciones posteriores.
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 11
Ejemplo
Si 𝑦 = cos(𝑥) en [0.0,1.2] vamos a construir el polinomio de Lagrange de grado cúbico para los
nodos {𝑥+ = 0.0, 𝑥" = 0.4, 𝑥# = 0.8, 𝑥$ = 1.2}
Entonces el conjunto de 𝑦! = 𝑓(𝑥!) es
𝑦+ = 1.0
𝑦" = 0.921061
𝑦# = 0.696707
𝑦$ = 0.362358
Para conformar el polinomio 𝑃$(𝑥) como en el ejemplo anterior tenemos que usar (6)
𝑃$(𝑥) = 1.0(𝑥 − 0.4)(𝑥 − 0.8)(𝑥 − 1.2)
(0.0 − 0.4)(0.0 − 0.8)(0.0 − 1.2) + 0.921061(𝑥 − 0.0)(𝑥 − 0.8)(𝑥 − 1.2)
(0.4 − 0.0)(0.4 − 0.8)(0.4 − 1.2)
+ 0.696707(𝑥 − 0.0)(𝑥 − 0.4)(𝑥 − 1.2)
(0.8 − 0.0)(0.8 − 0.8)(0.8 − 1.2)
+ 0.362358(𝑥 − 0.0)(𝑥 − 0.4)(𝑥 − 0.8)
(1.2 − 0.0)(1.2 − 0.4)(1.2 − 0.8)
𝑃$(𝑥) = −2.60417(𝑥$ − 2.4𝑥# + 1.76𝑥 − 0.384) + 7.19579(𝑥$ − 2.0𝑥# + 0.96𝑥)
− 5.44302(𝑥$ − 1.2𝑥# + 0.32𝑥) + 0.94364(𝑥$ − 1.2𝑥 + 0.32)
El polinomio es entonces:
𝑃$(𝑥) = 0.092240𝑥$ − 1.6099𝑥# − 0.54952𝑥 + 1.2082
Pero este desarrollo es únicamente para mostrarlo en su forma canónica, la manera estable de
programarlo es la siguiente: las constantes se guardan por separado y el polinomio se calcula
como una suma de cuatro sumandos, la multiplicación de cada monomio se hace por separado
para no acumular errores de cómputo.
octave:27> function y=p3x(x)
> a=-2.60417;
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 12
> b=7.19579;
> c=-5.44302;
> d=0.94364;
> y=a*((x-0.4).*(x-0.8).*(x-1.2));
> y=y.+b*((x).*(x-0.8).*(x-1.2));
> y=y.+c*(x.*(x-0.4).*(x-1.2));
> y=y.+d*(x.*(x-0.4).*(x-0.8));
>endfunction
octave:28>
octave:28> x=linspace(0,1.2,100);
octave:29> y=p3x(x)
y = ….
octave:30>plot(x,y);
octave:31>
Puedes comprobar los valores del polinomio formado así como de la función original usando el
error relativo, la gráfica que se presenta a continuación, muestra que las raíces caen en
0,0.4,0.8 y 1.2.
Figura 3. Error relativo del polinomio de Lagrange para cos(x) en [𝟎. 𝟎, 𝟏. 𝟐]
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 13
2.2.2 Interpolación por diferencias divididas de Newton
El método de interpolación de Lagrange tiene serios problemas en cuanto a la cantidad de
puntos necesarios para hacer una interpolación efectiva pues el tiempo de cómputo que se
requiere para evaluar el interpolador depende de la cantidad de puntos, pues mientras más
puntos se tengan màs costoso es..
Una alternativa es usar la interpolación polinómica de Newton. Supongamos que queremos
interpolar 𝑓(𝑥) en algún intervalo 𝐼 = [𝑎, 𝑏] dado con algún polinomio 𝑃(𝑥) de grado ≤ 𝑘.
En el caso del interpolante de Newton el polinomio escogido, considerando 𝑘 nodos, se
propone de la siguiente forma:
𝑃.(𝑥) = 𝑎+ +𝑎"(𝑥 − 𝑥+) +𝑎#(𝑥 − 𝑥1)(𝑥 − 𝑥#) +…+𝑎.(𝑥 − 𝑥+)… (𝑥
− 𝑥.-")
(7)
Concluimos que la base escogida es la siguiente:
{1, (𝑥 − 𝑥+), (𝑥 − 𝑥+)(𝑥 − 𝑥"), …, (𝑥 − 𝑥+)… (𝑥 − 𝑥.-")}
Esta forma recursiva de escoger la base de funciones tiene la característica de que nuestro
interpolante de Newton lo desarrollamos a partir del término anterior.
Esto se expresa:
𝑏((𝑥) = C(𝑥 − 𝑥!)(-"
!)+
(8)
En el caso de que el producto esté vacío lo consideraremos igual a 1.
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 14
Una vez escogida la base lo que resta es encontrar los coeficientes del polinomio. Para tal
efecto vamos a aprovechar la forma en que 𝑃.(𝑥) se construye para encontrar los coeficientes
𝑎!(
𝑎!( =𝑏((𝑥!)
Estas son las entradas de la matriz 𝐴 = 𝑎!( misma que es triangular inferior ya que cuando 𝑗 > 𝑖
entonces 𝑏((𝑥!) = 0.
Para calcular los coeficientes requeridos para el interpolante de Newton usaremos el método
de las diferencias divididas denotadas por 𝑓[]. Recordando, las diferencias se denotan de
manera recursiva por:
𝑓[𝑥1, 𝑥2, … , 𝑥%] =𝑓[𝑥#, … , 𝑥%]– 𝑓[𝑥", … , 𝑥%-"]
𝑥%–𝑥"
En el caso de nuestro interpolante de Newton se aplica recursivamente de la siguiente manera:
𝑓[𝑥.] = 𝑦. 𝑘 = 1,… , 𝑛
Donde {(𝑥! , 𝑦!)} es el conjunto de puntos observados por los que tiene que pasar nuestro
interpolante.
De forma compacta el interpolante de Newton usando diferencias divididas puede ser
expresado como:
𝑃%(𝑥) = 6𝑓[𝑥", … , 𝑥!]C(𝑥 − 𝑥()!-"
()"
%
!)"
(9)
Ejemplo
Supongamos que tenemos los puntos
{(−2,−27), (0, −1), (1,0)}
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 15
Usando el método de las diferencias divididas tenemos que:
𝑓[𝑥"] = 𝑓[−2] = −27
𝑓[𝑥", 𝑥#] = 𝑓[−2,0] = 𝑓[𝑥#] − 𝑓[𝑥"]
𝑥#–𝑥"=−1 + 27
3= 13
𝑓[𝑥", 𝑥#, 𝑥$] = 𝑓[𝑥#, 𝑥$]– 𝑓[𝑥", 𝑥#]
𝑥$–𝑥"=1 − 131 + 3
= −4
Por lo que nuestro polinomio queda:
𝑃#(𝑥) = 𝑓[𝑥"]𝑏"(𝑥) + 𝑓[𝑥", 𝑥#]𝑏#(𝑥) + 𝑓[𝑥", 𝑥#, 𝑥$]𝑏$(𝑥)= 𝑓[𝑥"] + 𝑓[𝑥", 𝑥#](𝑥 − 𝑥") + 𝑓[𝑥", 𝑥#, 𝑥$](𝑥–𝑥")(𝑥–𝑥#)= −27 + 13(𝑥 + 2) − 4(𝑥 + 2)𝑥
Ejemplo
Construir el polinomio de Newton por diferencias divididas para 𝑓(𝑥) = cos(𝑥) en los nodos
{0,1,2,3,4}.
La tabla de diferencias divididas se presenta a continuación
𝒙𝒊 𝒇[𝒙𝒊] 𝒇[, ] 𝒇[, , ] 𝒇[, , , ] 𝒇[, , , , ]
0.0000 1.0000
1.0000 0.5403 -0.4597
2.0000 -0.4161 -0.9564 -0.2484
3.0000 -0.9900 -0.5738 0.1913 0.1466
4.0000 -0.6536 0.3363 0.4551 0.0879 -0.0147
Tabla 1. Diferencias divididas
Entonces siguiendo lo expresado en (9) tenemos
𝑃+(𝑥) = 1
𝑃"(𝑥) = 1 − 4.597(𝑥 − 0.0)
𝑃#(𝑥) = 1 − 4.597(𝑥 − 0.0) − 0.2484(𝑥 − 0.0)(𝑥 − 1.0)
𝑃$(𝑥) = 1 − 4.597(𝑥 − 0.0) − 0.2484(𝑥 − 0.0)(𝑥 − 1.0)
+ 0.1466(𝑥 − 0.0)(𝑥 − 1.0)(𝑥 − 2.0)
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 16
𝑃3(𝑥) = 1 − 4.597(𝑥 − 0.0) − 0.2484(𝑥 − 0.0)(𝑥 − 1.0)
+ 0.1466(𝑥 − 0.0)(𝑥 − 1.0)(𝑥 − 2.0)
− 0.0147(𝑥 − 0.0)(𝑥 − 1.0)(𝑥 − 2.0)(𝑥 − 3.0)
Donde 𝑃3(𝑥) es el polinomio que interpola nuestra función
En Octave lo podemos comprobar de la siguiente manera:
octave:63>function y=p4cos(x)
>xc=[0,1,2,3,4];
> a=[1, -0.4597, -0.2484, +0.1466, -0.0147];
> p0=a(1);
> p1=p0+a(2).*(x-xc(1));
> p2=p1+a(3).*((x-xc(1)).*(x-xc(2)));
> p3=p2+a(4).*((x-xc(1)).*(x-xc(2)).*(x-xc(3)));
> p4=p3+a(5).*((x-xc(1)).*(x-xc(2)).*(x-xc(3)).*(x-xc(4)));
> y=p4;
>endfunction
octave:64> x=0.0:0.1:4.5
x =
…
octave:65> z=p4cos(x);
octave:66> plot(x,cos(x));
octave:67> hold on;
octave:68>plot(x,z);
Aunque el script de la función no es lo más óptimo posible lo que estamos mostrando es cómo
calcularlo de manera detallada (así como estable). La comparación la puedes ver en las
siguientes gráficas donde se muestra el polinomio contrastado con la función original así como
el error relativo.
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 17
(a)
(b)
Figura 4. (a). Comparaciòn de cos(x) vs. el polinomio de Newton que lo interpola. (b) Error relativo del cos(x) contra su
interpolante en el intervalo [𝟎. 𝟎, 𝟒. 𝟓].
function [C,D]= newton(X,Y)
% Entrada
% X,Y son vectores con los puntos observados
%
% Salida
% D tabla de diferencias divididas
% C coeficientes decrecientes de X
n=length(X); %tamaño de X
D=zeros(n,n); %matriz cuadrada de 0's de tam n
D(:,1)=Y' %primer columna es la transpuesta de Y
%a continuación rellenamos la matriz
%de las diferencias divididas de manera
%incremental a partir de la segunda columna
for j=2:n %columnas
for k=j:n %filas
D(k,j)=(D(k,j-1)-D(k-1,j)/(X(k)-X(k-j+1));
end
end
%ahora rellenamos los coeficientes del interpolante
C=D(n,n) %ya que vamos a multiplicar cada dif
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 18
dividida
for k=(n-1):-1:1 %recorremos hacia atrás
%poly resuelve el polinomio característico del
argumento
%conv devuelve el producto de los polinomios en el
argumento
C=conv(C,poly(X(k)));
m=length(C);
C(m)=C(m)+D(k,k);
End
Algoritmo 1. Interpolante polinómico de Newton por diferencias divididas, recuerda que el
nombre del archivo se debe llamar como la función (Newton) junto con la extensión .m
2.2.3. Interpolación polinómica de Hermite
Hasta ahora nuestras interpolaciones se basan en una cantidad de puntos observados lo que
puede acarrear problemas con la función interpolada 𝑓(𝑥) en los extremos del intervalo donde
se encuentre definida.
Estos son los principales problemas de estabilidad numérica con los polinomios basados en
puntos observados.
En ocasiones no sólo contamos con los puntos observados sino también con la función explícita
así como sus derivadas lo que puede contribuir a determinar un interpolante más preciso y un
algoritmo más estable ya que podemos incorporar la información de la derivada en cada punto.
Para la interpolación de Hermite vamos a necesitar no sólo el punto observado y la imagen
bajo la función 𝑓(𝑥) a interpolar sino también la derivada de la función 𝑓′(𝑥) en los extremos
de cada intervalo interpolado, con estos puntos calcularemos el interpolante 𝑝(𝑥)
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 19
El interpolante de Hermite se plantea de la siguiente manera
𝑃(𝑥) = 𝑎 + 𝑏(𝑥 − 𝑥4) + 𝑐(𝑥 − 𝑥4)# + 𝑑(𝑥 − 𝑥4)#(𝑥 − 𝑥5) (10)
Se observa que:
𝑝(𝑥4) = 𝑦4 𝑝(𝑥5) = 𝑦5
Sabemos que la primera derivada existe, ya que es un requerimiento del interpolante de clase
𝐶" por lo tanto podemos hacer la siguiente operación sobre el polinomio:
𝑝&(𝑥) = 𝑏 + 2𝑐(𝑥 −𝑥4) + 𝑑(2(𝑥 − 𝑥4)(𝑥 − 𝑥5) +(𝑥 − 𝑥4)#)
De esta ecuación también es fácil ver que:
𝑝&(𝑥4) = 𝑓&(𝑥4) = 𝑠4 𝑝&(𝑥5) = 𝑓&(𝑥5) = 𝑠5
Estas ecuaciones las usaremos para determinar el valor de los coeficientes 𝑎, 𝑏, 𝑐, 𝑑. Se observa
que:
𝑦4 = 𝑎 𝑦5 = 𝑎 + 𝑏∆𝑥 + 𝑐(∆𝑥)#
𝑠4 = 𝑏 𝑠5 = 𝑏 + 2𝑐∆𝑥 + 𝑑(∆𝑥)#
Estas igualdades son el resultado de evaluar 𝑝(𝑥) y 𝑝(𝑥) en los extremos del intervalo a
interpolar y ∆𝑥 = 𝑥5 −𝑥4. Todo este conjunto de ecuaciones nos plantea un sistema que
queda de la siguiente manera:
f
1 00 1
0 00 0
1 ∆𝑥0 1
(∆𝑥)# 02∆𝑥 (∆𝑥)#
g h𝑎𝑏𝑐𝑑i = h
𝑦4𝑠4𝑦5𝑠5
i
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 20
Este sistema triangular lo podemos resolver con los métodos de solución de sistemas
triangulares, las soluciones quedan como: 𝑎 = 𝑦4𝑏 = 𝑠4
𝑐 =𝑦4&– 𝑠4∆𝑥
𝑑 =𝑠5 +𝑠4 − 2𝑦4&
(∆𝑥)#
(11)
Donde, se simplifica de esta manera:
𝑦4& =𝑦5 − 𝑦4∆𝑥 =
𝑦5 − 𝑦4𝑥5 −𝑥4
El interpolador de Hermite pertenece a la gama de interpoladores por trozos en los que se
incorpora la primer derivada con el fin de suavizar la curva interpolada y hacerla más cercana y
parecida a la curva descrita por 𝑓(𝑥).
Aunque los interpoladores de Newton y Lagrange son sencillos de entender e implementar, el
interpolador cúbico de Hermite tiene la ventaja de incorporar más información a la curva
interpolada.
El algoritmo es muy fácil de implementar en cualquier lenguaje de programación,
particularmente en Octave, para calcular los coeficientes se computan de la siguiente manera,
tomando como ejemplo 𝑓(𝑥) = cos(𝑥):
function [a,b,c,d]=hermite_cub(xl,yl,sl,xr,yr,sr)
% función para calcular el interpolante cúbico de hermite
% entrada
% xl,yl,sl: punto del extremo derecho, su imagen y derivada
% xr,yr,sr: punto derecho, imagen y derivada
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 21
% salida
% regresa los coeficientes del polinomio
a=yl;
b=sl;
dif1=xr-xl;
yp=(yr-yl)/difx;
c=(yp-sl)/difx;
d=(sl-2*yp+sr)/(difx^2);
end function
Algoritmo 2. Interpolante de Hermite en Octave.
Para evaluar el polinomio de Hermite descrito a través de estos coeficientes podemos usar el
siguiente script:
function Y=hermite_pol(C,X)
% función para evaluar el polinomio de Hermite de la forma
%
% H(x) = a + b(x-xl) + c(x-xl)^2 + d(x-xl)^2(x-xr)
%
% definido a través de sus coeficientes C, que es un
% vector de 4 elementos
%
% C = [a,b,c,d]
%
% y que se calculan con hermite_cub.m
% en el intervalo X=[xl,...,xr]
n=length(X);
a=C(1);
b=C(2);
c=C(3);
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 22
d=C(4);
xl=X(1);
xr=X(n);
Y = a + b*(X-xl) + c*(X-xl).^2 + d*((X-xl).^2.*(X-xr));
End function
Algoritmo 3. Script para evaluar el polinomio de Hermite descrito a través de sus coeficientes
𝑪 = [𝒂, 𝒃, 𝒄, 𝒅] en el intervalo𝑿. Regresa el vector imagen de 𝑿 bajo el polinomio𝑯, es decir,
𝒀 = 𝑯(𝑿)
Ejemplo.
Calcular el polinomio de Hermite entre [0, $#𝜋] para 𝑓(𝑥) = cos(𝑥). Sabemos que la derivada
𝑓&(𝑥) = −𝑠𝑒𝑛(𝑥). Entonces los coeficientes según (11) son:
𝑎 = 1
𝑏 = 0
𝑐 = −0.045
𝑑 = 0.109
Por lo tanto, acomodando estos coeficientes en (10) obtenemos el polinomio:
𝐻(𝑥) = 1 − 0.045𝑥 + 0.109𝑥#(𝑥 − 1)
Para obtener los valores a través del algoritmo 2 puedes hacer lo siguiente:
octave:5> X=0:0.01:3/2*pi;
octave:6> n=length(X)
n = 472
octave:7> P=[X(1),cos(X(1)),-sin(X(1)),X(n),cos(X(n)),-
sin(X(n))]
P =
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 23
0.00000 1.00000 -0.00000 4.71000 -0.00239 1.00000
octave:8> [a,b,c,d]=hermite_cub(P(1),P(2),P(3),P(4),P(5),P(6));
octave:9> C=[a,b,c,d]
C =
1.00000 -0.00000 -0.04519 0.10934
octave:10> Y=hermite_pol([a,b,c,d],X);
octave:11> plot(X,cos(X));
octave:12> hold on;
octave:13> plot(X,Y);
(a)
(b)
Figura 5. (a). Comparación entre 𝒄𝒐𝒔(𝒙)y su interpolante de Hermite 𝑯(𝒙). (b). Error absoluto entre ambos valores.
Unidad 2. Interpolación
UnADM | DCEIT | MT | MANU2 24
Cierre de la unidad
En esta unidad estudiaste algunos métodos numéricos para poder interpolar funciones en
valores desconocidos. En ocasiones necesitas una forma polinómica para hacer una evaluación
más sencilla. Estos métodos te permiten conocer de forma rápida el valor de una función en un
punto desconocido.
Referencias Bibliográficas
• Burden, R. (2011) Análisis numérico (7ª edición) México: CengageLearning.
• Mathews, J., Fink, K. (2000). Métodos Numéricos con MATLAB. (3ª edición) Madrid,
España. Prentince Hall.
• Capitulo 3. Interpolación. (s.f). Recuperado de:
http://juperez.webs.ull.es/interpolacion.pdf
• Polinomios de Lagrange. Ejemplo 1. Aproximación polinomial de Lagrange (2013) [en
línea]. Disponible en : https://www.youtube.com/watch?v=cgX55MEnrmU
• Diferencias divididas de Newton. Aproximación polinomial (2013) [en línea]. Disponible
en: https://www.youtube.com/watch?v=klOWp2SYycc
• Vargas, N. (2011). Interpolación de Hermite [en línea]. Disponible en:
https://www.youtube.com/watch?v=ZPcp5LoJaDg
• Jiménez López, V. Pallarés Ruiz, A. (s.f.) Métodos numéricos. Recuperado de:
http://www.um.es/docencia/vjimenez/ficheros/textos/metodosnumericos.pdf