unidad 2. interpolación clave 05143527/06143527

24
Matemáticas Análisis Numérico II 5º Semestre Unidad 2. Interpolación Clave 05143527/06143527 Universidad Abierta y a Distancia de México

Upload: others

Post on 15-Oct-2021

0 views

Category:

Documents


0 download

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