A limitación do erro na interpolación

Na entrada anterior démos un método para calcular un polinomio p que interpole o valor dunha función f nos nodos de interpolación.

É lexítimo preguntarse canto se diferencian f e p entre os nodos de interpolación, \displaystyle \left\{x_i\right\}_{i=1}^n, é dicir, no intervalo \displaystyle [a,b]=\left[\min_{1\leq i\leq n}\{x_i\}, \max_{1\leq i\leq n}\{x_i\}\right]. En xeral, a resposta depende da regularidade de f e da posición dos nodos de interpolacion. A resposta a esta cuestión é fundamental en moitas aplicacións desta técnica (ver páx. 5 deste artigo)

Se f é n veces continuamente diferenciable en (a,b), é dicir, as derivadas de f ata orde n son continuas, daquela, para cada x\in[a,b], existe un punto c_x\in(a,b) tal que

\displaystyle f(x)-p(x)=\frac{(x-x_1)\ldots(x-x_n)}{n!}f^{(n)}(c_x).

Como na práctica non coñecemos o valor de c_x, só podemos aspirar a obter un límite máximo para o erro. Así, se soubesemos que

\displaystyle \max_{x\in[a,b]}f^{(n)}(c_x)\leq M,

daquela poderíamos afirmar que

\displaystyle |f(x)-p(x)|\leq \frac{M|x-x_1|\ldots|x-x_n|}{n!},

que é un límite do erro fácilmente calculable.

Exercicio: Calcula o erro máximo que se comete ao aproximar y=\text{e}^x coa parábola do exercicio anterior, no intervalo [0,2].

Exercicio: Calcula o erro máximo que se comete ao aproximar y=\cos(x) coa parábola que pasa polos puntos 0, π e π/2. Estima o erro para x=70º=7π/18 rad.

O fenómeno de Runge

A expresión do erro permítenos estudar con máis coidado onde o polinomio aproxima peor á función. Supoñamos, por comodidade, que temos un número par de nodos igualmente espaciados por unha distancia de 1/n no intervalo [a,b]. O polinomio (x-x_1)\ldots(x-x_n) só se anula nos nodos. Tomando un valor x no primeiro subintervalo [x_1, x_2], a distancia entre x e x_{i+1} é da orde de i/n e o polinomio anterior é da orde de

\displaystyle \prod_{i=1}^n \frac in=\frac{n!}{n^n}.

Porén, se tomamos x no medio do intervalo, é dicir, próximo a x_{n/2}, o valor do polinomio é da orde de

\displaystyle \prod_{i=1}^{n/2} \left(\frac in\right)^2=\frac{\left((n/2)!\right)^2}{n^n}.

O primeiro valor é maior que o segundo e a diferenza aumenta cando n aumenta. Por exemplo, para n=10, o primeiro é 1260 veces máis grande que o segundo. Logo, os erros entre f e p poden ser maiores nos extremos do intervalo que no medio e poden dispararse cando n aumenta. Este é o chamado fenómeno de Runge.

Como exemplo, vemos o que ocorre cando aproximamos a función \displaystyle y = \frac{1}{1+x^2} nos nodos -5, -4, …, 4, 5 polo seu polinomio de interpolación:

sage: f(x)  = x^2
sage: t     = vector([-5..5])
sage: f(x)  = 1/(1+x**2)
sage: nodes = zip(t,t.apply_map(f))
sage: R = PolynomialRing(RR, 'x')
sage: p = R.lagrange_polynomial(nodes) 
sage: g = plot(f, -5, 5, color='blue',  legend_label='funcion') + \
....:     plot(p, -5, 5, color='green', legend_label='polinomio') + \
....:     line(nodes,    color='red',   legend_label='nodos', 'marker='o', linestyle='')
sage: g.set_legend_options(loc='upper right')
sage: g.save('g.png')

runge-sage
Unha estratexia para evitar esta situación que veremos na seguinte entrada, consiste en construir polinomios de interpolacion por tramos (a cachos) de xeito que, en cada tramo, o polinomio sexa de grado baixo.

Advertisements
Esta entrada foi publicada en Cálculo numérico, Interpolación polinomial. Ligazón permanente.

One Response to A limitación do erro na interpolación

  1. Pingback: Polinomios de Lagrange | fundmat

Deixar unha resposta

introduce os teu datos ou preme nunha das iconas:

Logotipo de WordPress.com

Estás a comentar desde a túa conta de WordPress.com. Sair / Cambiar )

Twitter picture

Estás a comentar desde a túa conta de Twitter. Sair / Cambiar )

Facebook photo

Estás a comentar desde a túa conta de Facebook. Sair / Cambiar )

Google+ photo

Estás a comentar desde a túa conta de Google+. Sair / Cambiar )

Conectando a %s