Sei sulla pagina 1di 11

¡Chebyshev, ruge!

Nicolás Dı́az Paı́s

Resumen

En este artı́culo muestro la interpolación de Lagrange, utilizando puntos


equiespaciados y Nodos de Chebyshev. Se grafican los resultados y se puede
observar la aparición del fenómeno de Runge.
Palabras Claves: Interpolación de Lagrange, Nodos de Chebyshev, fenómeno
de Runge.

1. Introducción
Durante un desarrollo cualquiera que incluya un procesamiento de datos,
se pueden tener datos “con ruido” o “sin ruido”. En el primer caso, la idea es
encontrar una funcion f (x) que mejor represente al dataset que se obtuvo. Este
problema, se suele llamar “problema de Ajuste”.
En el segundo caso, sea un dataset proveniente de una medición “sin ruido”.
Es decir, una colección de pares (xi , fi ) donde las x representan los valores de las
abscisas y las f los valores de la función evaluada en dichos puntos. El problema
a enfrentar es el siguiente: quiero hallar una función f (x) tal que f (xi ) = fi ,
con i = 0, . . . , n, siendo f desconocida. Sin embargo, ¡Hay millones de ellas que
cumplan dicha condición!. De este tipo de situaciones se encarga la rama de los
métodos numéricos que estudia los problemas de interpolación y es el de interés
de esta publicación.
En la sección 2 explico un tipo de interpolacion llamada Interpolación de
Lagrange, con la utilización de los Nodos de Chebyshev y lo que se conoce como
fenómeno de Runge.
En la sección 3 muestro un ejemplo, interpolando la funcion f (x) = |x|, con
los fundamentos teóricos detallados en la sección 2.
En la sección 4 detallo las conclusiones y en la seccion Anexo describo los
codigos de programación que utilizo para obtener los resultados.

2. Interpolación de Lagrange
Interpolar significa estimar el valor desconocido de una función en un punto,
al tomar como base los valores conocidos en los puntos de las abscisas. Una
forma de interpolar es mediante la utilización de polinomios interpolantes. Es
decir, con los n + 1 puntos mencionados anteriormente, busco el polinomio de
grado n pn (x) tal que pn (xi ) = fi , continuando con la convención utilizada
anteriormente.

1
Por ejemplo, sea el caso de un dataset conformado por dos puntos, (x0 , f0 ), (x1 , f1 ).
J.L. Lagrange (matemático francés del siglo XVIII) demostró que se puede to-
mar como polinomio interpolante el siguiente
x − x1 x − x0
f = P1 (x) = f0 + f1 (1)
x0 − x1 x1 − x0
Defino a los coeficientes de la acuación anterior, llamados polinomios coefi-
cientes de Lagrange para los nodos x0 y x1 , como
x−x1 x−x0
L1,0 (x) = x0 −x1 y L1,1 (x) = x1 −x0 (2)
donde se ve claramente que L1,0 (x0 ) = 1, L1,0 (x1 ) = 0, L1,1 (x0 ) = 0 y
L1,1 (x1 ) = 1, y el polinomio definido en (1) pasa por los puntos dados.
La forma generalizada para construir un polinomio PN (x) que tenga grado
menor o igual que N y que pase por N + 1 puntos es la fómula
N
X
PN (x) = yk LN,k (x) (3)
k=0

donde
QN
j=0,j6=k (x − xj )
LN,k (x) = QN (4)
j=0,j6=k (xk − xj )
Es importante entender el error que se comete al utilizar un polinomio in-
terpolador de Lagrange para aproximar una función f (x). Supongamos que
f ∈ C N +1 [a, b] y que x0 , . . . , xN ∈ [a, b] son N + 1 nodos de interpolación.
Si x ∈ [a, b], entonces [Mathews, 2000]

f (x) = PN (x) + EN (x) (5)


donde PN es el polinomio interpolador de Lagrange y el término del error
EN (x) se puede escribir como

(x − x0 )(x − x1 ) . . . (x − xN )f N +1 (c)
EN (x) = (6)
(N + 1)!
para algún valor c = c(x) del intervalo [a, b] (para la demostración se puede
consultar la referencia). Si el dataset proviene de una función cuya expresión
analı́tica es conocida, se puede estimar el error a través de la expresión (6). Una
forma de realizar esto, es mediante la relación

max f N +1 (x) : −1 ≤ x ≤ 1
|EN (x)| ≤ |Q(x)| (7)
(N + 1)!
donde

Q(x) = (x − x0 )(x − x1 ) . . . (x − xN ) (8)

2
2.1. Nodos de Chebyshev y fenómeno de Runge
P. L. Chebyshev (matemático ruso del siglo XIX) resolvió el problema,
utilizando la expresion (7), de cómo seleccionar el conjunto de nodos xk con
k = 0, . . . , N que haga mı́nimo el valor del numerador del témino de la derecha
de la relación. Para ello, es necesario conocer las propiedades de los polinomios
de Chebyshev (su demostracion excede el alcance de esta publicación, pero pue-
de consultarse la referencia para mayor detalle, [Mathews, 2000]). Dichos nodos,
cuando el dominio se encuentra en el intervalo [-1, 1] son de la forma
 
(2k + 1)π
xk = cos (9)
2N
para k = 0, 1, . . . , N − 1. Estos valores se llaman nodos de Chebyshev.
Ahora bien, ¿qué sucede con el error cuando se utiliza un polinomio inter-
polante de Lagrange y nodos equiespaciados? ¿tiende a cero a medida que se
incrementa N?. Acá hay que tener especial cuidado. Para algunas funciones,
como es el caso de sin(x) donde sus derivadas se encuentran acotadas por una
constante,la respuesta es afirmativa. Sin embargo, en general, no siempre sucede
1
esto. Ocurre, en funciones como f (x) = 1+x 3 , que el máximo del término del

error EN (x) crece a medida que N toma valores mas grandes, y ya no es cierto
que el error converge a cero. Esto se conoce como fenómeno de Runge y se da
porque los nodos se encuentran equiespaciados. Sin embargo, cuando se utilizan
nodos de Chebyshev, el error EN (x) tiende a cero cuando N → ∞.
Este fenómeno se pone en claro manifiesto cuando se grafica el polinomio
interpolante utilizando nodos equiespaciados: ¡los errores mas grandes se en-
cuentran en los extremos! Lo que sucede, es que la derivada f N +1 supera al
factorial N + 1, y al introducir mas puntos (incrementando de esta forma N ),
introduzco más error.

3. Funcion f (x) = |x|


Como el tı́tulo lo indica, presento el caso de la función módulo utilizando
polinomios interpolantes de Lagrange, con nodos equiespaciados y nodos de
Chebyshev. Para ello, calculo los coeficientes del polinomio de Lagrange para
un n dado, y grafico los resultados. Para los cálculos y gráficos, utilio el programa
de computadora Matlab, y se anexan los códigos (en la sección Anexo de esta
publicaciones) para aquel lector que quiera reproducir los resultados.
Para todos los casos, trabajo en el intervalo [−1, 1].
Para el primer caso, tomo un dataset de 11 puntos equiespaciados, que se
muestra en la figura 1. Ejecutamos el script de Matlab, y al aplicar la funcion
lagrange(x,y) al dataset, obtengo los coeficientes del polinomio interpolante
de Lagrange, que se encuentran en la figura 2.
Grafico el polinomio interpolado obtenido, que se muestra en la figura 3. Al
repetir el experimento, tomando 17 y 28 puntos, se observa que la gráfica se
deforma de la funcion módulo, ¡contrario a lo que se esperarı́a!. Aca se muestra
el fenómeno de Runge explicado anteriormente: al introducir más puntos el error
se acrecienta haciéndose mayor en los extremos del intervalo. Los gráficos para
17 y 28 puntos se muestran en las figuras 4 y 5 respectivamente.

3
xi V alor fi V alor
x0 −1,00000000 f0 1,00000000
x1 −0,80000000 f1 0,80000000
x2 −0,60000000 f2 0,60000000
x3 −0,40000000 f3 0,40000000
x4 −0,20000000 f4 0,20000000
x5 0,00000000 f5 0,00000000
x6 0,20000000 f6 0,20000000
x7 0,40000000 f7 0,40000000
x8 0,60000000 f8 0,60000000
x9 0,80000000 f9 0,80000000
x10 1,00000000 f10 1,00000000

Figura 1: Dataset de puntos equiespaciados

Grado Coef iciente


x10 0,75352045
x9 0,00000000
x8 −1,67927414
x7 0,00000000
x6 1,28399884
x5 0,00000000
x4 −0,41280864
x3 0,00000000
x2 0,06456349
x1 0,00000000
x0 0,00000000

Figura 2: Coeficientes del polinomio interpolante de Lagrange

4
Figura 3: Polinomio interpolante de Lagrange con 11 puntos equiespaciados

Figura 4: Polinomio interpolante de Lagrange con 17 puntos equiespaciados

5
Figura 5: Polinomio interpolante de Lagrange con 28 puntos equiespaciados

Al utilizar los nodos de Chebyshev, el error tiende a cero a medida que se


toman más puntos. Para exponer esto último, repito el experimento utilizando el
mismo intervalo y la misma funcion, pero esta vez tomando los nodos de Chebys-
hev. El culculo de nodos (al utilizar la funcion nodosTche(n), programada en
Matlab) se muestra en la figura 6, y los coeficientes del polinomio interpolante
utilizando este dataset, se detalla en al figura 7. Se muestran los graficos del
polinomio interpolante utilizando estos nodos, tomando 11, 19 y 27 puntos, que
se muestran en las figuras 8,9 y 10 respectivamente. Como se espera, a medida
que se toman mas puntos, el error se hace mas chico y la funcion se acerca más
a la conocida f (x) = |x|.

6
xk V alor fk V alor
x0 −0,98982144 f0 0,98982144
x1 −0,90963200 f1 0,90963200
x2 −0,75574957 f2 0,75574957
x3 −0,54064082 f3 0,54064082
x4 −0,28173256 f4 0,28173256
x5 0,00000000 f5 0,00000000
x6 0,28173256 f6 0,28173256
x7 0,54064082 f7 0,54064082
x7 0,54064082 f7 0,54064082
x9 0,90963200 f9 0,90963200
x10 0,98982144 f10 0,98982144

Figura 6: Dataset de 11 puntos utilizando Nodos de Chebyshev

Grado Coef iciente


x10 13,66697858
x9 0,00000000
x8 −38,22893863
x7 −0,00000000
x6 39,50721068
x5 0,00000000
x4 −18,73894592
x3 0,00000000
x2 4,80651079
x1 0,00000000
x0 0,00000000

Figura 7: Coeficientes del Polinomio interpolante utilizando Nodos de Chebyshev

7
Figura 8: Polinomio interpolante de Lagrange con 11 puntos equiespaciados,
utilizando Nodos de Chebyshev

Figura 9: Polinomio interpolante de Lagrange con 19 puntos equiespaciados,


utilizando Nodos de Chebyshev

8
Figura 10:Polinomio interpolante de Lagrange con 27 puntos equiespaciados,
utilizando Nodos de Chebyshev

4. Conclusiones
Al tener la necesidad, cualquiera sea el caso, de tener que interpolar una
función, no solo es cuestión de calcular un numero grande de coeficientes de
Lagrange, sino que también la elección de los puntos del dataset es de suma
importancia. Aquellos valores de abscisas que se tomen siguiendo el método
de Chebyshev, siempre que se pueda, nos va a segurar que el error tiende a
cero a medida que tomamos más puntos. Sin embargo, esto último tiene una
desventaja: realizar el cálculo a mano, puede llegar a ser mas tedioso, ya que
ahora no es sólo dividir el intervalo de forma equiespaciada, sino que hay que
utilizar la expresion (9) y por ello, utilizar un sistema de cómputo simplifica de
forma significativa el trabajo.

Anexo
Para la implementación de la función que calcula los coeficientes de Lagrange,
se utilizan funciones integradas de Matlab que simplifican mucho el trabajo
en este caso. Una de ellas, es la función poly que produce un vector cuyas
componentes son los coeficientes de un polinomio del que se especifican las
raı́ces. La otra, es la función conv que proporciona un vector cuyas componentes
son los coeficientes de un polinomio que es el producto de otros dos dados. De
esta forma, voy formando la matriz de los polinomios coeficientes de Lagrange,
para luego multiplicarlo por los puntos de la funcion evaluados en los puntos
de abscisas y ası́ obtener los coeficientes de Lagrange. La implementación de

9
nodosTche para el cálculo de nodos de Chebyshev simplemente itera sobre un
vector, calculando los nodos siguiendo la expresión (9) y retorna dicho vector.

% Funcion lagrange: Calcula el polinomio interpolante de lagrange


% Parametros: Recibe los vectores del Dataset, en X las abscisas,
% en Y los valores de la funcion
% Retorna: Matriz que contiene los coeficientes del polinomio
% interpolador de Lagrange
% --------------------------------------------------------
% Referencia: Metodos Numericos - Mathew y Finn

function C=lagrange(X,Y)

w = length(X);
n = w - 1;
L = zeros(w,w);

%Ahora, voy formando los polinomios coeficientes de lagrange

for k=1:n+1
V = 1;
for j=1:n+1
if k ~= j
V = conv(V, poly(X(j))) / (X(k) - X(j));
end
end
L(k, :) = V;
end

%Una vez obtenidos los polinomios coeficientes, calculo el poli interpolador

C = Y * L;

% Funcion nodosTche: Retorna un arreglo con los nodos de Tchebycheff en el


% intervalo -1, 1
% Parametros: la cantidad de puntos a calcular
% Retorna: El vector con los valores

function v = nodosTche(n)

for i = 0:n-1
v(i+1) = cos ( (2*i + 1)*(pi/(2*n)) );
end

10
Referencias
[Mathews, 2000] Mathews, J.H. y Fink, K.D. (2000) Métodos Numéricos con
Matlab. Tercera Edición. Prentice Hall.

11

Potrebbero piacerti anche