Buscar

Diferenças Finitas

Prévia do material em texto

220 Cálculo Numérico
Diferenças Finitas h = 0,1 0,01 0,001
Progressiva O(h) −0,2809448 −0,3125246 −0,3158289
Regressiva O(h) −0,3545920 −0,3199024 −0,3165667
Progressiva O(h2) −0,3127746 −0,3161657 −0,3161974
Central O(h2) −0,3177684 −0,3162135 −0,3161978
Regressiva O(h2) −0,3135824 −0,3161665 −0,3161974
Central O(h4) −0,3162384 −0,3161977 −0,31619767
Tabela 8.1: Derivadas numéricas de f(x) = e−x
2 em x = 1,5. Veja o Exemplo 8.3.1.
>>> h=0.1
>>> #progressiva de ordem 1
>>> dp1 = (f(x+h)-f(x))/h
>>> #regressiva de ordem 1
>>> dr1 = (f(x)-f(x-h))/h
>>> #central de ordem 2
>>> dc2 = (f(x+h)-f(x-h))/(2*h)
>>> #progressiva de ordem 2
>>> dp2 = (-3*f(x)+4*f(x+h)-f(x+2*h))/(2*h)
>>> #regressiva de ordem 2
>>> dr2 = (f(x-2*h)-4*f(x-h)+3*f(x))/(2*h)
>>> #central de ordem 4
>>> dc4 = (f(x-2*h)-8*f(x-h)+8*f(x+h)-f(x+2*h))/(12*h)
e, análogo, para h = 0.01 e h = 0.001. O valor analítico da derivada é f ′(1,5) ≈
−0,3161976736856. A Tabela 8.1 mostra os resultados computados com as deri-
vadas numéricas.
♦
8.3.1 Exercícios resolvidos
Esta seção carece de exercícios resolvidos. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico
Licença CC-BY-SA-3.0. Contato: reamat@ufrgs.br
https://github.com/livroscolaborativos/CalculoNumerico
https://creativecommons.org/licenses/by-sa/3.0/
reamat@ufrgs.br
8.4. FÓRMULAS DE DIFERENÇAS FINITAS 221
Exercícios
Esta seção carece de exercícios. Participe da sua escrita.
Veja como em:
https://github.com/livroscolaborativos/CalculoNumerico
8.4 Fórmulas de diferenças finitas
Veremos nessa seção uma outra maneira de obter fórmulas de diferenças finitas
para derivadas de qualquer ordem de tal forma que elas possuam alta ordem de
precisão.
Dados n+ 1 pontos {x1, x2, . . . , xn}, queremos obter uma aproximação para a
derivada de f(x) calculada em x∗ do tipo
f ′(x∗) ≈ c1f(x1) + c2f(x2) + . . .+ cnf(xn) (8.62)
que seja exata para polinômios até ordem n− 1.
Seja q(x) = c1φ1(x) + c2φ2(x) + . . . + cnφn(x) o polinômio de ordem n que
aproxima f(x). Fixe a base φk(x) = xk. Como a regra (8.62) deve ser exata para
qualquer q(x) até ordem n−1, então também deve ser exata para qualquer função
da base. Substituindo f(x) por φ1(x) = 1 em (8.62) obtemos
φ′1(x)|x∗ = (1)′|x∗ = (8.63)
0 = c1φ1(x1) + c2φ1(x2) + . . .+ cnφ1(xn) (8.64)
0 = c1 + c2 + . . .+ cn (8.65)
Da mesma forma para k = 1, . . . ,n− 1, obtemos
(x)′x∗ = 1 = c1x1 + c2x2 + . . .+ cnxn (8.66)
(x2)′x∗ = 2x∗ = c1x
2
1 + c2x
2
2 + . . .+ cnx
2
n (8.67)
(x3)′x∗ = 3(x∗)2 = c1x
3
1 + c2x
3
2 + . . .+ cnx
3
n (8.68)
... = ... (8.69)
(xn−1)′x∗ = (n− 1)(x∗)n−2 = c1x
n−1
1 + c1x
n−1
1 + . . .+ cnx
n−1
n (8.70)
Licença CC-BY-SA-3.0. Contato: reamat@ufrgs.br
https://github.com/livroscolaborativos/CalculoNumerico
https://creativecommons.org/licenses/by-sa/3.0/
reamat@ufrgs.br
	Derivação numérica
	Obtenção de fórmulas por polinômios interpoladores
	Exercícios resolvidos
	Fórmulas de diferenças finitas

Mais conteúdos dessa disciplina