Desenvolva um código que permita localizar o mínimo da função . Considere um intervalo de [-5, 5] e use diferenciação numérica.
Passo 1
A questão pede para localizarmos o mínimo de uma função usando diferenciação numérica.
Para encontrarmos o mínimo de uma função, temos que relembrar o conteúdo de derivadas de Cálculo 1.
No ponto mínimo de uma função, a primeira derivada é zero. É um ponto onde a tangente é representada por uma linha horizontal.
Entretanto, pontos máximos de função também tem a primeira derivada igual a zero. Para confirmar se um ponto onde a primeira derivada é igual a 0 é um ponto de mínimo ou máximo, devemos calcular a segunda derivada neste ponto. Se a derivada segunda for positiva, o ponto é um local de mínimo.
Logo, para este exercício, vamos determinar a primeira e a segunda derivadas de , por meio de diferenciação numérica, para indo de -5 a 5. Em seguida, vamos achar o valor de em que a primeira derivada é nula, e o chamaremos de . Então, vamos calcular a segunda derivada em , para ver se resulta em um valor positivo ou negativo e termos certez que se trata de um ponto mínimo.
Ao final, para termos as coordenadas do ponto mínimo, substituímos em e encontramos .
Passo 2
Primeiramente, vamos criar dois vetores, um representando o intervalo de pedido no enunciado e outro com a função , calculada para cada elemento do vetor .
Crie um script novo no MATLAB e digite as duas linhas de código:
Na primeira linha, foi criado um vetor x que vai de -5 a 5, a um passo de 0,01. Eu escolhi este passo para ter um pouco mais de precisão no resultado, mas você pode escolher o passo que quiser.
Na segunda linha, calculamos a função para cada elemento do vetor , por isso temos o ponto ao lado de . Por exemplo, o comando elevada cada elemento de ao quadrado. O resultado é armazenado no vetor , que tem o mesmo comprimento de .
Passo 3
Depois de criarmos os vetores e , podemos determinar as derivadas primeira e segunda de Vamos começar com a a derivada primeira. Para encontrarmos por diferenciação numérica, temos que gerar dois vetores, um representando e outro representando . O vetor teria a diferença de de um valor de a outro e o vetor teria a diferença entre um valor de e outro.
Estes vetores são gerados por meio da função , que tem a seguinte estrutura:
Ela calcula vezes a diferença entre os elementos adjacentes do vetor e nos dá o resultado na forma do vetor .
Os dois vetores são gerados por meio das seguintes linhas de código:
Na primeira linha, é criado o vetor , que contém as diferenças entre elementos adjacentes do vetor . Para criar o vetor , a funçao faz um elemento de menos o elemento à esquerda, começando a partir do segundo elemento de .
Na segunda linha, é feita a mesma coisa, mas com o vetor . A variação de é armazenada no vetor .
Note que não entramos nenhum valor para , porque queremos que a diferença seja feita uma vez. Quando não entramos com nenhum valor para na função , por o padrão o MATLAB adota .
Passo 4
Com os vetores e criados, podemos calcular por meio da linha de código:
Com este comando, dividimos cada elemento do vetor pelo elemento do vetor que esteja na mesma posição e o resultado é armazenado no vetor .
O vetor representa a derivada primeira de obtida por meio de diferenciação numérica. Com o vetor , podemos calcular a derivada segunda .
Passo 5
Após determinarmos a primeira derivada, vamos calcular a segunda derivada de , por meio de diferenciação numérica. Assim como fizemos para a primeira derivada no passo 3, para determinar , precisamos construir dois vetores, um representando e outro representando , e dividir um pelo outro.
Para isto, usamos a função de novo. No MATLAB, digite a linha de código:
Com este comando, aplicamos a função no vetor , que representa , e armazenamos o resultado no vetor . Calculando a diferença entre os elementos adjacentes de , é como se estivéssemos calculando a derivada de , que é consequentemente .
Para criar o vetor , vamos criar um vetor auxiliar chamado , com tamanho compatível ao vetor :
A linha de código acima diz que o vetor é um pedaço do vetor , começando do segundo elemento de e indo até o final de (indicando por ). Precisamos criá-lo pois o vetor tem um elemento a menos que o vetor e para calcular , precisamos que os vetores e tenham o mesmo comprimento.
Para criar o vetor , digite a linha de código:
O vetor contém a diferença entre os elementos adjacentes de e representa o vetor
Passo 6
Com os vetores e criados, podemos calcular por meio da linha de código:
Com este comando, dividimos cada elemento do vetor pelo elemento do vetor que esteja na mesma posição e o resultado é armazenado no vetor .
O vetor representa a derivada segunda de obtida por meio de diferenciação numérica.
A partir de e , podemos encontrar o ponto mínimo de .
Passo 7
Em um ponto de mínimo, . Por isso, temos que encontrar o elemento do vetor que seja igual a 0 e sua posição, e ver qual elemento do vetor está na mesma posição. Este elemento de será a coordenada do ponto mínimo da função, isto é, .
Vale destacar que usamos o vetor e não o vetor . Se usarmos o vetor para encontrar , não estará exatamente na mesma posição do elemento nulo de , pois o vetor tem um elemento a mais do que .
Contudo, como calculamos por diferenciação numérica, dificilmente o vetor terá um elemento exatamente igual a 0. Por isto, devemos encontrar o elemento de que seja o mais próximo possível de 0. Para encontrarmos este valor, usaremos a função do MATLAB, que tem a seguinte estrutura:
Na função , entramos com um vetor e ela nos retorna o menor elemento de , representado por , e a posição onde ele se encontra em , representado por .
Para encontrar o elemento mais próximo de 0 em dydx, entre com a linha de código:
Com o comando dentro da função criamos um vetor que contém o valor absoluto da diferença entre 0 e cada elemento de . Em seguida, a função vai procurar o menor elemento deste vetor resultante e vai armazenar seu valor na variável e sua posição na variável .
A posição do menor elemento do vetor nos indica a posição do elemento de que é mais próxima de 0 e a posição de no vetor .
Passo 8
Vamos verificar se o elemento de dydx na posição indice realmente está próximo de 0? Para isto, entre com o comando:
Este comando armazena na variável o elemento de que se encontra na posição indice.
Para encontrar , digite a linha de código:
Com este comando, o elemento de na posição é armazenado na variável . é para ser a coordenada do ponto mínimo de .
Se você rodar o programa que temos até agora e pedir para ver e , você terá estes resultados:
O valor mais próximo de 0 de é -0,05 e .
Para nos certificarmos que é mesmo uma das coordenadas do ponto mínimo, vamos ver o valor da segunda derivada no vetor que se encontra na mesma posição de . Contudo, como tem um elemento a menos do e , não podemos usar diretamente o valor de . Temos que subtrair 1 de para encontrar o valor que queremos:
Nesta linha de código, o elemento do vetor que se encontra na posição é armazenado em .
Para que seja a coordenada de um ponto de mínimo, deve ser positivo. Rodando o programa de novo e pedindo pra ver , temos:
Como é positivo, realmente é uma das coordenadas do ponto mínimo.
Passo 9
Para encontrar a coordenada em do ponto mínimo, substituímos na função com a seguinte linha de código:
O resultado é armazenado em e representa a coordenada em do ponto mínimo. Rodando o programa novamente e imprimino , temos:
Resposta
O ponto mínimo de é