Exercícios Resolvidos de Derivadas Numéricas

Ver Teoria

Enunciado

Usando os dados da tabela a seguir, estime f ' ( 0,6 ) e f ’ ’ ( 0,6 )

Passo 1

A questão nos pede para estimar a primeira e a segunda derivadas de f ( x ) em x = 0,6 , a partir dos dados da tabela.

Para resolvermos o exercício, geraremos um gráfico com três curvas, uma representando f ( x ) , outra representando f ' ( x ) e outra representando f ' ' ( x ) , com x indo de 0,2 a 1 . Faremos a estimativa de f ' ( 0,6 ) e f ’ ’ ( 0,6 ) a partir do gráfico, procurando o ponto nas curvas de f ' ( x ) e f ' ' ( x ) que tenha como coordenada x = 0,6 .

Para gerarmos as curvas com função p l o t ( ) , precisamos calcular as derivadas de f ( x ) a partir da tabela, usando diferenciação numérica. Para isso, usaremos a função d i f f ( ) do MATLAB. Lembrando que ela tem a estrutura:

Y   =   d i f f ( X ,   n )

Ela calcula n   vezes a diferença entre os elementos adjacentes do vetor X e nos dá o resultado na forma do vetor Y .

Para encontrarmos a derivada primeira, o vetor X   de entrada de d i f f ( ) será a função f ( x ) . Para a derivada segunda, o vetor X será f ' ( x ) .

Passo 2

Primeiramente, crie um script novo no MATLAB e entre com os dados da tabela:

O vetor x contém a primeira linha da tabela e o vetor f , a segunda linha. Desta forma, o par de vetores x e f representa f ( x ) .

Depois de criarmos os vetores x e f , podemos determinar as derivadas primeira e segunda de f ( x ) . Vamos começar com a a derivada primeira. Para encontrarmos f ' x = d f d x por diferenciação numérica, temos que gerar dois vetores, um representando d f e outro representando d x . O vetor d f teria a diferença de f ( x ) de um valor de x a outro e o vetor d x teria a diferença entre um valor de x e outro.

Estes vetores são gerados por meio da função d i f f ( ) , que tem a estrutura:

Y   =   d i f f ( X ,   n )

Ela calcula n   vezes a diferença entre os elementos adjacentes do vetor X e nos dá o resultado na forma do vetor Y . Como queremos que a diferença seja feita somente uma vez neste exercício, tanto para calcular a derivada primeira quanto a segunda, não precisamos entrar com nenhum valor para n na função d i f f ( ) , pois por padrão o MATLAB adota n = 1 quando a entrada n não é especificada.

Os dois vetores são gerados por meio das seguintes linhas de código:

Na primeira linha, é criado o vetor d x , que contém as diferenças entre elementos adjacentes do vetor x . Para criar o vetor d x , a funçao d i f f ( ) faz um elemento de x menos o elemento à esquerda, começando a partir do segundo elemento de x .

Na segunda linha, é feita a mesma coisa, mas com o vetor f . A variação de f é armazenada no vetor d f .

Com os vetores d x e d f criados, podemos calcular d f d x por meio da linha de código:

Com este comando, dividimos cada elemento do vetor d f pelo elemento do vetor d x que esteja na mesma posição e o resultado é armazenado no vetor d f d x .

O vetor d f d x representa a derivada primeira de f ( x ) obtida por meio de diferenciação numérica. Com o vetor d f d x , podemos gerar o gráfico de f ' ( x ) .

Passo 3

Após determinarmos f ' ( x ) , podemos calcular f ' ' ( x ) , por meio de diferenciação numérica. Assim como fizemos para a primeira derivada no passo 2, para determinar f ' ' x = d 2 f d x 2 , precisamos construir dois vetores, um representando d 2 f e outro representando d x 2 , e dividir um pelo outro.

Para isto, usamos a função d i f f ( ) de novo. No MATLAB, digite a linha de código:

Com este comando, aplicamos a função d i f f ( ) no vetor d f d x , que representa f ' x = d f d x , e armazenamos o resultado no vetor d 2 f . Calculando a diferença entre os elementos adjacentes de d f d x é como se estivéssemos calculando a derivada de f ' ( x ) , que é consequentemente f ' ' ( x ) .

d 2 f é o nosso vetor representando d 2 f . Para criar o vetor d x 2 , vamos criar um vetor auxiliar chamado x d , com tamanho compatível ao vetor d f d x :

A linha de código acima diz que o vetor x d é um pedaço do vetor x , começando do segundo elemento de x e indo até o final de x (indicando por e n d ). Precisamos criá-lo pois o vetor d f d x tem um elemento a menos que o vetor x e para calcular d 2 f d x 2 , precisamos que os vetores d 2 f e d x 2 tenham o mesmo comprimento.

Para criar o vetor d x 2 , digite a linha de código:

O vetor d x 2 contém a diferença entre os elementos adjacentes de x d e representa o vetor d x 2 .

Com os vetores d x 2 e d 2 f criados, podemos calcular f ' ' x = d ² f d x ² por meio da linha de código:

Com este comando, dividimos cada elemento do vetor d 2 f pelo elemento do vetor d x 2 que esteja na mesma posição e o resultado é armazenado no vetor d 2 f d x 2 .

O vetor d 2 f d x 2 representa f ' ' ( x ) obtido por meio de diferenciação numérica. Com o vetor d 2 f d x 2 , podemos gerar o gráfico de f ' ' ( x ) .

Passo 4

Antes de gerar o gráfico de f ( x ) , f ' ( x ) e de f ' ' ( x ) , precisamos criar um vetor auxiliar para podermos plotar f ' ' ( x ) em função de x .

Precisamos criar esse vetor auxiliar porque o vetor d 2 f d x 2 tem dois elementos a menos do que x , já que ele na prática foi criado usando a função d i f f ( ) duas vezes seguidas. Vetores de tamanhos diferentes dão um erro na função p l o t ( ) .

Vamos chamar o vetor auxiliar de f ’ ’ ( x ) de x d 2 e criá-lo com a linha de código:

Este comando diz que o vetor x d 2 é um pedaço do vetor x , começando do terceiro elemento de x e indo até o final de x .

Note que, para plotar f ' ( x ) em função de x , podemos aproveitar o vetor x d do passo 3, já que x d tem o mesmo comprimento de   d f d x .

Para plotar f ( x ) , f ' ( x ) e f ' ' ( x ) na mesma janela, digite as três linhas de código abaixo:

Na primeira linha, pedimos ao MATLAB para plotar f em função de x , d f d x em função de x d e d 2 f d x 2 em função de x d 2 .

Na segunda linha, damos um nome ao eixo x do gráfico: chamamos ele de x .

Na terceira linha, criamos uma legenda para o gráfico. A string ‘ f ( x ) ’ é a legenda da curva gerada pelo primeiro par de vetores, x e f , da função p l o t ( ) . Já a string ‘ d f / d x ’ é a legenda da curva gerada pelo segundo par de vetores, x d e d f d x , da função p l o t ( ) . Finalmente, a string ‘ d ^ 2 f / d x ^ 2 ’ se refere ao terceito par de vetores da função p l o t ( ) , x d 2 e d 2 f d x 2 .

Rode o programa para ver o gráfico:

A curva azul representa f ( x ) , a curva vermelha é f ’ ( x ) e a curva amarela, f ’ ’ ( x ) . Para estimar f ' ( 0,6 ) e f ’ ’ ( 0,6 ) , clique sobre as curvas vermelha e amarela, respectivamente, e procure o ponto com coordenada X = 0,6 nas duas curvas (como no print acima). A coordenada Y desses pontos são a estimativa de f ' ( 0,6 ) e f ’ ’ ( 0,6 ) .

Resposta

f ' 0,6 = 53,85

f ’ ’ 0,6 = 191,8