Baixe o app para aproveitar ainda mais
Prévia do material em texto
68 4 – APROXIMAÇÃO DE FUNÇÕES 4.1- INTERPOLAÇÃO POLINOMIAL Introdução: A interpolação Interpolar uma função f(x) consiste em aproximar essa função por uma outra função g(x), escolhida entre uma classe de funções definida a priori e que satisfaça algumas propriedades. A função g(x) é então usada em substituição à função f(x). A necessidade de se efetuar esta substituição surge em várias situações, como por exemplo: a.) quando são conhecidos somente os valores numéricos da função para um conjunto de pontos e é necessário calcular o valor da função em um ponto não tabelado; b.) quando a função em estudo tem uma expressão tal que operações como a diferenciação e a integração são difíceis (ou mesmo impossíveis) de serem realizadas. 4.1.1- Interpretação geométrica Consideremos (n +1 ) pontos distintos: x0, x1, ... , xn, chamamos nós da interpolação, e os valores de f(x) nesses pontos: f(x0), f(x1), ..., f(xn). A forma de interpolação de f(x) que veremos a seguir, consiste em se obter uma determinada função g(x) tal que: ( ) ( ) ( ) ( ) ( ) ( ) ( ) ( )ï ï ï ï î ï ï ï ï í ì = ×× ×× ×× = = = nn 22 11 00 xfxg xfxg xfxg xfxg Geometricamente, um esboço da interpolante g(x) sobre a função f(x) é visto na figura 3.1. Em particular, se g(x) = Pn(x), onde Pn é um polinômio de grau n, então a interpolação é denominada de interpolação polinomial. Observamos que: i.) existem outras formas de interpolação polinomial como, por exemplo, a fórmula de Taylor, a interpolação por polinômios de Hermite e do tipo “spline”, para as quais as condições são outras; ii.) Assim como g(x) foi escolhida entre as funções polinomiais, poderíamos ter escolhido g(x) como função racional, função trigonométrica, etc. Um 69 caso que explora combinaçãoes de funções trigonométricas, em campo real ou complexo, é o aproximante definido a partir da série de Fourier; iii.) existe também o caso polinomial não interpolante, tal como, o aproximante de funções por mínimos quadrados. Em qualquer um dos casos citados, estes encontram-se inseridos em um tópico mais geral chamado aproximação de funções. A interpolação polinomial que será vistá será a de Lagrange e a de Newton. Figura 4.1 – esboço de uma função f(x) e de sua interpolante g(x), para n = 4 ( 05 nós). Definição 4.1- Interpolação Polinomial Dados os pontos (x0, f(x0)), (x1, f(x1)), ..., (xn, f(xn)), portanto (n + 1) pontos, queremos aproximar f(x) por um polinômio pn(x), de grau menor ou igual a n, tal que: f(xk) = pn(xk) k = 0, 1, 2, ..., n Surgem aqui as perguntas: existe sempre um polinômio pn(x) que satisfaça estas condições? Caso exista, ele é único? Representaremos pn(x) por: pn(x) = a0 + a1x + a2x2 + ... + anxn. Portanto, obter pn(x) significa obter os coeficientes a0, a1, ..., an. Da condição pn(xk) = f(xk), " k = 0, 1, 2, ..., n, montamos o seguinte sistema linear: 70 ( ) ( ) ( )ï ï ï ï î ïï ï ï í ì =++++ =++++ =++++ n n nn 2 n2n10 1 n 1n 2 12110 0 n 0n 2 02010 xfxaxaxaa ...... ...... ...... xfxaxaxaa xfxaxaxaa L L L com n + 1 equações e n + 1 variáveis: a0, a1, ..., an. A matriz A dos coeficientes é A = ÷ ÷ ÷ ÷ ÷ ÷ ÷ ÷ ø ö ç ç ç ç ç ç ç ç è æ n n 2 nn n 1 2 11 n 0 2 00 xxx1 .... .... .... xxx1 xxx1 L L L que é uma matriz de Vandermonde e, portanto, desde que x0, x1, ..., xn sejam pontos distintos, temos det (A) ¹ 0 e, então, o sistema linear admite solução única. Demonstramos assim o seguinte teorema: Teorema 4.1 – Existência e unicidade do Polinômio Interpolador Existe um único polinômio pn(x), de grau £ n, tal que: pn(xk) = f(xk), k = 0, 1, 2, ..., n, desde que xk ¹ xj, j ¹ k. 4.2- Forma de Lagrange do Polinômio de Interpolação Sejam x0, x1, ...,xn, (n + 1) pontos distintos e yi = f(xi), i = 0, ..., n. Seja pn(x) o polinômio de grau £ n que interpola f em x0, ..., xn. Podemos representar pn(x) na forma pn(x) = y0L0(x) + y1L1(x) + ... + ynLn(x), onde os polinômios Lk(x) são de grau n. Para cada i, queremos que a condição pn(xi) = yi seja satisfeita, ou seja: pn(xi) = y0L0(xi) + y1L1(xi) + ... + ynLn(xi) = yi A forma mais simples de se satisfazer esta condição é impor: Lk (xi) = ïî ï í ì = ¹ ikse ikse 1 0 e, para isso, definimos Lk(x) por Lk(x) = ( )( ) ( )( ) ( ) ( )( ) ( )( ) ( )nk1kk1kk1k0k n1k1k10 xxxxxxxxxx xxxxxxxxxx ----- ----- +- +- KK KK . 71 É fácil verificar que realmente Lk(xk) = 1 e Lk(xi) = 0 se i ¹ k. Como o numerador de Lk(x) é um produto de n fatores da forma: ( )ixx - , i = 0, ..., n, i ¹ k, então Lk é um polinômio de grau n e, assim, pn(x) é um polinômio de grau menor ou igual a n. Além disso, para x = xi, i = 0, ..., n temos: ( ) ( ) ( ) iiii n 0k ikkin yxLyxLyxp === å = Então, a forma de Lagrange para o polinômio interpolador é: pn(x) = ( )å = n 0k kk xLy onde ( ) ( ) ( )Õ Õ ¹ = ¹ = - - = n kj 0j jk n kj 0j j k xx xx xL . Exemplo 4.2.1: (Interpolação Linear) Faremos aqui um exemplo teórico para interpolação em dois pontos distintos: (x0, f(xo)) e (x1, f(x1)). Assim, n é igual a 1 e, por isto, a interpolação por dois pontos é chamada interpolação linear. Usando a forma de Lagrange teremos: p1(x) = ( ) ( )xLyxLy 1100 + , onde L0(x) = ( ) ( )10 1 xx xx - - , L1(x) = ( ) ( )01 0 xx xx - - . Assim, p1(x) = ( ) ( ) ( ) ( )01 0 1 10 1 0 xx xx y xx xx y - - + - - , ou seja, 72 p1(x) = ( ) ( ) ( )01 1001 xx yxxyxx - -+- que é exatamente a equação da reta que passa por (x0, f(x0)) e (x1, f(x1)). Exemplo 4.2.2: Seja a tabela: x -1 0 2 f(x) 4 1 -1 Pela forma de Lagrange, temos que: p2(x) = ( ) ( )xLyxLy 1100 + ( )xLy 22+ , onde: L0(x) = ( )( ) ( )( ) ( )( ) ( )( ) 3 x2x 2101 2x0x xxxx xxxx 2 2010 21 -= ---- -- = -- -- L1(x) = ( )( ) ( )( ) ( )( ) ( )( ) 2 2xx 2010 2x1x xxxx xxxx 2 2101 20 - -- = -+ -+ = -- -- L2(x) = ( )( ) ( )( ) ( )( ) ( )( ) 6 xx 0212 0x1x xxxx xxxx 2 1202 10 += -+ -+ = -- -- Assim na forma de Lagrange, p2(x) = ( ) ÷ ÷ ø ö ç ç è æ + -+÷ ÷ ø ö ç ç è æ - -- +÷ ÷ ø ö ç ç è æ - 6 xx 1 2 2xx 1 3 x2x 4 222 Agrupando os termos semelhantes, obtemos que p2(x) = 2x 3 2 x 3 7 1 +- . 4.3 - Forma de Newton do Polinômio de Interpolação A forma de Newton para o polinômio pn(x) que interpola f(x) em x0, x1, ..., xn, (n + 1) pontos distintos é a seguinte: pn(x) = ( ) ( )( ) ( )( ) ( )1n10n102010 xxxxxxdxxxxdxxdd ----++--+-+ LL No que segue, estudaremos: i) o operador diferenças divididas, uma vez que os coeficientes dk, k = 0, 1, ..., n acima são diferenças divididas de ordem k entre os pontos (xj, f(xj)), j = 0, 1, ..., k. ii) a dedução da expressão de pn(x) dada por: pn(x) = ( ) ( )( ) ( )( ) ( )1n10n102010 xxxxxxdxxxxdxxdd ----++--+-+ LL 73 4.3.1- Operador diferenças divididas Seja f(x) uma função tabelada em n + 1 pontos distintos: x0, x1, ..., xn. Definimos o operador diferenças divididas por: [ ] ( ) [ ] [ ] [ ] ( ) ( ) [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ë é - - = - -= - - = - - = - - = = - 0n 1n210n21 n210 03 210321 3210 02 1021 210 01 01 01 01 10 00 xx x,,x,x,xfx,,x,xf x,,x,x,xf .. .. .. xx x,x,xfx,x,xf x,x,x,xf xx x,xfx,xf x,x,xf xx xfxf xx xfxf x,xf xfxf LL L Dizemos que f[x0, x1, ..., xk] é a diferença dividida de ordem k da função f(x) sobre os k + 1 pontos: x0, x1, ..., xk. Dada uma função f(x) e conhecidos os valores que f(x) assume nos pontos distintos x0, x1, ..., xn, podemos construir a tabela: x Ordem 0 Ordem 1 Ordem 2 Ordem 3 ... Ordem n x0 f[x0] F[x0, x1] x1 f[x1] f[x0, x1, x2] F[x1, x2] f[x0, x1, x2, x3] x2 f[x2] f[x1, x2, x3] F[x2, x3] f[x1, x2, x3, x4] . . . x3 f[x3] f[x2, x3, x4] f[x0, x1, x2, ..., xn] F[x3,x4] . . . x4 f[x4] . . . f[xn-3, xn-2, xn-1, xn] . . . . . f[xn-2, xn-1, xn] . . . . . . . F[xn-1, xn] xn f[xn] (Ordem Zero) (Ordem 1) (Ordem 2) (Ordem 3) (Ordem n) 74 Exemplo 4.3.1: Seja f(x) tabelada abaixo X -1 0 1 2 3 f(x) 1 1 0 -1 -2 Sua tabela de diferenças divididas é: x Ordem 0 Ordem 1 Ordem 2 Ordem 3 Ordem 4 -1 1 0 0 1 2 1 - -1 6 1 1 0 0 24 1 - -1 0 2 -1 0 -1 3 -2 Onde f[x0, x1] = [ ] [ ] 0 1 11 xx xfxf 01 01 = - = - - f[x1, x2] = [ ] [ ] 1 01 10 xx xfxf 12 12 -= - - = - - . . . f[x0, x1, x2] = [ ] [ ] 2 1 11 01 xx x,xfx,xf 02 1021 -= + -- = - - f[x1, x2, x3] = [ ] [ ] 0 02 11 xx x,xfx,xf 13 2132 = - +- = - - . . . f[x0, x1, x2, x3] = [ ] [ ] 6 1 12 210 xx x,x,xfx,x,xf 03 210321 = + + = - - Procede-se desta forma até obter-se todos os termos da tabela de diferenças divididas. 75 Propriedade 4.3.1 As formas de diferenças divididas satisfazem a propriedade a seguir: f[x0, x1, ..., xk] é simétrica nos argumentos, ou seja, f[x0, x1, ..., xk] = f[xj0, xj1, ..., xjk] onde j0, j1, ..., jk é qualquer permutação de 0, 1, ..., k. Por exemplo, f[x0, x1] = [ ] [ ] [ ] [ ] [ ]01 10 10 01 01 x,xf xx xfxf xx xfxf = - - = - - . Para k = 2 teremos: f[x0, x1, x2] = f[x0, x2, x1] = f[x1, x0, x2] = f[x1, x2, x0] = f[x2, x0, x1] = f[x2, x1, x0]. 4.3.2- A Forma de Newton do polinômio interpolador Seja f(x) contínua e com tantas derivadas contínuas quantas necessárias num intervalo [a, b]. Sejam a = x0 < x1 < x2 < ... < xn = b, (n + 1) pontos. Construiremos o polinômio pn(x) que interpola f(x) em x0, x1, ..., xn. Iniciaremos a construção obtendo p0(x) que interpola f(x) em x = x0. E assim, sucessivamente, construiremos pk(x) que interpola f(x) em x0, x1, ..., xk, k = 0, 1, ..., n. Seja p0(x) o polinômio de grau 0 que interpola f(x) em x = x0. Então, p0(x) = f(x0) = f[x0]. Temos que, para todo x Î [a, b], x ¹ x0 [ ] [ ] [ ] ( ) ( ) ( ) [ ] ( ) ( ) ( ) ( ) ( ) ( ) [ ] ( ) ( ) ( ) ( ) ( ) [ ]x,xfxxxpxfxE x,xfxxxfxf xfxfx,xfxx xx xfxf xx xfxf x,xf 0000 xE 00 xp 0 000 0 0 0 0 0 0o -=-=Þ -+=Þ Þ-=-Þ Þ - - = - - = 44 344 21321 Note que E0(x) = f(x)-p0(x) é o erro cometido ao se aproximar f(x) por p0(x). Seja agora construir p1(x), o polinômio de grau £ 1 que interpola f(x) em x0 e x1. Temos que [ ] [ ] [ ] [ ] ( ) ( ) [ ] ( ) ( ) ( ) ( ) [ ] ( )( )01 0100 1 01 0 0 1 010 0110 xxxx x,xfxxxfxf xx x,xf xx xfxf xx x,xfx,xfx,x,xfx,x,xf -- --- = - - - - = = - -== 76 [ ] ( ) ( ) ( ) [ ]( )( ) ( ) ( ) ( ) [ ] ( ) ( )( ) [ ] ( ) 4444 34444 214444 34444 21 xE 1010 xp 0100 10 0100 10 11 x,x,xfxxxxx,xfxxxfxf xxxx x,xfxxxfxf x,x,xf --+-+=Þ Þ -- --- =Þ Assim, p1(x) = ( ) ( ) ( ) [ ] ( ) 444 3444 21321 xq 100 xp 0 10 x,xfxxxf -+ e E1(x) = ( )( ) [ ]x,x,xfxxxx 1010 -- . Verificação: p1(x) interpola f(x) em x0 e em x1? p1(x0) = f(x0) p1(x1) = f(x0) + (x1 – x0) ( ) ( ) ( )1 01 01 xf xx xfxf = - - . Seja agora construir p2(x) , o polinômio de grau £ 2 que interpola f(x) em x0, x1, x2. Temos que: f[x0, x1, x2, x] = f[x2, x1, x0, x] = [ ] [ ] = - - 2 01201 xx x,x,xfx,x,xf [ ] [ ] [ ] ( ) ( ) ( ) ( ) [ ] ( ) [ ] ( ) =- - - - - - = = - - - - = 2 012 1 01 0 0 2 012 1 010 xx x,x,xf xx x,xf xx xfxf xx x,x,xf xx x,xfx,xf ( ) ( ) ( ) [ ] ( )( ) [ ] ( )( )( ) Þ--- ------ = 210 012100100 xxxxxx x,x,xfxxxxx,xfxxxfxf Þ ( ) ( ) ( ) [ ] ( )( ) [ ] ( )( )( ) [ ]x,x,x,xfxxxxxx x,x,xfxxxxx,xfxxxfxf 210210 210101000 ---+ +--+-+= Então, p2(x) = ( ) ( ) [ ] ( ) ( )( ) [ ] ( ) 44444 344444 214444 34444 21 xq 21010 xp 1000 21 x,x,xfxxxxx,xfxxxf --+-+ e E2(x) = (x – x0)(x – x1)(x – x2)f[x0, x1, x2, x]. 77 Observamos que, assim como para p1(x) e p2(x), pk(x) = pk–1(x) + qk(x), onde qk(x) é um polinômio de grau k. Aplicando sucessivamente o mesmo raciocínio para x0, x1, x2, x3; x0, x1, x2, x3, x4; . . . x0, x1, x2, ..., xn, teremos a forma de Newton para o polinômio de grau £ n que interpola f(x) em x0, ..., xn: pn(x) = f(x0) + (x – x0)f[x0, x1] + (x – x0)(x – x1)f[x0, x1, x2] + ... + + ... + (x – x0)(x – x1)...(x – xn–1)f[x0, x1, ..., xn] e o erro é dado por: En(x) = (x – x0)(x – x1) ... (x – xn)f[x0, x1, ..., xn, x] De fato, pn(x) interpola f(x)em x0, x1, ..., xn, pois sendo f(x) = pn(x) + En(x), então para todo nó xk, k = 0, ..., n, temos: f(xk) = pn(xk) + ( ) ( )kn 0 kn xpxE = = 43421 . Exemplo 4.3.2: Usando a forma de Newton, o polinômio p2(x), que interpola f(x) nos pontos dados abaixo, é: x -1 0 2 f(x) 4 1 -1 p2(x) = f(x0) + (x – x0)f[x0, x1] + (x – x0)(x – x1)f[x0, x1, x2]. x Ordem 0 Ordem 1 Ordem 2 -1 4 -3 0 1 2/3 -1 2 -1 p2(x) = 4 + (x + 1)(-3) + (x + 1)(x - 0)(2/3) Observamos que, agrupando os termos semelhantes, obtemos p2(x) = 1x 3 7 x 3 2 2 +- , que é a mesma expressão obtida no exemplo 2. 78 Observamos ainda que é conveniente deixar o polinômio na forma de Newton, sem agrupar os termos semelhantes, pois, quando calcularmos o valor numérico de pn(x), para x = a , evitaremos o cálculo de potências. O número de operações pode ainda ser reduzido se usarmos a forma dos parênteses encaixados descrita a seguir: Dado: pn(x) = f(x0) (x – x0)f[x0, x1] + (x – x0)(x –x1)f[x0, x1, x2] + + (x – x0)(x – x1)(x – x2)f[x0, x1, x2, x3] + ... + + (x – x0)(x – xi)...(x – xn–1)f[x0, x1, x2, ..., xn] temos que: pn(x) = f(x0) + (x – x0){f[x0, x1] + (x – x1){f[x0, x1, x2] + + (x – x2){f[x0, x1, x2, x3] + ... + (x – xn–1)f[x0, x1, ..., xn]...}}}. Um algoritmo para se calcular pn(a ) usando esta forma de parênteses encaixados será visto na lista de exercícios no final deste capítulo.
Compartilhar