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