Você está na página 1de 107

Aproximao e interpolao

Prof. Paulo R. G. Bordoni

UFRJ

Na aula passada, estudamos as funes polinomiais.

O pacote Polynomials utiliza a base cannica para construir polinomiais

Uma forma alternativa usar a base de Lagrange

Em 1[, ], que tem dimenso 2, as funes bsicas de Lagrange sero nomeadas 0() 1() e so polinomiais de grau 1.

A 0() a polinomial de grau 1 que satisfaz: 0(0) = 1 0(1) = 0. A 1() por sua vez satisfaz: 1(0) = 0 1(1) = 1.

trivial confirmar que:


0() = ( 1)/(0 1), 1() = ( 0)/(1 0).

Com a base de Lagrange resolvemos o problema:


Construir uma reta que passa por dois pontos 0 = (0 , 0 ) e 1 = (1 , 1 ) dados, se 0 1. p
1 = (1 , 1 ) 0 = (0 , 0 )

Sim, a soluo dada por: = 0 0 + 1 1 ().

Confirmando: () uma combinao linear das polinomiais bsicas de Lagrange.

Este o programa que mostra 0 , 1 , 0 0 , 1 1 e a () = 0 0() + 1 1()

Mestra, qual a funo que passa por trs pontos dados?

Bem, uma funo polinomial de grau dois, responde tua pergunta. Isto se os pontos j no estiverem alinhados.

Mas o professor de desenho geomtrico disse que a circunferncia!

Ele est certo, mas uma circunferncia no grfico de uma funo polinomial. Assim como uma hiprbole. O grfico de uma polinomial de grau dois uma parbola.

Em 2[, ], que tem dimenso trs, as funes bsicas (tambm) sero nomeadas 0(), 1() 2(). Elas so polinomiais de grau 2.

Elas so definidas pelas 9 condies: 0(0) = 1, 0(1) = 0, 0(2) = 0

1(0) = 0, 1(1) = 1, 1(2) = 0


2(2) = 0, 2(1) = 0, 2(2) = 1

Confira que, definindo 0() pela expresso ( 1 )( 2 ) 0 = (0 1 )(0 2 ) teremos 0 0 = 1, 0 1 = 0, 0 2 = 0

As expresses para as outras duas funes bsicas so: ( 0 )( 2 ) 1 = (1 0 )(1 2 )

2 =

( 0 )( 1 ) (2 0 )(2 1 )

Este programa gera as polinomiais da base de Lagrange do espao das funes polinomiais de grau menor ou igual a 2.

Para fazer 0() passar pelo ponto = (0.3,1.4) basta multiplic-la por 1.4. Vejam no desenho:

O programa da transparncia anterior.

A mesma ideia se aplica s outras duas funes bsicas:

Multiplicando 1() por um nmero 1, a funo escalada 1 1() passar pelo ponto (1, 1); Multiplicando 2() por um nmero 2, a funo escalada 2 2() passar pelo ponto (2, 2).

Este programa gera a polinomial de grau dois ( 2) que passa pelos pontos (0, 0), (1, 1), (2, 2) utilizando a base de Lagrange do espao das funes polinomiais de grau 2.

Marquei em vermelho a parte que gera os grficos das 3 funes bsicas escaladas e da polinomial.

Esse o resultado de uma execuo do programa.

Estas ideias tem sido usadas, a sculos, para aproximar funes por retas e por parbolas. Vou passear um pouco pela histria.

Parte de uma pgina do Canon mathematicus de Vite (1579). Nela esto tabelados valores de senos, cossenos, tangentes, etc de 4 430

http://locomat.loria.fr

Rheticus foi aluno de Coprnico e o apoiou na divulgao do heliocentrismo.

Em particular na publicao da obra maior de Coprnico: De revolutionibus orbium coelestium

Um sextante, aparelho usado nas grandes navegaes. Assim como o relgio e a corda com ns, para medir a velocidade de um barco.

Hoje temos o GPS, que mostra nossa posio via satlite. Inclusive ajuda a navegar nas cidades.

O sistema geocntrico (Ptolomeu), a Igreja/Inquisio e o julgamento de Galileu Galilei. O heliocentrismo com Coprnico,

O livro de Coprnico, sobre o heliocentrismo.

Em 1614, no livro Mirifici Logarithmorum Canonis Descriptio, J. Napier descreve um mtodo para calcular produtos em termos de somas. Nasciam os logaritmos. O livro apresenta ainda 90 pginas com tabelas para utilizao do seu mtodo

Obtivemos essas informaes no site do Gresham College. O texto a seguir, sobre Briggs, parte da apresentao s minhas costas.

A declarao de Briggs emocionante!

O livro que Briggs escreveu. Nos logaritmos de Napier, log(1) 0.

Briggs foi um grande matemtico.

Foi o 1 Professor Saviliano de Geometria em Osford!

Que encadeamento fantstico! Percebam a importncia de boas escolas e bons Professores!

Briggs convenceu Johann Kepler sobre as vantagens da inveno de Napier. Kepler usou logaritmos para calcular as posies de Marte, o que conduziu-o a descobrir as leis do movimento planetrio.

A reputao de Kepler foi fundamental na disseminao do uso de logaritmos em toda a Europa.


Isaac Newton usou as leis de Kepler para descobrir a lei da gravidade.

Mestres, afinal de contas, para que eram utilizadas as tbuas de logaritmo?

Elas eram usadas para efetuar multiplicaes e divises, de forma rpida, num tempo em que no haviam computadores, nem mquinas de calcular.

A rgua de clculo foi um instrumento analgico largamente utilizado pelos engenheiros at surgirem as mquinas de calcular cientficas nos anos 70. Elas utilizavam escalas logartmicas e as duas propriedades abaixo:

log(xy) = log(x) + log(y) log(x/y) = log(x) - log(y)

As tbuas de logaritmos e das funes trigonomtricas eram utilizadas para efetuar aproximaes lineares, como nessa figura que fiz.

() a a
()

O foco da aula de hoje aproximar funes por outras mais simples. Em primeira mo, por polinomiais.

Um subconjunto importante de (, ) , , o conjunto de todas as funes : que so limitadas.

simples provar que , um subespao vetorial de ( , ). Faa essa prova, Surfista!

Mas o que uma funo limitada Mestre?

Uma funo : limitada quando existe para o qual () < , .

Um conceito delicado o de supremo de um conjunto de nmeros reais. Ele vai ser necessrio adiante.

O supremo s de um conjunto limitado X , anotado (), o menor de seus limitantes superiores. Em outras palavras, , = () > 0, . . <

Cruz-credo, Mestra! D um exemplo, pelo amor de Deus

Veja alguns: 2 = . 2 < 2

1 = . < 1
1 = . 1 2 = 1 + 1 2 , 1 + 1 2 + 1 4 , 1 + 1 2 + 1 4 + 1/8, 9 = 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 , 2 = 1

A viso geomtrica associada a esse conceito a seguinte:


s

A 1 parte da definio garante que s um limitante superior de X. A 2 que, no importa qual seja a preciso , sempre conseguiremos descobrir um nmero entre s e . Isto garante que s o menor de todos os limitantes.

Nessa figura vocs no mostraram os elementos do conjunto X. Por qu?

S para descobrir se voc estava atento! Imagine, p/ex., X como as aproximaes decimais por falta para 2: = { 1.4, 1.41, 1.414, 1.4142, }

Um ponto a ser destacado a respeito do supremo s de X que ele pode ser um elemento de X, mas isto no uma exigncia.

Quando , ele o mximo de X, anotado


max()

Para falar de aproximao entre funes, precisamos saber como medir o tamanho de funes. Em outras palavras, como definir a norma para uma funo (, ).

Uma primeira resposta uma negativa parcial.


No possvel definir uma norma em (, ). Ele muito grande para isto. Entretanto isto possvel para as funes : que so limitadas.

A funo

, por

definida para toda ,

= sup , ,

uma norma uma forma de medir tamanho de funes. f

Lembre-se Surfista, o Mestre est afirmando que:

1. 2. 3.

0 e

= 0 = 0; para ;
.

Em Clculo aprendemos que toda funo contnua f definida num intervalo fechado [, ] atinge seu valor mximo num ponto [, ].

tima lembrana, Surfista!


Nesse caso, = , , e se 0,

= ().

Mas como medimos a distncia entre duas funes , ( , ) ?

f Simplesmente calculando = () , , , que a forma de medir a distncia entre duas funes usando a

A norma mede a proximidade de funes de forma uniforme, em todo um intervalo.

De fato, sejam , , .

Afirmar que < corresponde a assegurar que g fica dentro de uma faixa com largura uniforme envolta de f .
Na figura a faixa rosa, de a at b.

Passaremos agora a analisar formas de estabelecer aproximaes globais num intervalo [a, b].

E aprendi a usar a NumPy para:

Criar polinomiais, usando a base cannica 0 , 1 , , de ([, ]); Calcular razes de uma polinomial; Derivar e integrar polinomiais ([, ]); Etc.

Em particular, observamos dois fatos bvios: 1. , ([, ]) um subespao ([, ]), o espao das polinomiais de qualquer grau.

2. ([, ]) subespao de ( , ), o espao


de todas as funes : [, ] .

Da decorrem duas afirmaes que merecem nossa ateno: ([, ]), o espao das polinomiais de qualquer grau, tem dimenso infinita, enumervel; ( , ), o espao de todas as funes : [, ] tambm tem dimenso infinita;

E como toda polinomial uma funo contnua, e infinitamente derivvel, conclumos tambm, que , , 1 , , , , so todos espaos dimenso infinita.

Mas Surfista, eu nunca vi nenhuma polinomial de grau infinito. Existem polinomiais de grau infinito Mestra?

Claro que no, minha filha. As polinomiais de ([, ]), no possuem restrio de grau. Isto quer, apenas, dizer que o grau poder ser qualquer nmero natural, por isso mesmo finito.

A sequncia = { 0, 1, , } das funes polinomiais definidas por = , para [, ] uma base (de Hamel) de ( , ), pois:

1. gera ( , ) lembrem-se, combinaes


lineares so somas finitas;

2. um subconjunto LI de , , pois

todo , os subconjuntos constitudos por n elementos distintos de LI.

Assim [a, b] possui dimenso infinita (enumervel) e no se fala mais nisso!

O teorema de aproximao de Weierstrass um resultado de existncia de aproximaes polinomiais globais fundamental:

p f

Se f uma funo contnua num intervalo fechado [, ] ento, para qualquer preciso > 0, existe uma polinomial tal que < .

Esse teorema de Weierstrass informa que [, ] denso em [, ].

Ah, sim! Da mesma forma que denso em .

Surfista, voc acabou de dizer que: Podemos aproximar um nmero real (como , p/ex.) com qualquer nmero de casas decimais (i., com qualquer preciso > 0).

Parafraseando o Mestre: Podemos aproximar uma funo contnua por uma polinomial com qualquer preciso > 0.

Arrochando o abrao! f
0.2
0.5

Comearemos por entender aproximao via interpolao polinomial.

A interpolao uma tcnica para calcular resultados numricos aproximados de dados no tabelados, a partir de dados funcionais de valores vizinhos tabelados.

A figura objetiva ilustrar que podemos aproximar por () o valor de () a partir dos valores conhecidos (tabelados) () e ().
() () () ()

a Interpolar, o nome tcnico para isto!

Com a NumPy e a base de Lagrange, aprendemos a construir funes polinomiais que passam por pontos dados. s juntar essa duas idias?

Sim Loirinha, a ideia de aproximar uma funo : , atravs de interpolao por uma polinomial de grau n bvia!

s passar a polinomial pelos pontos (0 , 0 ), (1 , 1 ), , ( , ), 0 = 0 1 = 1 onde , com 0 = , = . =

Vejam este exemplo: A funo = () Os pontos a interpolar so 1, 1 , 1 2 , 0 , 0, 0 , 1 2 , 0 , (1,1)

Com 7 pontos melhorou muito, visualmente!

Este programa que faz a interpolao. Ele usa a rotina lagrange( ) da scipy.interpolate.

Vejam os detalhes da rotina lagrange( ) da scipy.interpolate.

Mestres, est na hora de mergulhar fundo no contedo da scipy.interpolate!

Tem razo Manual. Primeiro vamos olhar o contedo do Tutorial da SciPy sobre interpolao:

O incio do Tutorial da SciPy sobre interpolao:

Eis a scipy.interpolate na Reference.

Vamos comear examinando essas duas rotinas marcadas pelo Mestre.

Mestres!

Por que a interpolao de Lagrange no aparece nessa lista?

Ela est escondida nas duas que o Mestre marcou!

Para entender o KroghIntgerpolator( ) a necessrio ler o artigo do Fred Krogh.

No deixem de acessar e ler o artigo.

L esto detalhados os algoritmos de Krogh empregados pela scipy.interpolate

Inclusive o artigo compara nmero de operaes com os algoritmos de Lagrange e Aitken/Neville, mostrando que os propostos por Krogh tem melhor performance.

= ( ) , +1 =

Os algoritmos de Krogh usam as frmulas de diferenas divididas finitas (DDF) de Newton, definidas recursivamente por:

+1 +1 +1 , +2 , +1 +1 +1 , +2 , +3 , +1 , +2 +1

, +1 , +2 =

, +1 , +2 , +3 = E assim por diante

No entendi essas diferenas divididas!

Repito, no entendi! Vai explicar ou no ?!...?!

Morri de medo, meu Kruguinho querido!

Mestre, faa um programa que constri uma tabela de diferenas divididas finitas.

Eis a tabela de DDFs.

Veja Kruguinho: para calcular uma DDF3 precisamos duas DDF2, trs DDF1, quatro valores de f.

Mestra, a DDF2 de uma polinomial de grau 2 constante, e igualzinha derivada 2 e a DDF3 identicamente nula.

No resisti e acrescentei os grficos para comparar com as derivadas:

Pois Surfista, compare os grficos da funo e suas derivadas com os grficos das DDFs e conclua.

Kruguinho, repeti tudo para a funo = (). J vimos no curso que as diferenas finitas so aproximaes para as derivadas!

A polinomial interpoladora de Lagrange, pelos n+1 pontos (0 , 0 ), (1 , 1 ) , ( , ), dada pela:

Frmula de interpolao com as DDFs de Newton = 0 + 0 , 1 1 + 0 , 1 , 2 2 + + 0 , 1 , , (), onde = ( 0 )( 1 ) ( 1 )

Com alguma manipulao algbrica possvel mostrar que as frmulas de Newton e de Lagrange so iguais.

Loirinha e Surfista, faam essas continhas para as interpoladoras de grau 1 e 2.

O interpolador de Krogh, prontinho para usar, na scipy.interpolate.

A interpoladora de Lagrange, calculada atravs do algoritmo de Krogh.

O programa s muda na linha 21:

Usando o interpolador de Krog para aproximar e :

O programa:

Eis um artigo de peso!


Nele os autores recuperam conceitualmente a interpolao de Lagrange como um algoritmo timo!

Aps apresentar a frmula interpoladora de Lagrange, conforme j fizemos no curso, os autores comentam:

A frmula de Lagrange aperfeioada!

E, finalmente, frmula baricntrica!

Prontinha para usar na scipy.interpolate.

Esta observao importante!!

Veja Surfista. O programa com a barycentric muito parecido com o anterior.


Inclu a funo erro.

Nas extremidades do intervalo o erro aumentou!

Observe que para 7 pontos a funo erro quase cola no eixo-x.

Vocs podero encontrar a demonstrao do teorema a seguir em livros de Anlise Numrica. Teorema da interpolao polinomial Admitindo-se que: , e (+1) existe em , 0 < 1 < < ento para todo [0 , ], existe um nmero entre 0 e tal que = + +1 (), onde: a polinomial interpoladora de grau por 0 , 0 , 1 , 1 , , , , +1 =
+1

( ) 0 1 + 1 !

Se a derivada de ordem + 1, (+1) , de for contnua no intervalo [0 , ], ela ser limitada. Nesse caso, existir um nmero real tal que
[0 , ]

max (+1) () =

Ento teremos +1 ()
| +1 !

0 | .

E, se os pontos forem igualmente espaados de , +1 ()


+1 4 +1

Eu realmente no vejo razo para toda essa teoria sobre interpolao e erro. O computador fornece tudo pronto!

Meu querido aluno impaciente ... Como voc acha que Numpy + Scipy calculam as funes to rapidamente, com a preciso requerida pelo IEEE 754?

Mestres, aumentando o grau n da polinomial interpoladora conseguiremos melhorar a preciso?

Loirinha, voc tocou num ponto crucial.

Para valores igualmente espaados, ao aumentarmos o grau da interpoladora, surge o fenmeno de Runge!

Veja s que coisa terrvel! Nesse exemplo vemos que o erro cresceu assustadoramente com o grau.

Ele dispara nos extremos!

A interpolao baricntrica no resolve o fenmeno de Runge, que no um problema de estabilidade, mas devido ao mau condicionamento da interpolao de Lagrange para pontos igualmente espaados.

Vejam que o fenmeno de Runge no ocorreu com a funo () em 0, 2 . Inclusive nem d para ver a funo erro est colada no eixo-x!

Entretanto o fenmeno de Runge j se manifesta para a funo () em 3, 3 e grau 14 na interpoladora. Porm quando aumentamos o grau da interpoladora para 20 ele volta a desaparecer.

Bem Mestre, este leo eu domei.


Mas precisei 39 de chicotadas.

Pois Surfista, mas para a funo = 1/(1 + 2 ) isto no acontece! Ela Runge mais ainda!

Tchau! At a prxima.