Polinômios de Lagrange em exemplos
Dois exemplos para entender como usar os polinômios de Lagrange
Vamos lá?
Os polinômios de Lagrange foram construídos com tanto cuidado, que seria uma pena não aproveitá-los para resolver alguns problemas.
- 1
- 2
- 3
- 4
Sobre o polinômio $\ell_j$ podemos dizer que...
Sobre o primeiro exemplo (interpolação de $\sqrt{x}$), podemos dizer que...
No exemplo da função seno, podemos afirmar que...
Na aula passada, motivados pelo problema de interpolação no nós $x_0\lt x_1\lt \cdots \lt x_n,$ construímos a base $\{\ell_0,\ell_1,\ldots, \ell_n\}$ para o espaço do polinômios de grau menor ou igual a $n,$ denotado por ${\cal P}_n.$ Essa base, conhecida como base dos polinômios de Lagrange, foi construída a partir dos nós de interpolação, para ter a propriedade muito especial de que \begin{equation} \ell_j(x_j) = 1, \quad \mbox {e} \quad \ell_j(x_i) = 0, \quad i\neq j. \end{equation} Deduzimos ainda a expressão explícita para cada polinômio $\ell_j$ como \begin{equation}\label{ellj} \ell_j (x) = {(x-x_0)\cdots(x-x_{j-1})(x-x_{j+1})\cdots(x-x_n) \over (x_j-x_0)\cdots(x_j-x_{j-1})(x_j-x_{j+1})\cdots(x_j-x_n)}. \end{equation}
Considere agora o problema interpolação polinomial, isto é, o problema de determinar um polinômio $p$ em ${\cal P}_n,$ tal que \begin{equation}\label{condinterp} p(x_j) = y_j, \quad j=0,1,\ldots,n. \end{equation} Se $p$ é escrito em termos da base dos polinômios de Lagrange, então $p(x_j)$ resulta em \begin{align*} p(x_j) & = a_0\ell_0(x_j) + a_1\ell_1(x_j) + \cdots + a_n \ell_n(x_j) \\ & = a_j \ell_j(x_j) \\ & = a_j. \end{align*} Portanto, a condição de interpolação \eqref{condinterp} imediatamente implica que $a_j = y_j$ e assim o polinômio interpolador é dado por \begin{equation}\label{pinterp} p(x) = y_0\ell_0(x) + y_1\ell_1(x) + \cdots + y_n \ell_n(x). \end{equation}
No primeiro exemplo do vídeo, a intenção foi construir o polinômio que interpola a função $f(x) = \sqrt{x},$ nos pontos $$ \begin{array}{c|ccc} x_j & 1 & 2 & 4 \\ \hline y_j & 1 & \sqrt{2} & 2 \end{array} $$ Para a interpolação em três pontos, o polinômio interpolador será de grau 2. Para expressá-lo na base dos polinômio de Lagrange basta usar \eqref{ellj} e \eqref{pinterp}. Com efeito, \begin{align*} \mbox{associado a } x_0=1, & \quad \ell_0(x) = {(x-x_1)(x-x_2)\over(x_0-x_1)(x_0-x_2)} = {(x-2)(x-4)\over(1-2)(1-4)}\\[2mm] \mbox{associado a } x_1=2, & \quad \ell_1(x) = {(x-x_0)(x-x_2)\over(x_1-x_0)(x_1-x_2)} = {(x-1)(x-4)\over(2-1)(2-4)}\\[2mm] \mbox{associado a } x_2=4, & \quad \ell_2(x) = {(x-x_0)(x-x_1)\over(x_2-x_0)(x_2-x_1)} = {(x-1)(x-2)\over(4-1)(4-2)} \end{align*} e, com isso, o polinômio interpolador é $$ p(x) = 1{(x-2)(x-4)\over(1-2)(1-4)}+\sqrt{2}{(x-1)(x-4)\over(2-1)(2-4)}+2{(x-1)(x-2)\over(4-1)(4-2)}. $$ Esse polinômio pode ser utilizado como uma aproximação para $f,$ dentro do intervalo $[1,4].$
No segundo exemplo, a intenção foi aproximar o valor da função seno em $x=1,$ conhecendo apenas os valores de seno em alguns ângulos notáveis. $$ \begin{array}{r|cccc} x_j & 0 & \pi/4 & \pi/3 & \pi/2 \\ \hline \sin(x_j) = y_j & 0 & \sqrt{2}/2 & \sqrt{3}/2 & 1 \end{array} $$ Como só queríamos utilizar um polinômio de grau 2, primeiro é necessário escolher dos 4 pontos disponíveis, quais 3 pontos utilizar. Para reduzir o erro de interpolação, devemos sempre escolher os pontos mais próximos ao ponto onde se pretende avaliar o polinômio (a justificativa para essa escolha será tema de outra aula). Neste caso, os nós de interpolação mais próximos de $1$ são, $\pi/4,$ $\pi/3$ e $\pi/2.$ Desta forma, o polinômio interpolador é \begin{equation}\label{pseno} p(x) = {\sqrt{2}\over 2} {(x-{\pi\over 3})(x-{\pi\over 2})\over({\pi\over 4}-{\pi\over 3})({\pi\over 4}-{\pi\over 2})} + {\sqrt{3}\over 2} {(x-{\pi\over 4})(x-{\pi\over 2})\over({\pi\over 3}-{\pi\over 4})({\pi\over 3}-{\pi\over 2})} + 1 {(x-{\pi\over 4})(x-{\pi\over 3})\over({\pi\over 2}-{\pi\over 4})({\pi\over 2}-{\pi\over 3})}. \end{equation} Para obter a aproximação para $\sin(1),$ é preciso avaliar o $p$ em $x=1.$ Ao olhar para expressão acima, já dá até um certo desânimo em pensar em substituir $x=1$ e realizar todas as operações, não? Realmente são muitas operações aritméticas.
No caso de um polinômio de grau $n,$ ao observar a expressão \eqref{ellj} é fácil concluir que avaliar $\ell_j(x)$ consome $2n$ subtrações e $2n-2$ produtos, além de uma divisão, totalizando $4n-1$ operações. Portanto, avaliar o polinômio $p,$ dado por \eqref{pinterp}, consome $4n^2+n$ operações aritméticas. Um polinômio de grau $n,$ escrito em termos da base canônica, consumiria apenas ${\cal O}(n)$ operações para ser avaliado.
Outra complicação prática de usar a base de Lagrange é que a cadeia de produtos necessária para computar $\ell_j(x)$ pode levar a problemas de overflow (obter um número maior que o maior número representável pelo sistema de ponto flutuante) ou underflow (obter um número menor que o menor número representável pelo sistema de ponto flutuante). Por exemplo se $x\approx x_n,$ os primeiros termos $(x-x_0),$ $(x-x_1)$, ..., podem gerar número muito grandes. É verdade que os termos do final, $(x-x_{n-1}),$ $(x-x_n)$ seriam bem pequenos. Mas se o produto acumulado do início já ultrapassar o máximo representável, o overflow não poderá ser recuperado pelos produtos seguintes.
Essa duas aparentes dificuldades não são inerentes aos polinômios de Lagrange, mas sim a um uso ingênuo deles. Observe novamente o polinômio \eqref{pseno}. É claro que ao computar $p(1)$ várias operações podem ser economizadas, observando que há muitos termos comuns. Uma implementação cuidadosa para o cálculo do polinômio interpolador \eqref{pinterp} conhecida como forma baricêntrica evita todos esses problemas.
No vídeo vimos que nos dois exemplos apresentados o polinômio interpolador pareceu ser uma boa aproximação para a função. Mas o quão boa? E se a aproximação não for razoável, como seria possível melhorá-la? Este assunto é interessante e merece outra aula.
1. Considere a função $f(x)=e^x.$
- Encontre o polinômio interpolador $p$ para $f$ em $0,$ ${1\over 2}$ e $1.$
- Faça o gráfico de $f$ e de $p,$ no intervalo $[-1,2].$ Você acha seguro utilizar o polinômio interpolador para prever o comportamento da função fora do intervalo de interpolação (extrapolação)? Se ficar na dúvida, faça alguns experimentos para poder formar uma opinião.
- Aparentemente, em qual ponto do intervalo $[0,1]$ a aproximação de $f$ pelo polinômio interpolador foi pior?
(a) $\displaystyle{p(x) = \frac{(x-0.5)(x-1)}{(0-0.5)(0-1)} + \sqrt{e} \frac{(x-0)(x-1)}{(0.5-0)(0.5-1)} + e \frac{(x-0)(x-0.5)}{(1-0)(1-0.5)}}.$
2. Encontre o ponto de intersecção das duas funções tabeladas, utilizando interpolação quadrática. $$ \begin{array}{c|rcccccc} x & 0.000 & 0.600 & 1.200 & 1.800 & 2.400 & 3.000 \\ \hline f(x)& 1.300 & 1.383 & 1.223 & 0.919 & 0.626 & 0.435 \end{array} $$ $$ \begin{array}{c|rcccccc} x & 0.400 & 0.900 & 1.400 & 1.900 & 2.400 & 2.900 \\ \hline g(x)& 0.615 & 0.810 & 1.079 & 1.425 & 1.786 & 1.993 \end{array} $$
A intersecção acontece entre $1.2$ e $1.8.$ Então, $f$ será interpolada por $p$ em $0.6,$ $1.2$ e $1.8,$ enquanto que $g$ será interpolada por $q$ em $0.9,$ $1.4$ e $1.9.$ Determinando $p$ e $q$ \begin{align*} p(x) = & 1.383 \frac{(x-1.2)(x-1.8)}{(0.6-1.2)(0.6-1.8)} + 1.223 \frac{(x-0.6)(x-1.8)}{(1.2-0.6)(1.2-1.8)}\\[6pt]&+ 0.919 \frac{(x-0.6)(x-1.2)}{(1.8-0.6)(1.8-1.2)} = 1.399+0.0933x-0.2x^2,\\[12pt] q(x) =& 0.810 \frac{(x-1.4)(x-1.9)}{(0.9-1.4)(0.9-1.9)}+ 1.079 \frac{(x-0.9)(x-1.9)}{(1.4-0.9)(1.4-1.9)}\\[6pt]&+ 1.425 \frac{(x-0.9)(x-1.4)}{(1.9-0.9)(1.9-1.4)} = 0.51984 + 0.1838x+0.154x^2. \end{align*} Resolvendo $p(x)=q(x)$, temos que o ponto de intersecção acontece aproximadamente em $x=1.4533.$
3. Considere os pontos tabelados $$ \begin{array}{c|ccccccc} x & 1 & 2 & 3 & 4 & 5 & 6 & 7 \\ \hline f(x) & 0.91 & 1.43 & 1.58 & 1.55 & 1.44 & 1.30 & 1.18 \end{array} $$
- Obtenha uma aproximação para o valor máximo de $f$ usando interpolação quadrática.
- Usando interpolação quadrática aproxime a solução de $f(x) = 1.15.$
(a) O valor máximo de $f$ parece ocorrer próximo de $x = 3.$ Interpolando $f$ por um polinômio de grau 2 nos pontos $2,$ $3,$ e $4,$ e depois buscando seu máximo descobrimos que este deve ocorrer em $x = 3.333$ e valer aproximadamente $p(x) = 1.59.$ (b) A solução de $f(x) = 1.15$ deve estar no intervalo $[1, 2].$ Interpolando a função inversa, $f^{−1},$ em $[.91, 1.58],$ temos que $f^{−1}(y) \approx 8.4632 − 14.6441y + 7.08y^2.$ Logo $x = f^{−1}(1.15) = 0.98576.$