Post on 02-Dec-2018
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