Você está na página 1de 7

Erros na Diferenciação Numérica

Bibliografia

Eteven C. Chapra
Applied Numerical Methods with Matlab for Engineers and Scientists – 3rd Edition
McGraw-Hill, 2012

Objetivos

Série Taylor para estimar erros de truncamento


Diferenças finitas para frente, para trás e central
Minimizar os erros de truncamento pode aumentar os de arredondamento.

Usando a série de Taylor para determinar o erro de truncamento na Diferenciação Numérica

Para mostrar como usar a série de Taylor para determinar o erro de truncamento na diferenciação numérica
por meio de métodos iterativos, considere novamente o problema do bungee jumper e vamos expandir a velocidade
por meio da série de Taylor.

𝑣𝑣 ′ (𝑡𝑡𝑖𝑖 ) 𝑣𝑣 ′′ (𝑡𝑡𝑖𝑖 )
𝑣𝑣(𝑡𝑡𝑖𝑖+1 ) = 𝑣𝑣(𝑡𝑡𝑖𝑖 ) + (𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖 )1 + (𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖 )2 + ⋯ + 𝑅𝑅𝑛𝑛
1! 2!

Truncando a série de Taylor na primeira derivada, resulta

𝑣𝑣 ′ (𝑡𝑡𝑖𝑖 )
𝑣𝑣(𝑡𝑡𝑖𝑖+1 ) = 𝑣𝑣(𝑡𝑡𝑖𝑖 ) + (𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖 )1 + 𝑅𝑅1
1!

Que pode ser reescrita como

𝑣𝑣(𝑡𝑡𝑖𝑖+1 ) − 𝑣𝑣(𝑡𝑡𝑖𝑖 ) 𝑅𝑅1


𝑣𝑣 ′ (𝑡𝑡𝑖𝑖 ) = −
𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖 𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖

A primeira parte (azul) é exatamente a mesma relação que foi usada no método de Euler para aproximar a
derivada. No entanto, devido à abordagem da série Taylor, obtivemos agora uma estimativa do erro de truncamento
(amarelo) associado a essa aproximação da derivada. O erro pode ser calculado, sabendo-se que

𝑣𝑣 ′′ (𝜉𝜉)
𝑅𝑅1 = (𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖 )2
2!

ou seja, o termo em (amarelo) pode ser reescrito assim

𝑅𝑅1 𝑣𝑣 ′′ (𝜉𝜉) 1 𝑣𝑣 ′′ (𝜉𝜉)


= (𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖 )2 = (𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖 )1
(𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖 ) 2! (𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖 ) 2!

Logo, a estimativa da derivada (azul) tem um erro de truncamento da ordem (𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖 ). Em outras palavras,
o erro da aproximação derivada é proporcional ao tamanho do passo ℎ. Consequentemente, se reduzirmos pela
metade o tamanho do passo, reduz-se pela metade o erro da derivada.

𝑅𝑅1
= 𝑂𝑂(𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖 )
𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖
Diferenciação Numérica

A equação
𝑣𝑣(𝑡𝑡𝑖𝑖+1 ) − 𝑣𝑣(𝑡𝑡𝑖𝑖 ) 𝑅𝑅1
𝑣𝑣 ′ (𝑡𝑡𝑖𝑖 ) = −
𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖 𝑡𝑡𝑖𝑖+1 − 𝑡𝑡𝑖𝑖

Pode ser escrita de forma mais geral para a derivada 𝑓𝑓 ′ (𝑥𝑥𝑖𝑖 ) de uma função 𝑓𝑓(𝑥𝑥𝑖𝑖 )

𝑓𝑓(𝑥𝑥𝑖𝑖+1 )−𝑓𝑓(𝑥𝑥𝑖𝑖 ) 𝑓𝑓(𝑥𝑥𝑖𝑖+1 )−𝑓𝑓(𝑥𝑥𝑖𝑖 )


𝑓𝑓 ′ (𝑥𝑥𝑖𝑖 ) = − 𝑂𝑂(𝑥𝑥𝑖𝑖+1 − 𝑥𝑥𝑖𝑖 ) ⇒ 𝑓𝑓 ′ (𝑥𝑥𝑖𝑖 ) = − 𝑂𝑂(ℎ)
𝑥𝑥𝑖𝑖+1 −𝑥𝑥𝑖𝑖 ℎ

em que ℎ é o tamanho do passo e essa expressão é denominada Forward Difference, pois utiliza dados em (𝑖𝑖 + 1)
para estimar a derivada em (𝑖𝑖).
Essa Forward Difference é apenas uma das muitas que podem ser desenvolvidas a partir da série Taylor para
aproximar derivadas numericamente. Por exemplo, aproximações Backward Difference e Centered Difference podem
ser desenvolvidas de maneira semelhante. Aproximações mais precisas da primeira derivada podem ser desenvolvidas
incluindo termos de ordem superior da série Taylor. Finalmente, essas versões também podem ser desenvolvidas para
derivadas de ordens superiores.
No caso da aproximação Backward Difference a série de Taylor é usada para prever o valor um passo atrás

𝑓𝑓 ′′ (𝑥𝑥𝑖𝑖 ) 𝑓𝑓 (3)(𝑥𝑥𝑖𝑖 )
𝑓𝑓(𝑥𝑥𝑖𝑖−1 ) = 𝑓𝑓(𝑥𝑥𝑖𝑖 ) + 𝑓𝑓 ′ (𝑥𝑥𝑖𝑖 )(𝑥𝑥𝑖𝑖−1 − 𝑥𝑥𝑖𝑖 )1 + (𝑥𝑥𝑖𝑖−1 − 𝑥𝑥𝑖𝑖 )2 + (𝑥𝑥𝑖𝑖−1 − 𝑥𝑥𝑖𝑖 )3 + ⋯
2! 3!

Na definição usada, ℎ = (𝑥𝑥𝑖𝑖+1 − 𝑥𝑥𝑖𝑖 ) que para esse caso resulta ℎ = (𝑥𝑥𝑖𝑖 − 𝑥𝑥𝑖𝑖−1 )

𝑓𝑓 ′′ (𝑥𝑥𝑖𝑖 ) 𝑓𝑓 (3)(𝑥𝑥𝑖𝑖 )
𝑓𝑓(𝑥𝑥𝑖𝑖−1 ) = 𝑓𝑓(𝑥𝑥𝑖𝑖 ) − 𝑓𝑓 ′ (𝑥𝑥𝑖𝑖 )(𝑥𝑥𝑖𝑖 − 𝑥𝑥𝑖𝑖−1 )1 + (𝑥𝑥𝑖𝑖 − 𝑥𝑥𝑖𝑖−1 )2 − (𝑥𝑥𝑖𝑖 − 𝑥𝑥𝑖𝑖−1 )3 + ⋯
2! 3!
𝑓𝑓 ′′ (𝑥𝑥𝑖𝑖 ) 𝑓𝑓 (3) (𝑥𝑥𝑖𝑖 )
𝑓𝑓(𝑥𝑥𝑖𝑖−1 ) = 𝑓𝑓(𝑥𝑥𝑖𝑖 ) − 𝑓𝑓 ′ (𝑥𝑥𝑖𝑖 )(ℎ)1 + (ℎ)2 − (ℎ)3 + ⋯
2! 3!

Truncando a série até a primeira ordem obtemos

𝑓𝑓 (𝑥𝑥𝑖𝑖 ) − 𝑓𝑓 (𝑥𝑥𝑖𝑖−1 )
𝑓𝑓 ′(𝑥𝑥𝑖𝑖 ) ≅

Vamos agora calcular o erro de truncamento

𝑓𝑓′′ (𝜉𝜉)
𝑓𝑓(𝑥𝑥𝑖𝑖−1 ) = 𝑓𝑓(𝑥𝑥𝑖𝑖 ) − 𝑓𝑓 ′ (𝑥𝑥𝑖𝑖 )(ℎ)1 + 𝑅𝑅1 para 𝑅𝑅1 = (ℎ)2
2!

𝑓𝑓(𝑥𝑥𝑖𝑖 ) − 𝑓𝑓(𝑥𝑥𝑖𝑖−1 ) 𝑅𝑅1


𝑓𝑓 ′ (𝑥𝑥𝑖𝑖 ) = +
ℎ ℎ

𝑅𝑅1 𝑓𝑓 ′′ (𝜉𝜉) 1 𝑓𝑓 ′′ (𝜉𝜉)


= (ℎ)2 = (ℎ)1
ℎ 2! (ℎ) 2!

E o erro de truncamento da Backward Difference é da ordem 𝑂𝑂(ℎ), mesma magnitude que a Forward Difference
No caso da aproximação Centered Difference, a série de Taylor de 𝑓𝑓(𝑥𝑥𝑖𝑖+1 ) e de 𝑓𝑓(𝑥𝑥𝑖𝑖−1 ) são subtraídas para
serem combinadas
𝑓𝑓 ′′ (𝑥𝑥𝑖𝑖 ) 𝑓𝑓 (3) (𝑥𝑥𝑖𝑖 )
𝑓𝑓(𝑥𝑥𝑖𝑖+1 ) = 𝑓𝑓(𝑥𝑥𝑖𝑖 ) + 𝑓𝑓 ′ (𝑥𝑥𝑖𝑖 )(ℎ)1 + (ℎ)2 + (ℎ)3 + ⋯
2! 3!
𝑓𝑓 ′′ (𝑥𝑥𝑖𝑖 ) 𝑓𝑓 (3) (𝑥𝑥𝑖𝑖 )
𝑓𝑓(𝑥𝑥𝑖𝑖−1 ) = 𝑓𝑓(𝑥𝑥𝑖𝑖 ) − 𝑓𝑓 ′ (𝑥𝑥𝑖𝑖 )(ℎ)1 + (ℎ)2 − (ℎ)3 + ⋯
2! 3!
resultando
𝑓𝑓 (3) (𝑥𝑥𝑖𝑖 ) 𝑓𝑓 (5) (𝑥𝑥𝑖𝑖 )
𝑓𝑓(𝑥𝑥𝑖𝑖+1 ) = 𝑓𝑓(𝑥𝑥𝑖𝑖−1 ) + 2𝑓𝑓 ′ (𝑥𝑥𝑖𝑖 )(ℎ)1 + 2 (ℎ)3 + 2 (ℎ)5 ⋯
3! 5!
Isolando 𝑓𝑓 ′ (𝑥𝑥𝑖𝑖 ), obtém-se

𝑓𝑓(𝑥𝑥𝑖𝑖+1 )−𝑓𝑓(𝑥𝑥𝑖𝑖−1 ) 𝑓𝑓(3) (𝑥𝑥𝑖𝑖 ) 𝑓𝑓(𝑥𝑥𝑖𝑖+1 )−𝑓𝑓(𝑥𝑥𝑖𝑖−1 ) 𝑓𝑓(3) (ξ) 2


𝑓𝑓 ′(𝑥𝑥𝑖𝑖 ) = 2ℎ
− 6
ℎ2 + ⋯ ⇒ 𝑓𝑓 ′(𝑥𝑥𝑖𝑖 ) = 2ℎ
− 6

ou
𝑓𝑓(𝑥𝑥𝑖𝑖+1 ) − 𝑓𝑓(𝑥𝑥𝑖𝑖−1 )
𝑓𝑓 ′ (𝑥𝑥𝑖𝑖 ) = − 𝑂𝑂(ℎ2 )
2ℎ

Essa equação é uma representação de diferenças finitas centrais da primeira derivada. Observe que o erro de
truncamento é da ordem de ℎ2 , em contraste com as aproximações para frente e para trás que eram da ordem de ℎ1 .
Consequentemente, a análise das séries de Taylor fornece as informações práticas de que a diferença central é uma
representação mais exata da derivada. Por exemplo, se reduzirmos pela metade o tamanho do passo usando uma
diferença para a frente ou para trás, reduziremos pela metade o erro de truncamento, enquanto que, para a diferença
central, o erro será reduzido em quatro vezes.

Aproximação por diferenças finitas de derivadas de ordem superior

Além da primeira derivada, a expansão da série Taylor pode ser usada para calcular estimativas numéricas de
derivadas de ordem superior. Para determinar, por exemplo, a aproximação Forward Difference da derivada segunda,
escrevemos uma expansão da série de Taylor para a frente de 𝑓𝑓(𝑥𝑥𝑖𝑖+2 ) e de 𝑓𝑓(𝑥𝑥𝑖𝑖+1 ) em termos de 𝑓𝑓(𝑥𝑥𝑖𝑖 )

𝑓𝑓 ′′ (𝑥𝑥𝑖𝑖 )
𝑓𝑓(𝑥𝑥𝑖𝑖+2 ) = 𝑓𝑓(𝑥𝑥𝑖𝑖 ) + 𝑓𝑓 ′ (𝑥𝑥𝑖𝑖 )(2ℎ)1 + (2ℎ)2 + ⋯
2!

Retomando a expansão
𝑓𝑓 ′′ (𝑥𝑥𝑖𝑖 )
𝑓𝑓(𝑥𝑥𝑖𝑖+1 ) = 𝑓𝑓(𝑥𝑥𝑖𝑖 ) + 𝑓𝑓 ′ (𝑥𝑥𝑖𝑖 )(ℎ)1 + (ℎ)2 + ⋯
2!

Calculando 𝑓𝑓(𝑥𝑥𝑖𝑖+2 ) − 2𝑓𝑓(𝑥𝑥𝑖𝑖+1 ):

𝑓𝑓(𝑥𝑥𝑖𝑖+2 ) − 2𝑓𝑓(𝑥𝑥𝑖𝑖+1 ) = −𝑓𝑓(𝑥𝑥𝑖𝑖 ) + 𝑓𝑓 ′′ (𝑥𝑥𝑖𝑖 )ℎ2 + 𝑓𝑓 3 (𝑥𝑥𝑖𝑖 )ℎ3 + ⋯

e isolando 𝑓𝑓 ′′ (𝑥𝑥𝑖𝑖 )

𝑓𝑓(𝑥𝑥𝑖𝑖+2 ) − 2𝑓𝑓(𝑥𝑥𝑖𝑖+1 ) + 𝑓𝑓(𝑥𝑥𝑖𝑖 )


𝑓𝑓 ′′ (𝑥𝑥𝑖𝑖 ) = + 𝑂𝑂(ℎ)
ℎ2
Fazendo um desenvolvimento similar para a Backward Difference obtém-se

𝑓𝑓(𝑥𝑥𝑖𝑖 ) − 2𝑓𝑓(𝑥𝑥𝑖𝑖−1 ) + 𝑓𝑓(𝑥𝑥𝑖𝑖−2 )


𝑓𝑓 ′′ (𝑥𝑥𝑖𝑖 ) = + 𝑂𝑂(ℎ)
ℎ2

Fazendo um desenvolvimento similar para a Centered Difference, obtém-se

𝑓𝑓�𝑥𝑥𝑖𝑖+1 �−𝑓𝑓�𝑥𝑥𝑖𝑖 � 𝑓𝑓�𝑥𝑥𝑖𝑖 �−𝑓𝑓�𝑥𝑥𝑖𝑖−1 �


𝑓𝑓(𝑥𝑥𝑖𝑖+1 )−2𝑓𝑓(𝑥𝑥𝑖𝑖 )+𝑓𝑓(𝑥𝑥𝑖𝑖−1) −
ℎ ℎ
𝑓𝑓 ′′ (
𝑥𝑥𝑖𝑖 ) = +𝑂𝑂(ℎ 2)
⇒ 𝑓𝑓 ′′ (
𝑥𝑥𝑖𝑖 ) ≅
ℎ2 ℎ

ou seja, a estimativa central da derivada 2ª é obtida por meio das estimativas para frente e para trás da 1ª derivada,
como a derivada das derivadas.

Erro numérico total

O erro numérico total é a soma dos erros de truncamento e arredondamento. Em geral, a única maneira de
minimizar os erros de arredondamento é aumentar o número de algarismos significativos do computador. Por outro
lado mostrou-se que o erro de truncamento pode ser reduzido diminuindo o tamanho do passo. Uma diminuição no
tamanho do passo pode levar a problemas de arredondamento enquanto que os erros de truncamento diminuem.
O desafio é determinar o tamanho apropriado do passo para um cálculo específico. Deveríamos escolher um
tamanho de passo “grande” o suficiente para diminuir a quantidade de cálculos por causa dos erros de
arredondamento, mas sem incorrer em um grande erro de truncamento.
Ao usar o MATLAB, os erros de arredondamento são relativamente incomuns por causa da precisão de 15 a
16 dígitos, mas vamos analisar como fica o erro total quando calculamos a diferenciação numérica por meio de
diferenças finitas central. Considere então novamente a expansão por série de Taylor obtida para a primeira derivada

𝑓𝑓 (𝑥𝑥𝑖𝑖+1 )−𝑓𝑓(𝑥𝑥𝑖𝑖−1 ) 𝑓𝑓 (3) (𝜉𝜉 )


𝑓𝑓 ′(𝑥𝑥𝑖𝑖 ) = − ℎ2
2ℎ 6

Em verde temos o valor exato da primeira derivada. Em azul temos a aproximação da primeira derivada por
por meio de diferenças finitas. Em amarelo aparece o erro de truncamento. Ou seja, nesta expressão não aparece o
erro de arredondamento. Contudo, os computadores sempre incluem erros de arredondamento e podemos escrever
então
𝑓𝑓 (𝑥𝑥𝑖𝑖−1 ) = 𝑓𝑓̃(𝑥𝑥𝑖𝑖−1 ) + 𝑒𝑒𝑖𝑖−1
𝑓𝑓 (𝑥𝑥𝑖𝑖+1 ) = 𝑓𝑓̃(𝑥𝑥𝑖𝑖+1 ) + 𝑒𝑒𝑖𝑖+1

Em que 𝑒𝑒𝑖𝑖−1 e 𝑒𝑒𝑖𝑖+1 são os erros de arredondamento associados. Substituindo na expansão por série de Taylor obtida
para a primeira derivada, resulta

𝑓𝑓̃ (𝑥𝑥𝑖𝑖+1)−𝑓𝑓̃(𝑥𝑥𝑖𝑖−1) 𝑓𝑓(3) (𝜉𝜉 ) 𝑒𝑒(𝑖𝑖+1)−𝑒𝑒(𝑖𝑖−1)


𝑓𝑓 ′(𝑥𝑥𝑖𝑖 ) = − ℎ2 +
2ℎ 6 2ℎ

Sendo que em magenta aparece o erro arredondamento associado.


Pode-se ver que o erro total da aproximação de diferença finita consiste em um erro de arredondamento que
diminui com o aumento do passo e um erro de truncamento que aumenta com o aumento do passo.
Supondo que o valor absoluto de cada componente do erro de arredondamento tenha um limite superior de
ε, o valor máximo possível da diferença e(𝑖𝑖 + 1) − e(𝑖𝑖 − 1) será 2ε. Além disso, suponha que a terceira derivada 𝑓𝑓 (3) (𝜉𝜉)
possua um valor absoluto máximo de M.
Dessa forma, um limite superior (upper bound) do valor absoluto do erro total pode, portanto, ser
representado como
𝑓𝑓̃ (𝑥𝑥𝑖𝑖+1)−𝑓𝑓̃(𝑥𝑥𝑖𝑖−1) ℎ2 𝑀𝑀 𝜀𝜀
Erro Total = � 𝑓𝑓′ (𝑥𝑥𝑖𝑖 ) − � ≤ +ℎ
2ℎ 6

Diferenciando a equação anterior em relação a ℎ e igualando a zero, obtém-se seu valor ótimo

syms ub(h) E M
ub(h) = h^2*M/6 + E/h
diff( ub(h) )
respt = solve( diff(ub(h)) == 0, h )

3 3𝜀𝜀
ℎ𝑜𝑜𝑜𝑜𝑜𝑜 = �
𝑀𝑀

Exemplo. Retome a aproximação da primeira derivada 𝑓𝑓 ′ (𝑥𝑥) da função 𝑓𝑓(𝑥𝑥) por meio da aproximação central e calcule
𝑓𝑓 ′ (𝑥𝑥 = 0,5) com o auxílio do MATLAB. Comece usando um passo ℎ = 1 e vá dividindo esse passo por 10 e avalie o
erro total. Como a função 𝑓𝑓(𝑥𝑥) é um polinômio, sua derivada 𝑓𝑓 ′ (𝑥𝑥) pode ser calculada de forma exata permitindo
avaliar corretamente o erro total

𝑓𝑓(𝑥𝑥) = −0,1𝑥𝑥 4 − 0,15𝑥𝑥 3 − 0,5𝑥𝑥 2 − 0,25𝑥𝑥 + 1,2

function diffex_fun( func, dfunc, x, n )

% func = função f(x) a ser diferenciada


% dfunc = derivada exata f'(x)
% x = ponto onde é avaliada

format long
dftrue=dfunc(x); % f'(x) verdadeiro
h=1; % passo inicial
H(1)=h;
D(1)=(func(x+h)-func(x-h))/(2*h); % f'(x) aproximada
E(1)=abs(dftrue-D(1)); % módulo do erro total

for i=2:n % loop


h=h/10; % divide passo por 10
H(i)=h;
D(i)=(func(x+h)-func(x-h))/(2*h); % f'(x) aproximada
E(i)=abs(dftrue-D(i)); % módulo do erro total
end

L=[H' D' E']';


fprintf(' Passo Diferença finita Erro total\n');
fprintf('%14.10f %16.14f %16.13f\n',L);
loglog(H,E),xlabel('Passo'),ylabel('Erro')
title('Gráfico do Erro x Passo')
format short

Executando a função

ff= @(x) -0.1*x^4-0.15*x^3-0.5*x^2-0.25*x+1.2; % polinômio f(x)


df= @(x) -0.4*x^3-0.45*x^2-x-0.25; % polinômio f’(x)
diffex_fun(ff, df, 0.5, 11)
Passo Diferença finita Erro total
1.0000000000 -1.26250000000000 0.3500000000000
0.1000000000 -0.91600000000000 0.0035000000000
0.0100000000 -0.91253500000000 0.0000350000000
0.0010000000 -0.91250035000001 0.0000003500000
0.0001000000 -0.91250000349985 0.0000000034998
0.0000100000 -0.91250000003318 0.0000000000332
0.0000010000 -0.91250000000542 0.0000000000054
0.0000001000 -0.91249999945031 0.0000000005497
0.0000000100 -0.91250000333609 0.0000000033361
0.0000000010 -0.91250001998944 0.0000000199894
0.0000000001 -0.91250007550059 0.0000000755006

Observando a figura, os resultados são os esperados. No início, o arredondamento é mínimo e as estimativas


são dominadas pelo erro de truncamento que diminui de 100 vezes cada vez que o passo diminui de 10 vezes. A partir
de h = 0,0001, nota-se que o erro de arredondamento começa a superar o erro de truncamento. O valor ótimo do é
então h = 0,0001.

Como essa função é facilmente diferenciável, também podemos investigar se esses resultados são
consistentes com a expressão de ℎ𝑜𝑜𝑜𝑜t. Primeiro, podemos estimar 𝑀𝑀 avaliando a função 𝑓𝑓 (3) (𝜉𝜉) para um valor de 𝜉𝜉
no ponto 𝑥𝑥 de cálculo da derivada.

𝑀𝑀 = �𝑓𝑓 (3) (0.5)� = | −2,4(0,5) − 0,9 | = 2,1

Como o MATLAB possui uma precisão de cerca de 15 a 16 dígitos na base 10, uma estimativa aproximada do
limite superior no arredondamento seria de cerca de 𝜀𝜀 = 0.5 × 10−16 . Substituindo esses valores na equação do ℎ𝑜𝑜𝑜𝑜t,
obtém-se

3 3(0,5 × 10−16 )
ℎ𝑜𝑜𝑜𝑜𝑜𝑜 = � = 4,3 . 10−6
2,1

que é um valor da mesma magnitude que percebido com a execução do programa em MATLAB.

Uma função anônima do MATLAB é uma função que não é armazenada em um arquivo de programa, mas está associada a uma variável. As
funções anônimas podem aceitar várias entradas e retornar uma saída. Eles podem conter apenas uma única instrução executável. Consulte:

https://www.mathworks.com/help/matlab/matlab_prog/anonymous-functions.html

A função fprintf grava uma variável num arquivo ou na tela com formatação pré-definida. Um operador de formatação começa com um sinal de
porcentagem % e termina com um caractere de conversão. Para mais detalhes consulte:

https://www.mathworks.com/help/matlab/ref/fprintf.html
Exercícios

1. Determine as aproximações da primeira derivada da função 𝑓𝑓(𝑥𝑥) para frente e para trás e calcule seu erro de
truncamento 𝑂𝑂(ℎ1 ). Determina também a aproximação central e calcule seu erro de truncamento 𝑂𝑂(ℎ2 ). Como a
função 𝑓𝑓(𝑥𝑥) é um polinômio, sua derivada 𝑓𝑓 ′ (𝑥𝑥) pode ser calculada de forma exata e permite avaliar corretamente
os erros de truncamento |𝜀𝜀𝑡𝑡 |. Calcule 𝑓𝑓(𝑥𝑥 = 5) e use ℎ = 0,5 e ℎ = 0,25. [exemplo 4.4 pág. 113]

𝑓𝑓(𝑥𝑥) = −0,1𝑥𝑥 4 − 0,15𝑥𝑥 3 − 0,5𝑥𝑥 2 − 0,25𝑥𝑥 + 1,2

2. Considere a função 𝑓𝑓(𝑥𝑥) no intervalo [-2, 2] com h = 0,25. Use as aproximações de diferenças finitas para frente,
para trás e centralizada para a primeira e a segunda derivadas, a fim de ilustrar graficamente qual aproximação é mais
precisa. Faça um gráfico das três aproximações de diferenças finitas da primeira derivada, juntamente com as teóricas,
e faça o mesmo para a segunda derivada. [exercício 4.20 pág. 122]

𝑓𝑓(𝑥𝑥) = 𝑥𝑥 3 − 2𝑥𝑥 + 4

Você também pode gostar