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

38
Introdução aos Métodos Numéricos Instituto de Computação UFF Departamento de Ciência da Computação Otton Teixeira da Silveira Filho

Upload: lymien

Post on 02-Dec-2018

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

Introdução aos Métodos Numéricos

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

Otton Teixeira da Silveira Filho

Page 2: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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

Page 3: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

Conteúdo

● Interpolação

Page 4: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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

Page 5: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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

Page 6: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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)

Page 7: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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)

Page 8: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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

Page 9: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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...

Page 10: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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

Page 11: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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

Page 12: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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

Page 13: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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)

Page 14: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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)

Page 15: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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)

Page 16: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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)

Page 17: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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)

Page 18: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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)

Page 19: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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)

Page 20: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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)

Page 21: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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)

Page 22: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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 )

Page 23: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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 )

Page 24: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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...

Page 25: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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 )

Page 26: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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 )

Page 27: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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

Page 28: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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

Page 29: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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

Page 30: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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

Page 31: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

Usando a interpolação

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

Page 32: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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

Page 33: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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

Page 34: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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

Page 35: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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

Page 36: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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)))

Page 37: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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)))

Page 38: Introdução aos Métodos Numéricos - UFFotton/graduacao/introducaonumericos/Aulas_Interpol... · Observe na equação acima o número de multiplicações No termo com a 0 não temos

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