1 Métodos Computacionais em Engenharia – DCA0304 Capítulo 3 3. Interpolação 3.1. Introdução Quando se trabalha com sistemas onde não é conhecida uma função que descreva seu comportamento, podemos utilizar o conceito de interpolação. Há casos também em que a forma analítica de uma determinada função é muito complexa, e podemos substituí-la por uma função aproximada que possua uma forma analítica mais simples. Seja uma função y = f (x) dada pela tabela: i xi yi 0 x0 y0 1 2 3 x1 x2 x3 y1 y2 y3 Quando o problema consistir em determinar f (x ) sendo x ∈ ( x0 , x3 ) com x = xi , i = 0,1,2,3 , estamos nos deparando com um problema de interpolação. Quando o problema consistir em determinar f (x ) sendo x ∉ ( x0 , x3 ) estamos nos deparando com um problema de extrapolação e não será nosso objeto de estudo. 3.2. Interpolação Linear O termo interpolação linear encontrado nas literaturas é um tanto quanto inadequado para essa aproximação. Um termo mais adequado seria interpolação de primeiro grau ou interpolação afim. Uma função do primeiro grau é linear, quando passa pela origem. A interpolação dita linear é obtida pela aproximação de uma determinada função onde se conhecem dois pontos por uma função de primeiro grau, ou seja: dados dois pontos distintos de uma função y = f ( x) : ( x0 , y 0 ) e ( x1 , y1 ) , deseja-se calcular o valor de y para um determinado valor de x entre x0 e x1 usando um polinômio de primeiro grau. O polinômio em questão é dado por: P1 ( x) = a 1 x + a 0 Para obter os coeficientes de P1 ( x) devemos fazer: P1 ( x0 ) = y 0 =a 1 x0 + a 0 P1 ( x1 ) = y1 = a 1 x1 + a 0 Dessa forma encontramos os coeficientes resolvendo o sistema: UFRN/CT/DCA Capítulo 3 – Interpolação - Anderson Luiz de Oliveira Cavalcanti 2 a1 x0 + a 0 = y 0 a1 x1 + a 0 = y1 Este sistema tem matriz dos coeficientes: x 1 A= 0 x1 1 O determinante de A é dado por x0 − x1 , ou seja, sempre que x0 ≠ x1 o determinante será diferente de zero e conseqüentemente o sistema possui solução única. Exemplo 3.1 Seja a função y = f (x) definida pelos pontos (0,00;1,35) e (1,00;2,94). Determinar aproximadamente o valor de f (0,73) . Tomando como referência um polinômio interpolador de primeiro grau teremos: P1 ( x) = a1 x + a 0 . Logo: P1 (0) = a 1 .0 + a 0 = 1,35 P1 (1) =a 1 .1 + a 0 = 2,94 Assim temos que: a 0 = 1,35 e a1 = 1,59 . Desse modo, P1 ( x) = 1,59 x + 1,35 e P (0,73) = 1,59.0,73 + 1,35 = 2,51 . Este resultado possui tanto erro de arredondamento como de truncamento. O erro de arredondamento é cometido durante a execução das operações e o erro de truncamento é devido ao fato de o polinômio interpolador ser uma aproximação da função real. 3.2.1. Erro de Truncamento para Interpolação por Polinômio de Primeiro Grau Supondo que a curva f (x) e o polinômio interpolador P1 ( x) sejam como ilustrado abaixo: O erro de truncamento, com pode ser facilmente visto, é dado por: ET ( x ) = f ( x ) − P1 ( x ) UFRN/CT/DCA Capítulo 3 – Interpolação - Anderson Luiz de Oliveira Cavalcanti 3 Sabendo que o erro de truncamento é nulo nos pontos x0 e x1 podemos considerar que o mesmo é expresso como: ET ( x) = ( x − x 0 )( x − x1 ). A em que A é uma constante que queremos determinar. Considerando uma função auxiliar dada por: G (t ) = f (t ) − P1 (t ) − ET (t ) e substituindo P1 (t ) = a 1 t + a 0 ET (t ) = (t − x 0 )(t − x1 ). A t teremos que G (t ) = f (t ) − (a 1 t + a 0 ) − ( x − x 0 )( x − x1 ). A É possível provar que G (t ) é diferenciável em ( x0 , x1 ) de modo a existir um certo ε ∈ ( x0 , x1 ) tal que G" (ε ) = 0 . Assim, encontrando a derivada segunda de G (t ) teremos que: G" (t ) = f " (t ) − 2 A = 0 o que resulta, fazendo t = ε , em: A= f " (ε ) 2 Desse modo o erro de truncamento será: ET ( x) = ( x − x 0 )( x − x1 ). f " (ε ) 2 Exemplo 3.2 Seja a função f ( x) = x 2 − 3 x + 1 , usando os valores x1 = 1 e x 2 = 1,5 , e os valores correspondentes f ( x1 ) = −1 e f ( x 2 ) = −1,25 , calcule: a) o valor aproximado para f (1,2) b) o erro de truncamento cometido no cálculo anterior a) Aproximando a função f (x) por um polinômio de primeiro grau teremos P1 ( x) = a1 x + a 0 . Assim: P1 (1) =a 1 + a 0 = −1 P1 (1,5) = a 1 .1,5 + a 0 = −1,25 Os coeficientes do polinômio são a 0 = −0,5 e a1 = −0,5 P1 ( x) = −0,5 x − 0,5 . Desse modo P1 (1,2) = −1,10 . UFRN/CT/DCA Capítulo 3 – Interpolação - Anderson Luiz de Oliveira Cavalcanti de forma que 4 b) f ( x) = x 2 − 3 x + 1 f ' ( x) = 2 x − 3 f " ( x) = 2, ∀x ET (1,2) = (1,2 − 1)(1,2 − 1,5). ET (1,2) = −0,06 2 2 3.3. Interpolação Quadrática Quando conhecemos, do comportamento de uma função, três pontos distintos, podemos utilizar um polinômio da forma: P2 ( x) = a 2 x 2 + a1 x + a 0 De uma maneira geral pode-se provar que conhecendo-se n pontos de uma função poderemos escreve-la como um polinômio de grau n − 1 . Para determinar os valores de a 2 , a1 e a 0 deveremos resolver o sistema: a 2 x0 2 + a1 x0 + a 0 = y 0 2 a 2 x1 + a1 x1 + a 0 = y1 2 a 2 x 2 + a1 x 2 + a 0 = y 2 em que os pontos ( x0 , y 0 ) , ( x1 , y1 ) e ( x 2 , y 2 ) são conhecidos. A matriz dos coeficientes é dada por: x02 A = x12 x 22 x0 1 x1 1 x 2 1 O determinante da matriz dos coeficientes é conhecido como o determinante de Vandermonde e é dado por: det( A) = ( x1 − x0 )( x 2 − x0 )( x 2 − x1 ) Como os pontos x0 , x1 e x 2 são distintos, logo det( A) ≠ 0 e o sistema terá solução única. Exemplo 3.3 Dada a função f ( x) = 2 sen 2 x , conhece-se a tabela abaixo com seus valores, com três x +1 casa decimais: UFRN/CT/DCA Capítulo 3 – Interpolação - Anderson Luiz de Oliveira Cavalcanti 5 x 0 π 6 π 4 f (x) 0,00 0,328 0,560 Pede-se para encontrar o polinômio interpolador de segundo grau. Os coeficientes do polinômio podem ser encontrados resolvendo o sistema abaixo: f (0) = a 2 .0 2 + a1 .0 + a 0 = 0 2 f (π 6) = a 2 .(π 6) + a1 .(π 6) + a 0 = 0,328 2 f (π 4) = a 2 .(π 4) + a1 .(π 4) + a 0 = 0,560 Resolvendo o sistema por alguns dos métodos estudados no capítulo 2 teremos que: a0 = 0 a1 = 0,452 a 2 = 0,333 o que resulta no polinômio P2 ( x) = 0,333 x 2 + 0,452 x . 3.3.1. Erro de Truncamento para Interpolação por Polinômio de Segundo Grau O erro de truncamento para este caso pode ser obtido de maneira análoga a do polinômio de primeiro grau e é dado por: ET ( x) = ( x − x 0 )( x − x1 )( x − x 2 ). f 3 (ε ) 6 em que f 3 ( x) é a derivada terceira da função f (x) . Exemplo 3.4 Determinar o valor aproximado de f (0,2) e o seu respectivo erro de truncamento ao utilizar uma interpolação quadrática. Os valores tabelados são da função f ( x) = x 2 − 2 x + 1 . Pede-se para trabalhar com duas casas decimais. x 0,5 0,3 0,1 f (x) 0,25 0,49 0,81 Para calcular o polinômio interpolador P2 ( x) = a 2 x 2 + a1 x + a 0 deve-se resolver o sistema de equações: UFRN/CT/DCA Capítulo 3 – Interpolação - Anderson Luiz de Oliveira Cavalcanti 6 0,25a 2 + 0,5a1 + a 0 = 0,25 0,09a 2 + 0,3a1 + a 0 = 0,49 0,01a + 0,1a + a = 0,81 2 1 0 Resolvendo o sistema por alguns dos métodos estudados no capítulo anterior obteremos o seguinte resultado: a 0 = 1,00 a1 = −2,00 a 2 = 1,00 Observa-se neste caso que o polinômio interpolador é exatamente igual à função que se deseja interpolar. Isso ocorre porque o polinômio é de 2º grau e, a partir de três pontos, consegue-se determina-la sem erro de truncamento. Assim: P2 ( x) = x 2 − 2 x + 1 ⇒ P2 (0,2) = 0,64 Sem nenhum cálculo é possível verificar que o erro de truncamento é zero. Porém pode encontrar a derivada terceira da função para verificar. f ( x) = x 2 − 2 x + 1 f ' ( x) = 2 x − 2 f " ( x) = 2 f ' ' ' ( x) = 0, ∀x Assim o erro de truncamento é ET ( x) = 0 . 3.4. Interpolação de Lagrange As interpolações vistas anteriormente são casos particulares da interpolação de Lagrange. Aqui mostraremos a interpolação por um polinômio de grau menor ou igual a n sendo dados n + 1 pontos. Este polinômio pode ser escrito da forma: Pn ( x) = a n x n + L + a 2 x 2 + a1 x + a 0 ou n Pn ( x) = ∑ ai x i i =0 Para encontrar os coeficientes de Pn (x) devemos achar a solução para o sistema abaixo, conhecidos os pontos ( xi , y i ) para i = 1,2, L , n . UFRN/CT/DCA Capítulo 3 – Interpolação - Anderson Luiz de Oliveira Cavalcanti 7 a 0 + a1 x0 + a 2 x02 + L + a n x0n = y 0 2 n a 0 + a1 x1 + a 2 x1 + L + a n x1 = y1 M 2 a + a x + a x + L + a x n = y 1 n 2 n n n n 0 Para provar que o sistema é determinado e possui solução única verificamos se a matriz dos coeficientes possui determinante diferente de zero. Matriz é dada por: 1 x0 1 x1 A= M M 1 x n x02 L x0n x12 L x1n M O M x n2 L x nn O determinante de A é conhecido como determinante de Vandermonde e é calculado da forma: det( A) = ∏ ( xi − x j ) i> j e como xi ≠ x j para i ≠ j , teremos que det( A) ≠ 0 , logo Pn (x) é único. Sejam os n + 1 polinômios pi (x) de grau n chamados de polinômios de Lagrange: p 0 ( x) = ( x − x1 )( x − x 2 )...( x − x n ) p ( x) = ( x − x )( x − x )...( x − x ) 1 0 2 n M p n ( x) = ( x − x0 )( x − x1 )...( x − x n −1 ) ou de forma sintética: n pi ( x) = ∏ ( x − x j ) com i ≠ j e i = 0,1,2, L, n j =0 Este polinômios são tais que pi ( xi ) ≠ 0 para todo i e pi ( x j ) = 0 para i ≠ j . Como o polinômio P (x) que se deseja encontrar é de grau n e contém os pontos ( xi , y i ) para i = 0,1,2, L, n , podemos escreve-lo como uma combinação linear dos polinômios pi (x) para i = 0,1,2, L , n , ou seja: n Pn ( x) = ∑ b i pi ( x) i =0 desse modo, para encontrar o polinômio interpolador devemos encontrar os valores de bi para i = 0,1,2, L, n , visto que pi (x) para todo i é facilmente encontrado. Fazendo, UFRN/CT/DCA Capítulo 3 – Interpolação - Anderson Luiz de Oliveira Cavalcanti 8 n Pn ( x k ) = ∑ b i pi ( x k ) =b 0 p 0 ( x k ) +b1 p1 ( x k ) + L +b k p k ( x k ) + L +b n p n ( x k ) i =0 porém como pi ( x j ) = 0 para i ≠ j e pi ( xi ) ≠ 0 então: Pn ( x k ) =b k p k ( x k ) assim, Pn ( x k ) pk ( xk ) bk = Como Pn ( xi ) = y i , teremos que: yi pi ( xi ) bi = Assim, teremos que: n Pn ( x) = ∑ y i ⋅ i =0 pi ( x) p i ( xi ) ou ainda: n n (x − x j ) i =0 j =0 ( xi − x j ) Pn ( x) = ∑ y i ⋅ ∏ com i ≠ j que é a fórmula da interpolação de Lagrange. Exemplo 3.5 Considerando a tabela abaixo: i xi yi 0 1 2 3 0,0 0,2 0,4 0,5 0,000 2,008 4,064 5,125 a) Ache o polinômio interpolador de Lagrange para a função que determina os pontos tabelados. b) Calcule P (0,3) 3 3 (x − x j ) i =0 j =0 ( xi − x j ) a) P3 ( x) = ∑ y i ⋅ ∏ UFRN/CT/DCA Capítulo 3 – Interpolação - Anderson Luiz de Oliveira Cavalcanti 9 P3 ( x) = y 0 ⋅ y2 ⋅ P3 ( x) = ( x − x1 )( x − x 2 )( x − x3 ) ( x − x0 )( x − x 2 )( x − x3 ) + y1 ⋅ + ( x0 − x1 )( x0 − x 2 )( x0 − x3 ) ( x1 − x0 )( x1 − x 2 )( x1 − x3 ) ( x − x0 )( x − x1 )( x − x3 ) ( x − x0 )( x − x1 )( x − x 2 ) + y3 ⋅ ( x 2 − x0 )( x 2 − x1 )( x 2 − x3 ) ( x3 − x0 )( x3 − x1 )( x3 − x 2 ) 2,008 3 4,064 3 5,125 3 ( x − 0,9 x 2 + 0,2 x) + ( x − 0,7 x 2 + 0,1x) + ( x − 0,6 x 2 + 0,08 x) 0,012 − 0,008 0,015 P3 ( x) = x 3 + 10 x b) P3 (0,3) = 3,027 3.4.1. Erro de Truncamento para Interpolação de Lagrange O erro de truncamento pode ser demonstrado do mesmo modo que os erros de truncamento para a interpolação por polinômios de primeiro e segundo grau. O erro de truncamento no caso generalizado de Lagrange é dado por: ET = ( x − x0 )( x − x 2 ) L ( x − x n ). f ( n +1) (ε ) (n + 1)! em que f ( n+1) ( x) é a n + 1 derivada de f (x) . 3.5. Diferenças Divididas O conceito de diferença dividida é baseado na definição de derivada. Definimos a diferença dividida de primeira ordem como sendo: f [ xi , xi +1 ] = yi +1 − yi xi +1 − xi Ainda podemos utilizar a seguinte notação f [ xi , xi +1 ] = ∆/yi . A diferença dividida de ordem zero é definida como ∆/0 y i = f [ xi ] = y i . As diferenças divididas de ordem superior são definidas em função de diferenças divididas de ordem inferior, ou seja, de uma maneira geral teremos que: ∆/n y i = f [ xi , xi +1 , L , xi + n ] = ∆/n −1 y i +1 − ∆/n −1 y i xi + n − xi 3.6. Fórmula de Newton para Interpolação com Diferenças Divididas Sejam os pontos ( xi , y i ) para i = 0,1, L , n e Pn (x) o polinômio interpolador de grau n que conterá estes pontos. O polinômio interpolador de Newton é dado por: Pn ( x) = a 0 + a1 ( x − x0 ) + a 2 (x − x0 )(x − x1 ) + L + a n (x − x0 )(x − x1 )L ( x − x n −1 ) UFRN/CT/DCA Capítulo 3 – Interpolação - Anderson Luiz de Oliveira Cavalcanti 10 ou se forma sintética: n i −1 i =0 j =0 Pn ( x) = ∑ ai ∏ (x − x j ) Deseja-se encontrar os coeficientes ai para i = 0,1, L , n . Como o objetivo da interpolação é fazer com que os pontos conhecidos sejam também pontos do polinômio interpolador, teremos que Pn ( xi ) = y i , assim: Para x = x0 teremos que Pn ( x0 ) = y 0 = a0 Para x = x1 teremos que Pn ( x1 ) = y1 = a0 + a1 ( x − x0 ) , ou seja, como a 0 = y 0 então: a1 = ∆/y 0 = y1 − y 0 x1 − x0 Para x = x1 teremos que Pn ( x 2 ) = y 2 = a 0 + a1 ( x 2 − x0 ) + a 2 ( x 2 − x0 )( x 2 − x1 ) , então: ( x 2 − x0 )( x 2 − x1 )a 2 = y 2 − y 0 − ∆/y 0 ( x 2 − x0 ) ( x 2 − x0 )( x 2 − x1 )a 2 = y 2 − y1 − ∆/y 0 ( x 2 − x0 ) + y1 − y 0 ( y − y0 ) ( x 2 − x0 )( x 2 − x1 )a 2 = y 2 − y1 − ∆/y 0 ( x 2 − x0 ) + 1 .( x1 − x0 ) ( x1 − x0 ) ( x 2 − x0 )( x2 − x1 )a 2 = y 2 − y1 − ∆/y 0 ( x2 − x0 − x1 + x0 ) ( x 2 − x0 )( x 2 − x1 )a 2 = y 2 − y1 − ∆/y 0 ( x 2 − x1 ) Como ∆/y1 = y 2 − y1 então ( x 2 − x0 )a 2 = ∆/y1 − ∆/y 0 o que implica que: x 2 − x1 a 2 = ∆/2 y 0 = ∆/y1 − ∆/y 0 x 2 − x0 De maneira análoga podemos concluir que: a n = ∆/n y 0 = ∆/n −1 y1 − ∆/n −1 y 0 x n − x0 Dessa forma, o polinômio interpolador de Newton pode ser calculado por: n i −1 i =0 j =0 Pn ( x) = ∑ ∆/i y 0 ∏ (x − x j ) Exemplo 3.6 Determinar o valor aproximado de f (0,4) pelo método de Newton, usando todos os pontos tabelados da função f (x) . UFRN/CT/DCA Capítulo 3 – Interpolação - Anderson Luiz de Oliveira Cavalcanti 11 Devemos em primeiro lugar montar a tabela com todas as possíveis diferenças divididas e em seguida aplicarmos a fórmula do método se Newton . A tabela é a seguinte: i xi yi ∆/y i 0 1 2 3 4 0,0 0,2 0,3 0,5 0,6 1,008 1,064 1,125 1,343 1,512 0,28 0,61 1,09 1,69 - ∆/2 y i 1,1 1,6 2,0 - ∆/3 y i 1,0 1,0 - ∆/4 y i 0,0 - f (0,4) = P4 (0,4) = y 0 + (0,4 − x0 ).∆/y 0 + (0,4 − x0 )(0,4 − x1 ).∆/2 y 0 + (0,4 − x0 )(0,4 − x1 )(0,4 − x 2 ).∆/3 y 0 + (0,4 − x0 )(0,4 − x1 )(0,4 − x 2 )(0,4 − x3 ).∆/4 y 0 f (0,4) = P4 (0,4) = 1,216 3.6.1. Erro de Truncamento para Interpolação pelo Polinômio de Newton O erro de truncamento é calculado da mesma forma que na interpolação pelo polinômio de Lagrange. Isso ocorre por se tratar do mesmo problema, ou seja, conhece-se (n + 1) pontos tabelados e deseja-se encontrar um polinômio interpolador de grau n . 3.7. Interpolação pela Fórmula de Gregory-Newton Este é um caso particular da interpolação pelo método de Newton. Neste caso consideram-se pontos igualmente espaçados. Neste caso, teríamos que xi +1 − xi = h em que h é uma constante. Neste caso, definiremos uma variável auxiliar: z= x − x0 h Logo, ( x − x0 ) = zh ( x − x1 ) = ( x − ( x0 + h)) = x − x0 − h = zh − h = h( z − 1) ( x − x 2 ) = ( x − ( x0 + 2h)) = x − x0 − 2h = zh − 2h = h( z − 2) M ( x − x n −1 ) = ( x − ( x0 + (n − 1)h)) = x − x0 − (n − 1)h = zh − (n − 1)h = h( z − (n − 1)) Aplicando esses valores na fórmula de Newton, teremos: Pn ( x) = y 0 + hz∆/y 0 + h 2 z ( z − 1)∆/2 y 0 + L + h n z ( z − 1) L ( z − (n − 1))∆/n y 0 Introduziremos agora o conceito de diferença finita, o qual é válido para pontos igualmente espaçados: UFRN/CT/DCA Capítulo 3 – Interpolação - Anderson Luiz de Oliveira Cavalcanti 12 - De ordem zero: ∆0 y i = y i De primeira ordem: ∆y i = y i +1 − y i - De segunda ordem: ∆2 y i = ∆y i +1 − ∆y i - De ordem n : ∆n y i = ∆n −1 y i +1 − ∆n −1 y i - Relacionaremos as diferenças divididas com as diferenças finitas através da seguinte expressão: ∆/n y i = ∆n y i n!h n Dessa forma, teremos que: Pn ( x) = y 0 + hz ∆y 0 ∆2 y 0 ∆n y 0 n h z ( z 1 ) ( z ( n 1 )) + h 2 z ( z − 1) + L + − L − − 1!h 2!h 2 n!h n Isso nos leva a: Pn ( x) = y 0 + z ( z − 1) 2 z ( z − 1) L ( z − (n − 1)) n z ⋅ ∆y 0 + ⋅ ∆ y0 + L + ⋅ ∆ y0 1!h 2! n! Exemplo 3.7 A tabela abaixo mostra o crescimento populacional da cidade de Belo Horizonte no decorrer dos anos. Pede-se para estimar a população da cidade no ano de 1975. i xi yi ∆y i 0 1 2 3 1950 1960 1970 1980 352.724 683.908 1.235.030 1.814.990 331.184 551.122 579.960 - ∆2 y i 219.938 28.838 - Calculando o valor da variável auxiliar teremos que: z= x − x0 1975 − 1950 = = 2,5 h 10 O calculo do polinômio interpolador no ponto 1975 é dado por: P3 (1975) = 352.724 + 2,5 ⋅ 331.184 + + 2,5(2,5 − 1) ⋅ 219.938 2! 2,5(2,5 − 1)(2,5 − 2) ⋅ (−191.100) 3! UFRN/CT/DCA Capítulo 3 – Interpolação - Anderson Luiz de Oliveira Cavalcanti ∆3 y i -191.100 - 13 P3 (1975) = 1.533.349 Em 1975, Belo Horizonte tinha, aproximadamente 1.533.349 habitantes. 3.7.1. Erro de Truncamento para a Fórmula de Gregory-Newton O erro de truncamento é dado por: ET = h n +1 z ( z − 1)( z − 2) L ( z − n) ⋅ f n +1 (ε ) (n + 1)! UFRN/CT/DCA Capítulo 3 – Interpolação - Anderson Luiz de Oliveira Cavalcanti