Introdução aos Métodos Numéricos Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho
Conteúdo temático
Conteúdo específico Aspectos básicos Obtenção direta de funções interpoladoras polinomial Um exemplo simples
Temos um conjunto de n+1 pontos distintos (x 0, y 0 ),(x 1, y 1 ),( x 2, y 2 ),(x 3, y 3 ),,(x n, y n ) que são oriundos de uma função f(x). Como fazemos se queremos calcular a função num ponto w diferente dos demais?
Este problema se torna interessante quando a função f(x) em questão é de custo computacional muito alto no seu cálculo direto, de forma que podemos ter a resolução de problemas inviabilizadas por este custo.
Este problema se torna interessante quando a função f(x) em questão é de custo computacional muito alto no seu cálculo direto, de forma que podemos ter a resolução de problemas inviabilizadas por este custo. O cálculo alternativo deverá ser de custo computacional mais baixo que o custo de cálculo direto da função.
Este problema se torna interessante quando a função f(x) em questão é de custo computacional muito alto no seu cálculo direto, de forma que podemos ter a resolução de problemas inviabilizadas por este custo. O cálculo alternativo deverá ser de custo computacional mais baixo que o custo de cálculo direto da função. A precisão deverá ser compatível com nossas necessidades
Podemos pensar na seguinte linha: Encontrarmos uma função que agregue os pontos e algumas das propriedades da função original, f(x)
Podemos pensar na seguinte linha: Encontrarmos uma função que agregue os pontos e algumas das propriedades da função original, f(x) Chamaremos esta nova função de F(x)
Podemos pensar na seguinte linha: Encontrarmos uma função que agregue os pontos e algumas das propriedades da função original, f(x) Chamaremos esta nova função de F(x) Mas qual a cara desta função?
Podemos pensar na seguinte linha: Encontrarmos uma função que agregue os pontos e algumas das propriedades da função original, f(x) Chamaremos esta nova função de F(x) Mas qual a cara desta função? Como escolher uma função suficientemente flexível e simples?
No mínimo a função F(x) deve ser igual à função f(x) no pontos que temos, ou seja, F( x i )=f (x i );i=1,,n
Faremos a proposta m F( x)=a 0 f 0 (x)+a 1 f 1 (x)+a 2 f 2 (x)+ +a m f m ( x)= a j f j (x) j=0 ou seja, F(x) é uma combinação linear de funções, a priori, quaisquer. Exijamos que ela seja idêntica nos valores que temos de f(x)
Isto nos leva a F( x 0 )=a 0 f 0 (x 0 )+a 1 f 1 (x 0 )+a 2 f 2 (x 0 )+ +a m f m ( x 0 )= y 0 F( x 1 )=a 0 f 0 ( x 1 )+a 1 f 1 ( x 1 )+a 2 f 2 (x 1 )+ +a m f m (x 1 )= y 1 F (x 2 )=a 0 f 0 (x 2 )+a 1 f 1 (x 2 )+a 2 f 2 (x 2 )+ +a m f m (x 2 )= y 2 F( x n )=a 0 f 0 (x n )+a 1 f 1 (x n )+a 2 f 2 (x n )+ +a m f m ( x n )= y n Repare que você conhece isto. Façamos uma arrumação...
( f 0(x0) f 1(x0) f 2(x0) f 3(x0) f m(x0) f 0 (x 1 ) f 1 (x 1 ) f 2 (x 1 ) f 3 (x 1 ) f m (x 1 ) f 0 (x 2 ) f 1 (x 2 ) f 2 (x 2 ) f 3 (x 2 ) f m (x 2 ) f 0 (x 3 ) f 1 (x 3 ) f 2 (x 3 ) f 3 (x 3 ) f m (x 3 ) f 0 (x n ) f 1 (x n ) f 2 (x n ) f 3 (x n ) f m (x n )) ( )=( a0 y0 a 1 y 1 a 2 y 2 a 3 y 3 a m y n ) Matriz (n+1)x(m+1) Para termos solução e esta ser única é necessário que
( f 0(x0) f 1(x0) f 2(x0) f 3(x0) f m(x0) f 0 (x 1 ) f 1 (x 1 ) f 2 (x 1 ) f 3 (x 1 ) f m (x 1 ) f 0 (x 2 ) f 1 (x 2 ) f 2 (x 2 ) f 3 (x 2 ) f m (x 2 ) f 0 (x 3 ) f 1 (x 3 ) f 2 (x 3 ) f 3 (x 3 ) f m (x 3 ) f 0 (x n ) f 1 (x n ) f 2 (x n ) f 3 (x n ) f m (x n )) ( )=( a0 y0 a 1 y 1 a 2 y 2 a 3 y 3 a m y n ) Matriz (n+1)x(m+1) Para termos solução e esta ser única é necessário que A matriz seja quadrada O determinante seja não nulo
A matriz ser quadrada implica que o número de pontos (n+1) deverá ser igual ao número de funções (m+1) na combinação linear que constitui F(x)
A matriz ser quadrada implica que o número de pontos (n+1) deverá ser igual ao número de funções (m+1) na combinação linear que constitui F(x) O determinante ser não nulo implica que: nenhuma linha é combinação linear das demais nenhuma coluna é combinação linear das demais
nenhuma linha ser combinação linear das demais implica que não termos pontos duplicados
nenhuma linha ser combinação linear das demais implica que não termos pontos duplicados nenhuma coluna ser combinação linear das demais implica que as funções f i (x) devem ser linearmente independentes. Ou seja, que não podemos representar uma delas como combinação linear das outras
Garantidas estas condições, a resolução do sistema abaixo nos dará a solução para o nosso problema ( f 0(x0) f 1(x0) f 2(x0) f 3(x0) f n(x0) f 0 (x 1 ) f 1 (x 1 ) f 2 (x 1 ) f 3 (x 1 ) f n (x 1 )) ) f 0 (x 2 ) f 1 (x 2 ) f 2 (x 2 ) f 3 (x 2 ) f n (x 2 ) f 0 (x 3 ) f 1 (x 3 ) f 2 (x 3 ) f 3 (x 3 ) f n (x 3 ) f 0 (x n ) f 1 (x n ) f 2 (x n ) f 3 (x n ) f n (x n Existem boas escolhas para as funções. Mostraremos uma importante (mas não a melhor...) ( a0 a 1 a n)=( y0 y 1 2 y n) 2 a 3 y 3 a y
polinomial Nossa F(x) será f i ( x)=x i F( x)=a 0 x 0 +a 1 x 1 +a 2 x 2 + +a n x n =a 0 +a 1 x+a 2 x 2 + +a n x n = p n (x) e nossa matriz tomará a forma
(1 2 x0 x0 2 1 x 1 x 1 2 1 x 2 x 2 2 1 x 3 x 3 x 0 3 x 1 3 x 2 3 x 3 3 x 0 n x 1 n x 2 n n) 2 3 1 x n x n x n x n x 3 n ( a0 a 1 a n)=( y0 y 1 2 y n) 2 a 3 y 3 a y conhecida como matriz de Vandermonde e p n ( x)=a 0 +a 1 x+a 2 x 2 + +a n x n
Assim necessitaremos de resolver este sistema para obtermos o polinômio interpolador. Já vimos que o custo computacional de resolver um sistema de equações geral é O(n 3 ), ou seja, muito alto Mas este não é um sistema geral pois tem uma estrutura muito específica
A matriz de Vandermonde (1 2 x0 x0 2 1 x 1 x 1 2 1 x 2 x 2 2 1 x 3 x 3 x 0 3 x 1 3 x 2 3 x 3 3 tem como determinante x 0 n x 1 n x 2 n n) 2 3 1 x n x n x n x n 1 i j n x 3 n (x j x i ) ( a0 a 1 a n)=( y0 y 1 2 y n) 2 a 3 y 3 a y
Para entender melhor, se a matriz fosse o determinante seria (1 2 x0 x0 2 1 x 1 x 1 2 1 x 2 x 2 1 x 3 x 3 2 3 x 0 3 x 1 3)( a0 a 1 3)=( y0 y 1 3) 3 x 2 a 2 y 2 x 3 a y (x 1 x 0 )(x 2 x 0 )(x 2 x 1 )(x 3 x 0 )(x 3 x 1 )(x 3 x 2 ) de custo computacional O(n). No caso de um sistema geral o custo do determinante é O(n 3 )
Isto parece indicar que resolver este sistema será de custo computacional menor do que no caso de um sistema geral
Isto parece indicar que resolver este sistema será de custo computacional menor do que no caso de um sistema geral Mas não nos apressemos. Veja ao final do material de interpolação um algoritmo de resolução mais eficiente
Isto parece indicar que resolver este sistema será de custo computacional menor do que no caso de um sistema geral Mas não nos apressemos. Veja ao final do material de interpolação um algoritmo de resolução mais eficiente Retornemos ao resultado que obtivemos
A partir da solução do sistema (1 2 x0 x0 2 1 x 1 x 1 2 1 x 2 x 2 2 1 x 3 x 3 obteremos o polinômio interpolador x 0 3 x 1 3 x 2 3 x 3 3 x 0 n x 1 n x 2 n n) 2 3 1 x n x n x n x n x 3 n ( a0 a 1 a n)=( y0 y 1 2 y n) 2 a 3 y 3 a y p n ( x)=a 0 +a 1 x+a 2 x 2 + +a n x n
Observe que o resultado que obtemos pode ser resumido em: Dado (n+1) pontos distintos, por eles passamos um e um único polinômio de grau máximo n
Os n+1 de pontos distintos (x 0, y 0 ),(x 1, y 1 ),( x 2, y 2 ),(x 3, y 3 ),,(x n, y n ) são chamados de pontos interpolantes e os valores calculados a partir da F(x), valores interpolados.
Os n+1 de pontos distintos (x 0, y 0 ),(x 1, y 1 ),( x 2, y 2 ),(x 3, y 3 ),,(x n, y n ) são chamados de pontos interpolantes e os valores calculados a partir da F(x), valores interpolados. Só serão valores interpolados aqueles que estiverem contidos dentro do intervalo que contém todos os pontos interpolantes
Um exemplo simples Do círculo trigonométrico (r=1) obtemos que o seno de 0 é 0 e que o seno de π/2 é 1.
Um exemplo simples Do círculo trigonométrico (r=1) obtemos que o seno de 0 é 0 e que o seno de π/2 é 1. Se o ângulo for π/4 teremos um quadrado de diagonal igual a 1 e o lado igual ao seno de π/4. Assim teremos diagonal= 2lado 1= 2lado lado= 2 2
Um exemplo simples Ficamos assim com os pontos interpolantes x f(x) 0 0 π/2 1 π/4 2/2 Façamos uma série de experimentos numéricos
Um exemplo simples Dois pontos: x f(x) 0 0 π/2 1 O sistema de equações será 2x2 pois temos dois pontos
Um exemplo simples Dois pontos: x f(x) 0 0 π/2 1 O sistema de equações será 2x2 pois temos dois pontos ( 1 x 0 ) 1 x 1 ( a 0 a 1 ) = ( y ) 0 y ( 1 0 1 1 π/2 ) ( a 0 a 1 ) = ( 0 1 )
Um exemplo simples Dois pontos: x f(x) 0 0 π/2 1 O sistema de equações será 2x2 pois temos dois pontos ( 1 x 0 ) 1 x 1 ( a 0 a 1 ) = ( y ) 0 y ( 1 0 1 1 π/2 ) ( a 0 a 1 ) p 1 (x)=0+ 2 π x p 1 (x)= 2 π x = ( 0 1 ) a 0=0 ; a 1 =2/ π
Um exemplo simples Dois pontos: x f(x) 0 0 π/2 1 Façamos uma experiência: qual o valor deste polinômio interpolador para x = π/6 e x = π/3?
Um exemplo simples Dois pontos: x f(x) 0 0 π/2 1 Façamos uma experiência: qual o valor deste polinômio interpolador para x = π/6 e x = π/3? p 1 (x)= 2 π x p 1 (π/6)= 2 π π 6 = 1 3 =0, 33; p 1 (π/3)= 2 π π 3 =2 3 =0,66
Um exemplo simples Dois pontos: x f(x) p 1 (x) π/6 0,5 0,33... π/3 3/2 0,866025 0,66... Bem ruim...
Um exemplo simples Dois pontos: x f(x) p 1 (x) π/6 0,5 0,33... π/3 3/2 0,866025 0,66... Bem ruim... mas...
...mas também foi uma maldade com o método, afinal o que queríamos aproximando seno por uma reta?
Um exemplo simples Dois pontos: x f(x) 0 0 π/4 2/2 O sistema de equações será 2x2 pois temos dois pontos
Um exemplo simples Dois pontos: x f(x) 0 0 π/4 2/2 O sistema de equações será 2x2 pois temos dois pontos ( 1 x 0 ) 1 x 1 ( a 0 a 1 ) = ( y ) 0 y ( 1 0 1 1 π/4 ) ( a 0 ) a = ( 0 ) 1 2/2
Um exemplo simples Dois pontos: x f(x) 0 0 π/4 2/2 O sistema de equações será 2x2 pois temos dois pontos ( 1 x 0 ) 1 x 1 ( a 0 a 1 ) = ( y ) 0 y ( 1 0 1 1 π/4 ) ( a 0 ) a = ( 1 0 ) 2/2 a 0=0; a 1 =4/ π 2 2 = 2 2 π p 1 (x)=0+ 2 2 π x p 1(x)= 2 2 π x
Um exemplo simples Dois pontos: x f(x) 0 0 π/4 2/2 Novamente calculemos o polinômio nos pontos x = π/6 e x = π/3 p 1 (x)= 2 2 π x p(π/6)= 2 2 π π 6 = 2 3 0,471404 ; p(π/3)= 2 2 π π 3 = 2 2 3 0,942809
Um exemplo simples Dois pontos: x f(x) p 1 (x) π/6 0,5 0,471404 π/3 3/2 0,866025 0,942809 Um ficou razoável mas o outro continua ruim, mas...
...mas agora não foi maldade mas violência, afinal o método é de interpolação e o ponto x = π/3 está fora do intervalo de interpolação! Ou seja, o valor calculado é número sem significado para uma interpolação.
Um exemplo simples Dois pontos: x f(x) p 1 (x) π/6 0,5 0,471404 O curioso é que mesmo fazendo a maldade de aproximar seno por uma reta, o valor em x = π/6 melhorou muito quando diminuimos a distância entre os pontos...
Um exemplo simples Dois pontos: x f(x) π/2 1 π/4 2/2 Novamente um sistema 2x2 ( 1 x 0 ) 1 x 1 ( a 0 a 1 ) = ( y ) 0 y ( 1 π/2 1 1 π/4 ) ( a 0 ) a = ( 1 ) 1 2/2
Um exemplo simples Dois pontos: x f(x) π/2 1 π/4 2/2 Novamente um sistema 2x2 ( 1 x 0 ) 1 x 1 ( a 0 a 1 ) = ( y ) 0 y ( 1 π/2 1 1 π/4 ) ( a 0 ) a = ( 1 ) a 1 = π 2 (2 2) 1 2/2 a 0 = 2 1 p 1 (x)= 2 1+ 2 π (2 2) x
Um exemplo simples Dois pontos: x f(x) π/2 1 π/4 2/2 Novamente calculemos o polinômio no ponto x = π/3 p 1 (x)= 2 1+ 2 π (2 2)x p 1 (π/3)= 2 1+ π 2 (2 2) π 3 = 2+1 0,804737 3
Um exemplo simples Dois pontos: x f(x) p 1 (x) π/3 3/2 0,866025 0,804737 e mesmo fazendo a maldade de aproximar seno por uma reta, o valor em x = π/3 melhorou muito quando diminuimos a distância entre os pontos...
Um exemplo simples Três pontos: Agora o sistema é 3x3 ( 1 0 0 1 π/2 (π/2) 2 1 π/4 (π/ 4) 2 ) ( a0 x f(x) 0 0 π/2 1 π/4 2/2 ) a = ( 0 1 1 a 2 2/2) a =0; ( π/2 2 (π/2) ) 0 π/ 4 (π/ 4) 2 ( a 1 a 2 ) = ( 1 ) 2/2
Um exemplo simples Três pontos: Então x f(x) 0 0 π/2 1 π/4 2/2 ( π/2 π 2 /4 π/ 4 π 2 /16 ) ( a 1 ) a = ( 1 ) 2 2/2
Um exemplo simples Três pontos: Então x f(x) 0 0 π/2 1 π/4 2/2 ( π/2 π 2 /4 π/ 4 π 2 /16 ) ( a 1 ) a = ( 2 1 2/2 ) a 0 =0; a 1 = 2 π (2 2 1 ); a 2 = 8 π 2 (1 2 ) p 2 (x)= 2 π (2 2 1 ) x+ 8 π 2 (1 2 ) x 2
Um exemplo simples Três pontos: x f(x) 0 0 π/2 1 π/4 2/2 e p 2 (π/6)= 2 π (2 2 1 ) π 6 + 8 π 2 (1 2) ( π 6 ) 2 = 2 2 1 3 + 2 9 (1 2 )=0,517428 p 2 (π/3)= 2 π (2 2 1 ) π 3 + 8 π 2 (1 2 ) ( π 3 ) 2 = 2 3 (2 2 1 )+ 8 9 (1 2 )=0,850761
Aproximamos seno por uma parábola e o resultado começa a ficar interessante
O que nossas experiências parecem indicar?
O que nossas experiências parecem indicar? Usar pontos mais próximos do qual queremos calcular melhora o resultado
O que nossas experiências parecem indicar? Usar pontos mais próximos do qual queremos calcular melhora o resultado Usar mais pontos melhora o resultado
O que nossas experiências parecem indicar? Usar pontos mais próximos do qual queremos calcular melhora o resultado Usar mais pontos melhora o resultado Mas isto é apenas um exemplo e usando uma função muito bem comportada
O que nossas experiências parecem indicar? Usar pontos mais próximos do qual queremos calcular melhora o resultado Usar mais pontos melhora o resultado Mas isto é apenas um exemplo e usando uma função muito bem comportada Temos que pensar no caso geral para termos uma ideia se o que observamos tem validade em outras situações
Temos que pensar no caso geral para termos uma ideia se o que observamos tem validade em outras situações