introdução aos métodos numéricos - uffotton/graduacao/introducaonumericos/aulas_interpol... ·...

Post on 02-Dec-2018

220 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Introdução aos Métodos Numéricos

Instituto de Computação UFFDepartamento de Ciência da Computação

Otton Teixeira da Silveira Filho

Conteúdo

● Erros e Aproximações Numéricas

● Sistemas de Equações Lineares. Métodos diretos

● Interpolação

● Ajuste de Curvas

● Zeros de Função

● Sistemas de Equações Lineares. Métodos Iterativos

● Integração Numérica

● Introdução à Resolução de Equações Diferenciais Ordinárias

Conteúdo

● Interpolação

Erro na Interpolação

Definamos

o erro cometido por adotarmos o polinômio interpolador pn(x) no lugar da função interpolada f(x). Logo

onde xi são os pontos interpolantes. Rn(x) se anula em n+1 pontos

Rn(x)= f (x)−pn (x)

Rn(x i)= f (x i)−pn(x i)=0 ;∀ i

Erro na Interpolação

Aparentemente isto não nos ajuda muito. Necessitamos de algo que nos dê informação quando w ≠ xi . Seja então

Observe que

Sn(x) se anula também em n+1 pontos

Sn(x )=f (x )−pn(x )+kQn+1(x);Qn+1(x )=(x−x0)(x−x1)(x−x2)⋯(x−xn)

Sn(xi)=f (xi)−pn(xi)+kQn+1(xi)=0

Erro na Interpolação

Aparentemente também isto não nos ajuda muito. Mas olhe com cuidado

Temos uma fator livre, k, que nos dá liberdade de perguntar quanto vale Sn(x) num ponto w ≠ xi

Sn(x )=f (x )−pn(x )−kQn+1( x)

Erro na Interpolação

Vamos supor que exista este w ≠ xi tal que zere Sn(x)

Existe um valor para k que possibilite isto?

De fato k existe se w ≠ xi para todo i

Sn(w)=f (w)−pn(w)+k (w−x0)(w−x1)(w−x2)⋯(w−xn)=0

k=−f (w)−pn(w)

(w−x0)(w−x1)(w−x2)⋯(w−xn)=−

f (w)−pn(w)

Qn+1(w)

Erro na Interpolação

Com este valor para k, Sn(x) se anula em n+2 pontos

● Temos agora um ponto extra, diferente dos pontos interpolantes, que pode ser qualquer um dentro do intervalo que contenha os pontos interpolantes

● Um gráfico esquemático de Sn(x) poderia ser

Erro na Interpolação

● Conseguimos definir o problema

● Também incluimos um ponto que não é um dos pontos interpolantes

● Mas temos coisas demais para conseguir trabalhar.

● Solução? Usar uma ferramenta matemática...

Erro na Interpolação

Teorema de Rolle

Seja f(x) contínua no intervalo [a,b] e diferenciável em (a,b). Seja ainda que f(a) = f(b) = 0. Então existe pelo menos um número c no interior de (a,b) tal que

Repare nas figuras abaixo para entender um pouco...

f ' (c)=0

Erro na Interpolação

Na primeira figura temos um valor onde a derivada se anula e na segunda temos três. Na terceira temos a situação em que a função não tem derivada no intervalo e, portanto, o teorema não é válido

Erro na Interpolação

Retornemos à função Sn(x) que se anula em n+2 pontos

aplicando o Teorema de Rolle em cada um dos intervalos onde Sn(x) se anula nos extremos, podemos afirmar que Sn'(x) se anula em pelo menos n+1 pontos

Erro na Interpolação

Se aplicarmos o teorema de Rolle à , poderemos afirmar que se anula em pelo menos n pontos.

Continuando este procedimento, se aplicarmos o Teorema de Rolle n+1 vezes, poderemos afirmar que e anulará pelo menos uma vez.

O uso sucessivo do Teorema de Rolle reduz o número de coisas que não sabemos ao mínimo útil : 1

Chamaremos este número que anula de α. Claramente α está dentro do intervalo de interpolação

Sn'(x)

Sn' '(x)

Sn(n+1)

(x)

Sn(n+1)

(x)

Erro na Interpolação

Derivemos n+1 vezes

Observe que a derivada n+1 ésima de um polinômio de grau n é zero.

Qual é a derivada de ? Pensemos...

Sn(n+1)(x )

=f (n+1)( x)−pn

(n+1)(x )+kQn+1

(n+1)(x )

Sn(x)

Qn+1(x)

Erro na Interpolação

Reescrevamos

Observe que temos a soma de um polinômio de grau n+1, , com um polinômio de grau n,

Qn+1(x)=(x−x0)(x−x1)(x−x2)⋯(x−xn)=x Qn(x)−xnQn(x );Qn(x)=(x−x0)(x−x1)(x−x2)⋯(x−xn−1)

xQn(x) xnQn( x)

Qn+1(x)

Erro na Interpolação

Estabelecendo isto, reescrevamos

assim

Qn(x)=(x−x0)(x−x1)(x−x2)⋯(x−xn−1)=xQn−1(x)−xn−1Qn−1(x);Qn−1(x )=(x−x0)(x−x1)(x−x2)⋯(x−xn−2)

Qn+1(x)=(x−x0)(x−x1)(x−x2)⋯(x−xn)=x2Qn−1(x)−xn−1 xQn−1(x )−xn xQn−1(x)+xn−1Qn−1(x);Qn−1(x )=(x−x0)(x−x1)(x−x2)⋯(x−xn−2)

Qn(x)

Erro na Interpolação

Observando que este desenvolvimento tem como objetivo derivar n+1 vezes, concentraremos nossos esforços no único termo que sobreviverá à derivação e escreveremos a expressão acima como

Qn+1(x )=(x−x0)(x−x1)(x−x2)⋯(x−xn)=x2Qn−1(x )−xn−1 xQn−1(x )−xn xQn−1(x)+xn−1Qn−1(x);Qn−1(x)=(x−x0)(x−x1)(x−x2)⋯(x−xn−2)

Qn+1(x)

Qn+1(x)=(x−x0)(x−x1)(x−x2)⋯(x−xn)=x2Qn−1(x)+⋯;Qn−1(x)=(x−x0)(x−x1)(x−x2)⋯(x−xn−2)

Erro na Interpolação

Continuando o processo teremos

que finalmente nos deixa com

onde é um polinômio de grau n.

Qn+1(x )=(x−x0)(x−x1)(x−x2)⋯(x−xn)=xnQ1(x)+⋯;Q1(x)=(x−x0)

Qn+1(x )=(x−x0)(x−x1)(x−x2)⋯(x−xn)=xn+1+qn(x)

qn(x)

Erro na Interpolação

Assim temos que a derivada n+1 de será

que nos dá

Vejamos a condição para que aquele ponto α (que anula a derivada n+1 de ) exista

Qn+1(n+1)(x)=(xn+1)(n+1)+qn

(n+1)(x )=(n+1)!

Sn(n+1)

(x )=f (n+1)(x )−pn

(n+1)(x)+kQn+1

(n+1)(x)=f (n+1)

(x )+k (n+1)!

Qn(x)

Sn+1(x)

Erro na Interpolação

que resulta em

Aparentemente temos uma encrenca pois começamos todo este processo baseados que existia um ponto extra que anula e para isto é necessário que

f (n+1)(α)+k (n+1)!=0⇒k=−

f (n+1)(α)

(n+1)!

k=−f (w )−pn(w)

Qn+1(w)

Sn+1(x)

Erro na Interpolação

A solução é simples, estas equações devem ser iguais

Repare na equação acima: temos nela o que definimos como erro na interpolação.Então escrevamos

f (w)−pn(w)

Qn+1(w)=

f (n+1)(α)

(n+1)!⇒ f (w)−pn(w)=

f (n+1)(α)

(n+1)!Qn+1(w)

Rn(w)=f (n+1)

(α)

(n+1)!Qn+1(w)

Erro na Interpolação

Mas w é qualquer ponto dentro do intervalo de interpolação e a fórmula de erro é válida para os pontos interpoladores. Assim escreveremos

Rn( x)=

f (n+1)(α)

(n+1)!Qn+1(x )

Erro na Interpolação

Qual a utilidade deste resultado?

Duas coisas são bem evidentes:

● Quanto maior o número de pontos, menor o erro

● Quanto mais suave a função f(x), menor o erro

Rn( x)=f (n+1)

(α)

(n+1)!Qn+1(x )

Erro na Interpolação

mas tem uma mais sutil no termo Qn+1(x):

● Se os pontos forem “afastados“ entre si, ao calcularmos esta expressão em qualquer ponto, os produtos das diferenças terão elementos “grandes“. Se os pontos forem “próximos“entre si estes produtos serão menores.

Assim teremos...

Erro na Interpolação

O que nos transmite este resultado?

● Quanto maior o número de pontos, menor o erro

● Quanto mais suave a função f(x), menor o erro

● Quanto mais próximos os pontos interpolantes, menor o erro

Rn( x)=f (n+1)

(α)

(n+1)!Qn+1(x )

Erro na Interpolação

O que nos transmite este resultado?

Esta fórmula nos diz que as observações que fizemos nas experiências numéricas foram confirmadas para qualquer função dada

Para isto serve a teoria, para não termos de ficar repetindo inutilmente experiências

Rn( x)=f (n+1)

(α)

(n+1)!Qn+1(x )

Erro na Interpolação

Numericamente esta fórmula tem utilidade direta reduzida mas ela observa que só raramente temos como reconstruir a função original e, neste casos, a interpolação perde sua função

Interpolação

Observações gerais sobre interpolação

● Feita a escolha das fi(x) a F(x) será única

● A escolha de polinômios na forma canônica é útil mas tem seus problemas, como veremos

Interpolação

Observações gerais sobre interpolação

A figura mostra duas F(x) interpoladoras válidas com fi(x) diferentes

Observem a conveniência da escolha das funções fi(x) com o que pretendemos

Usando a interpolação

Se você necessitar fazer interpolação

● Quantos pontos usará?

Muitos pontos dão maior precisão e mais custo computacional

● Quais pontos?

A seleção afeta a precisão

Usando a interpolação

Adiaremos a discussão para quando tivermos outras maneiras de interpolarmos usando outras técnicas

Eficiência em cálculos com polinômios

Qual o custo computacional de calcularmos um ponto?

● Lembre-se que um computador é uma máquina de quatro operações disfarçada

● Pensemos o cálculo de potências no polinômio como operações de multiplicação

pn(x)=a0+a1 x+a2 x2+⋯+an x

n

Eficiência em cálculos com polinômios

Observe na equação acima o número de multiplicações

● No termo com a0 não temos operações

● no termo a1 temos uma multiplicação

● no termo a2 temos duas multiplicações

● etc. no termo an teremos n multiplicações

pn(x)=a0+a1 x+a2 x2+⋯+an x

n

Eficiência em cálculos com polinômios

Observe na equação acima o número de somas

● Serão n-1 somas

● Custo total:

1 + 2 + 3 + … + n multiplicações = n(n+1)/2

n-1 somas

pn(x)=a0+a1 x+a2 x2+⋯+an x

n

Eficiência em cálculos com polinômios

Calcular um polinômio de grau n na forma canônica tem custo O(n2)

É um custo alto se tivermos de calcular muitos pontos

pn(x)=a0+a1 x+a2 x2+⋯+an x

n

Algoritmo de Horner

Para facilitar o entendimento, seja o polinômio abaixo

observe que podemos escrevê-lo como

p4(x)=a0+a1 x+a2 x2+a3 x

3+a4 x4

p4(x)=a0+ x(a1+a2 x+a3 x2+a4 x

3)=a0+ x(a1+ x(a2+a3 x+a4 x2

))

p4 (x)=a0+x (a1+x (a2+ x(a3+a4 x)))

Algoritmo de Horner

Conte as operações

Canônico: 10 multiplicações + 4 somas

Horner: 4 multiplicações + 4 somas

p4(x)=a0+a1 x+a2 x2+a3 x

3+a4 x

4

p4(x)=a0+ x(a1+ x(a2+ x (a3+a4 x)))

Algoritmo de Horner

● O Custo é O(n)

● Para o caso de um polinômio dado pelos coeficientes do polinômio canônico

O algoritmo de Horner será

pn( x)=a0+a1 x+a2 x2+⋯+an x

n

p←an

Para i ← n−1 até 0p← p∗xp← p+ai

top related